diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..99eb693
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+
+# Jekyll Files #
+################
+_site
+
+
+# Random Files #
+################
+*.swp
+*~
+*.log
+
+
+# Private Test Data #
+#####################
+*REALDATA*
+
+
+# OS generated files #
+######################
+.DS_Store*
+ehthumbs.db
+Icon?
+Thumbs.db
+#  nodejs packages   #
+######################
+node_modules
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..66d7029
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,3 @@
+{
+    "asi": true
+}
diff --git a/GruntFile.js b/GruntFile.js
new file mode 100644
index 0000000..7bc32ea
--- /dev/null
+++ b/GruntFile.js
@@ -0,0 +1,105 @@
+module.exports = function(grunt) {
+
+    //Project configuration.
+    grunt.initConfig({
+        pkg: grunt.file.readJSON('package.json'),
+        concat: {
+            options: {
+                separator: ''
+            },
+            dist: {
+                src: [
+                     'src/intro.js',
+                     'src/core.js',
+                     'src/interactiveLayer.js',
+                     'src/tooltip.js',
+                     'src/utils.js',
+                     'src/models/axis.js',
+                     'src/models/historicalBar.js',
+                     'src/models/bullet.js',
+                     'src/models/bulletChart.js',
+                     'src/models/cumulativeLineChart.js',
+                     'src/models/discreteBar.js',
+                     'src/models/discreteBarChart.js',
+                     'src/models/distribution.js',
+                     'src/models/historicalBar.js',
+                     'src/models/historicalBarChart.js',
+                     'src/models/indentedTree.js',
+                     'src/models/legend.js',
+                     'src/models/line.js',
+                     'src/models/lineChart.js',
+                     'src/models/linePlusBarChart.js',
+                     'src/models/lineWithFocusChart.js',
+                     'src/models/linePlusBarWithFocusChart.js',
+                     'src/models/multiBar.js',
+                     'src/models/multiBarChart.js',
+                     'src/models/multiBarHorizontal.js',
+                     'src/models/multiBarHorizontalChart.js',
+                     'src/models/multiChart.js',
+                     'src/models/ohlcBar.js',
+                     'src/models/pie.js',
+                     'src/models/pieChart.js',
+                     'src/models/scatter.js',
+                     'src/models/scatterChart.js',
+                     'src/models/scatterPlusLineChart.js',
+                     'src/models/sparkline.js',
+                     'src/models/sparklinePlus.js',
+                     'src/models/stackedArea.js',
+                     'src/models/stackedAreaChart.js',
+                     'src/outro.js'                     ],
+                dest: 'nv.d3.js'
+            }
+        },
+        uglify: {
+            options: {
+                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
+                    '<%= grunt.template.today("yyyy-mm-dd") %> */'
+            },
+            js: {
+                files: {
+                    'nv.d3.min.js': ['nv.d3.js']
+                }
+            }
+        },
+        jshint: {
+            foo: {
+                src: "src/**/*.js"
+            },
+            options: {
+                jshintrc: '.jshintrc'
+            }
+        },
+        watch: {
+            js: {
+                files: ["src/**/*.js"],
+                tasks: ['concat']
+            }
+        },
+        copy: {
+          css: {
+            files: [
+              { src: 'src/nv.d3.css', dest: 'nv.d3.css' }
+            ]
+          }
+        },
+        cssmin: {
+          dist: {
+            files: {
+              'nv.d3.min.css' : ['nv.d3.css']
+            }
+          }
+        }
+    });
+
+    grunt.loadNpmTasks('grunt-contrib-watch');
+    grunt.loadNpmTasks('grunt-contrib-concat');
+    grunt.loadNpmTasks('grunt-contrib-jshint');
+    grunt.loadNpmTasks('grunt-contrib-uglify');
+    grunt.loadNpmTasks('grunt-contrib-copy');
+    grunt.loadNpmTasks('grunt-contrib-cssmin');
+
+    grunt.registerTask('default', ['concat', 'copy']);
+    grunt.registerTask('production', ['concat', 'uglify', 'copy', 'cssmin']);
+    grunt.registerTask('release', ['production']);
+    grunt.registerTask('lint', ['jshint']);
+};
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..82bfea0
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,49 @@
+
+##nvd3.js License
+
+Copyright (c) 2011, 2012 [Novus Partners, Inc.][novus]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+[novus]: https://www.novus.com/
+
+
+
+##d3.js License
+
+Copyright (c) 2012, Michael Bostock
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* The name Michael Bostock may not be used to endorse or promote products
+  derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..8b7a85e
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,12 @@
+iname: "nv.d3"
+description:
+    "A reusable chart library for d3.js!"
+third_party {
+  url {
+    type: GIT
+    value: "https://github.com/novus/nvd3"
+  }
+  version: 1.1.15b
+  last_upgrade_date { year: 2013 month: 12 day: 18 }
+  license_type: NOTICE
+}
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a234fed
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,72 @@
+JS_FILES = \
+	src/intro.js \
+	src/core.js \
+	src/interactiveLayer.js \
+	src/tooltip.js \
+	src/utils.js \
+	src/models/axis.js \
+	src/models/bullet.js \
+	src/models/bulletChart.js \
+	src/models/cumulativeLineChart.js \
+	src/models/discreteBar.js \
+	src/models/discreteBarChart.js \
+	src/models/distribution.js \
+	src/models/historicalBar.js \
+	src/models/historicalBarChart.js \
+	src/models/indentedTree.js \
+	src/models/legend.js \
+	src/models/line.js \
+	src/models/lineChart.js \
+	src/models/linePlusBarChart.js \
+	src/models/lineWithFocusChart.js \
+	src/models/linePlusBarWithFocusChart.js \
+	src/models/multiBar.js \
+	src/models/multiBarChart.js \
+	src/models/multiBarHorizontal.js \
+	src/models/multiBarHorizontalChart.js \
+	src/models/multiChart.js \
+	src/models/ohlcBar.js \
+	src/models/pie.js \
+	src/models/pieChart.js \
+	src/models/scatter.js \
+	src/models/scatterChart.js \
+	src/models/scatterPlusLineChart.js \
+	src/models/sparkline.js \
+	src/models/sparklinePlus.js \
+	src/models/stackedArea.js \
+	src/models/stackedAreaChart.js \
+	src/outro.js
+CSS_FILES = \
+	src/nv.d3.css
+
+JS_COMPILER = \
+	uglifyjs
+
+CSS_COMPILER = \
+	cssmin
+
+all: nv.d3.js nv.d3.min.js nv.d3.css nv.d3.min.css
+nv.d3.js: $(JS_FILES)
+nv.d3.min.js: $(JS_FILES)
+nv.d3.css: $(CSS_FILES)
+nv.d3.min.css: $(CSS_FILES)
+
+nv.d3.js: Makefile
+	rm -f $@
+	cat $(filter %.js,$^) >> $@
+
+nv.d3.css: Makefile
+	rm -f $@
+	cat $(filter %.css,$^) >> $@
+
+%.min.js:: Makefile
+	rm -f $@
+	$(JS_COMPILER) nv.d3.js >> $@
+
+%.min.css:: Makefile
+	rm -f $@
+	$(CSS_COMPILER) nv.d3.css >> $@
+
+
+clean:
+	rm -rf nv.d3*.js nv.d3*.css
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..293de3e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,87 @@
+# NVD3 - v1.1.15-beta
+## Release notes for version 1.1.15 beta
+* Various fixes across the board
+
+## Overview
+A reusable chart library for d3.js.
+
+NVD3 may change from its current state, but will always try to follow the style of d3.js.
+
+You can also check out the [examples page](http://nvd3.org/ghpages/examples.html).
+**Note:** The examples on nvd3.org are outdated.  For examples on how to use the latest NVD3, please checkout the **examples/** directory in the repository.
+
+---
+
+# Current development focus
+
+- Getting documentation up.
+- Unifying common API functions between charts.
+- Bug fixes that come up.
+
+---
+
+# Installation Instructions
+
+`d3.v3.js` is a dependency of `nv.d3.js`. Be sure to include in in your project, then:
+Add a script tag to include `nv.d3.js` OR `nv.d3.min.js` in your project.
+Also add a link to the `nv.d3.css` file.
+
+See wiki -> Documentation for more detail
+
+---
+
+If one of [the existing models](https://github.com/novus/nvd3/tree/master/src/models) doesn't meet your needs, fork the project, implement the model and an example using it, send us a pull request, for consideration for inclusion in the project.
+
+We cannot honor all pull requests, but we will review all of them.
+
+Please do not aggregate pull requests. Aggregated pull requests are actually more difficult to review.
+
+We are currently changing our branch structure so that master will be gauranteed stable. In addition, there is now a "development" branch. This branch reflects the latest changes to NVD3 and is not necessarily stable.
+
+---
+
+## Minifying your fork:
+
+### Using Make
+The Makefile requires [UglifyJS](https://github.com/mishoo/UglifyJS) and [CSSMin](https://github.com/jbleuzen/node-cssmin)
+
+The easiest way to install UglifyJS and CSSMin is via npm. Run `npm install -g uglify-js cssmin`. After installing verify the setup by running `uglifyjs --version` and `cssmin --help`.
+
+Once you have the `uglifyjs` and `cssmin` commands available, running `make` from your
+fork's root directory will rebuild both `nv.d3.js` and `nv.d3.min.js`.
+
+    make # build nv.d3.js and nv.d3.css and minify
+    make nv.d3.js # Build nv.d3.js
+    make nv.d3.min.js # Minify nv.d3.js into nv.d3.min.js
+    make nv.d3.css # Build nv.d3.css
+    make nv.d3.min.css # Minify nv.d3.css into nv.d3.min.css
+    make clean # Delete nv.d3.*js and nv.d3.*css
+
+
+*Without UglifyJS of CSSMin, you won't get the minified versions when running make.**
+
+### Using Grunt
+
+You can use grunt instead of makefile to build js file. See more about [grunt](http://gruntjs.com/).
+***[Nodejs](http://nodejs.org/) must be installed before you can use grunt.***
+Run `npm install` in root dir to install grunt and it's dependencies.
+
+Then, you can use these commands:
+
+    grunt # build nv.d3.js
+    grunt production # build nv.d3.js and nv.d3.min.js
+    grunt watch # watch file changes in src/, and rebuild nv.d3.js, it's very helpful when delevop NVD3
+    grunt lint # run jshint on src/**/*.js
+
+**We ask that you DO NOT minify pull requests...
+If you need to minify please build pull request in separate branch, and
+merge and minify in your master.
+
+## Supported Browsers
+NVD3 runs best on WebKit based browsers.
+
+* **Google Chrome: latest version (preferred)**
+* **Opera 15+ (preferred)**
+* Safari: latest version
+* Firefox: latest version
+* Internet Explorer: 9 and 10
diff --git a/bower.json b/bower.json
new file mode 100644
index 0000000..c7973be
--- /dev/null
+++ b/bower.json
@@ -0,0 +1,35 @@
+{
+  "name": "nvd3",
+  "version": "1.1.14-beta",
+  "homepage": "http://www.nvd3.org",
+  "authors": [
+    "Bob Monteverde",
+    "Tyler Wolf",
+    "Robin Hu",
+    "Frank Shao"
+  ],
+  "description": "Re-usable charts and chart components for d3.",
+  "main": ["nv.d3.js", "src/nv.d3.css"],
+  "keywords": [
+    "d3",
+    "visualization",
+    "svg",
+    "charts"
+  ],
+  "license": "Apache License, v2.0",
+  "dependencies": {
+    "d3": "~3.3.5"
+  },
+  "ignore" : [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests",
+    "src/models/*",
+    "src/*.js",
+    "lib",
+    "examples",
+    "deprecated"
+  ]
+}
diff --git a/build.bat b/build.bat
new file mode 100644
index 0000000..de98b5a
--- /dev/null
+++ b/build.bat
@@ -0,0 +1,6 @@
+@echo off
+copy src\intro.js /B + src\core.js /B + src\tooltip.js /B temp1.js /B
+copy src\models\*.js /B temp2.js /B
+copy temp1.js /B + temp2.js /B + src\outro.js /B nv.d3.js /B
+del temp1.js
+del temp2.js
diff --git a/deprecated/bar.html b/deprecated/bar.html
new file mode 100644
index 0000000..f25e177
--- /dev/null
+++ b/deprecated/bar.html
@@ -0,0 +1,198 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/bar.js"></script>
+<script> 
+
+  var testdata = [
+    { 
+      label: "One is a very long",
+      y: 5
+    },
+    { 
+      label: "Two is also very long",
+      y: 2
+    },
+    { 
+      label: "Three",
+      y: 9
+    },
+    { 
+      label: "Four",
+      y:  7
+    },
+    { 
+      label: "Five",
+      y: 4
+    },
+    {
+        label: "Six",
+        y: 3
+    }
+  ];
+
+
+  var testdata2 = [
+      {
+          label: "One is a very long",
+          y: 1
+      },
+      {
+          label: "Two is also very long",
+          y: 12
+      },
+      {
+          label: "Three",
+          y: -9
+      },
+      {
+          label: "Four",
+          y:  4
+      },
+      {
+          label: "Five",
+          y: 6
+      }
+  ];
+
+  var td = 0;
+  var a = (Math.random()*10)+1;
+  if (a > 5) td = 1;
+
+//Format A
+nv.addGraph({
+  generate: function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40;
+
+    var chart = nv.models.bar()
+        .width(width)
+        .height(height)
+        .labelField('label')
+        .dataField('y')
+        .showLabels(true)
+        .title("This is a sample chart title")
+         ;
+
+    if (td === 0) {
+      d3.select("#test1")
+        .attr('width', width)
+        .attr('height', height)
+        .datum(testdata)
+        .call(chart);
+    } else {
+        d3.select("#test1")
+                .attr('width', width)
+                .attr('height', height)
+                .datum(testdata2)
+                .call(chart);
+    }
+
+    return chart;
+  },
+  callback: function(graph) {
+
+      graph.dispatch.on('tooltipShow', function(e) {
+          var offsetElement = document.getElementById("chart"),
+                  left = e.pos[0],
+                  top = e.pos[1];
+
+          var content = '<h3>' + e.label + '</h3>' +
+                  '<p>' +
+                  e.value +
+                  '</p>';
+
+          nv.tooltip.show([left, top], content);
+      });
+
+      graph.dispatch.on('tooltipHide', function(e) {
+          nv.tooltip.cleanup();
+      });
+
+      graph.dispatch.on('elementClick', function(e) {
+          console.log("Bar Click",e);
+      });
+
+      graph.dispatch.on('chartClick', function(e) {
+          console.log("Chart Click",e);
+      });
+
+      graph.dispatch.on('chartClick', function(e) {
+          console.log('Click Switching to');
+          if (td === 0) {
+              d3.select("#test1")
+                      .datum(testdata2)
+                      .call(graph);
+              td = 1;
+
+          } else {
+              d3.select("#test1")
+                      .datum(testdata)
+                      .call(graph);
+              td = 0;
+          }
+      });
+
+
+      window.onresize = function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40;
+
+      d3.select("#test1")
+        .attr('width', width)
+        .attr('height', height)
+        .call(
+          graph
+            .width(width)
+            .height(height)
+        )
+    };
+  }
+});
+
+/*
+//Format B
+nv.addGraph(function() {
+    var selection = d3.select("body")
+        .datum(irwinHallDistribution(10000, 10));
+
+    var chart = nv.models.histogram()
+          .bins(d3.scale.linear().ticks(20))
+          .tickFormat(d3.format(".02f"));
+
+    chart(selection);
+
+    return chart;
+}, function(g) { console.log(g.width(), g.height()) })
+
+//Format C
+nv.addGraph(function() {
+  return nv.models.histogram()
+           .bins(d3.scale.linear().ticks(20))
+           .tickFormat(d3.format(".02f"))(
+             d3.select("body")
+              .datum(irwinHallDistribution(10000, 10))
+             );
+}, function(g) { console.log(g.width(), g.height()) })
+*/
+
+
+
+</script>
diff --git a/deprecated/bar.js b/deprecated/bar.js
new file mode 100644
index 0000000..3aa38e7
--- /dev/null
+++ b/deprecated/bar.js
@@ -0,0 +1,250 @@
+
+nv.models.bar = function() {
+  var margin = {top: 20, right: 10, bottom: 80, left: 60},
+      width = 960,
+      height = 500,
+      animate = 500,
+      label ='label',
+      rotatedLabel = true,
+      showLabels = true,
+      id = Math.floor(Math.random() * 10000), //Create semi-unique ID in case user doesn't select one
+      color = d3.scale.category20(),
+      field ='y',
+      title = '';
+
+  var x = d3.scale.ordinal(),
+      y = d3.scale.linear(),
+      xAxis = d3.svg.axis().scale(x).orient('bottom'),
+      yAxis = d3.svg.axis().scale(y).orient('left'),
+      dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'tooltipShow', 'tooltipHide');
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      x .domain(data.map(function(d,i) { return d[label]; }))
+        .rangeRoundBands([0, width - margin.left - margin.right], .1);
+
+
+      var min = d3.min(data, function(d) { return d[field] });
+      var max = d3.max(data, function(d) { return d[field] });
+      var x0 = Math.max(-min, max);
+      var x1 = -x0;
+
+      // If we have no negative values, then lets stack this with just positive bars
+      if (min >= 0) x1 = 0;
+
+      y .domain([x1, x0])
+        .range([height - margin.top - margin.bottom, 0])
+        .nice();
+
+      xAxis.ticks( width / 100 );
+      yAxis.ticks( height / 36 ).tickSize(-(width - margin.right - margin.left), 0);
+
+      var parent = d3.select(this)
+          .on("click", function(d,i) {
+            dispatch.chartClick({
+                data: d,
+                index: i,
+                pos: d3.event,
+                id: id
+            });
+          });
+
+
+      var wrap = parent.selectAll('g.wrap').data([data]);
+      var gEnter = wrap.enter();
+      gEnter.append("text")
+          .attr("class", "title")
+          .attr("dy", ".91em")
+          .attr("text-anchor", "start")
+          .text(title);
+      gEnter = gEnter.append('g').attr('class', 'nvd3 wrap').attr('id','wrap-'+id).append('g');
+
+
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'bars');
+
+
+      wrap.attr('width', width)
+          .attr('height', height);
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var bars = wrap.select('.bars').selectAll('.bar')
+          .data(function(d) { return d; });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('svg:rect')
+          .attr('class', function(d) { return d[field] < 0 ? "bar negative" : "bar positive"})
+          .attr("fill", function(d, i) { return color(i); })
+          .attr('x', 0 )
+          .on('mouseover', function(d,i){
+            d3.select(this).classed('hover', true);
+            dispatch.tooltipShow({
+                label: d[label],
+                value: d[field],
+                data: d,
+                index: i,
+                // TODO: Calculate the center to the bar
+                pos: [d3.event.pageX, d3.event.pageY],
+                id: id
+            });
+
+          })
+          .on('mouseout', function(d,i){
+                d3.select(this).classed('hover', false);
+                dispatch.tooltipHide({
+                    label: d[label],
+                    value: d[field],
+                    data: d,
+                    index: i,
+                    id: id
+                });
+          })
+          .on('click', function(d,i) {
+                dispatch.elementClick({
+                    label: d[label],
+                    value: d[field],
+                    data: d,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+              d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+              dispatch.elementDblClick({
+                  label: d[label],
+                  value: d[field],
+                  data: d,
+                  index: i,
+                  pos: d3.event,
+                  id: id
+              });
+              d3.event.stopPropagation();
+          });
+
+
+      bars
+          .attr('class', function(d) { return d[field] < 0 ? "bar negative" : "bar positive"})
+          .attr('transform', function(d,i) { return 'translate(' + x(d[label]) + ',0)'; })
+          .attr('width', x.rangeBand )
+          .order()
+          .transition()
+          .duration(animate)
+          .attr('y', function(d) {  return y(Math.max(0, d[field])); })
+          .attr('height', function(d) { return Math.abs(y(d[field]) - y(0));  });
+
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')')
+          .call(xAxis);
+
+
+      if (rotatedLabel) {
+        g.select('.x.axis').selectAll('text').attr('text-anchor','start').attr("transform", function(d) {
+          return "rotate(35)translate(" + this.getBBox().height/2 + "," + '0' + ")";
+        });
+      }
+      if (!showLabels) {
+        g.select('.x.axis').selectAll('text').attr('fill', 'rgba(0,0,0,0)');
+        g.select('.x.axis').selectAll('line').attr('style', 'opacity: 0');
+      }
+      /*else {
+        g.select('.x.axis').selectAll('text').attr('fill', 'rgba(0,0,0,1)');
+        g.select('.x.axis').selectAll('line').attr('style', 'opacity: 1');
+      }*/
+
+
+
+      g.select('.y.axis')
+        .call(yAxis);
+    });
+
+    return chart;
+  }
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    if (margin.left + margin.right + 20 > _)
+      width = margin.left + margin.right + 20; // Min width
+    else
+      width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    if (margin.top + margin.bottom + 20 > _)
+      height = margin.top + margin.bottom + 20; // Min height
+    else
+      height = _;
+    return chart;
+  };
+
+  chart.animate = function(_) {
+    if (!arguments.length) return animate;
+    animate = _;
+    return chart;
+  };
+
+  chart.labelField = function(_) {
+    if (!arguments.length) return (label);
+      label = _;
+      return chart;
+  };
+
+  chart.dataField = function(_) {
+    if (!arguments.length) return (field);
+    field = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+        if (!arguments.length) return id;
+        id = _;
+        return chart;
+  };
+
+  chart.rotatedLabel = function(_) {
+        if (!arguments.length) return rotatedLabel;
+        rotatedLabel = _;
+        return chart;
+  };
+
+  chart.showLabels = function(_) {
+        if (!arguments.length) return (showLabels);
+        showLabels = _;
+        return chart;
+  };
+
+  chart.title = function(_) {
+      if (!arguments.length) return (title);
+      title = _;
+      return chart;
+  };
+
+  chart.xaxis = {};
+  // Expose the x-axis' tickFormat method.
+  d3.rebind(chart.xaxis, xAxis, 'tickFormat');
+
+  chart.yaxis = {};
+  // Expose the y-axis' tickFormat method.
+  d3.rebind(chart.yaxis, yAxis, 'tickFormat');
+
+  chart.dispatch = dispatch;
+
+  return chart;
+}
diff --git a/deprecated/charts/cumulativeLineChart.js b/deprecated/charts/cumulativeLineChart.js
new file mode 100644
index 0000000..43022cc
--- /dev/null
+++ b/deprecated/charts/cumulativeLineChart.js
@@ -0,0 +1,174 @@
+
+// This technique works AS IS for month end data points
+//   In fact, this works for any series where each value is evenly spaced,
+//   and every series starts at the same value and is 1 to 1
+//     In other words, values at the same index, need to have the same x value
+//     for all series
+//
+// TODO: now that tooltips don't use jquery, could likely get rid of the charts 
+//       collection by simply adding some optional functionality to the model
+nv.charts.cumulativeLineChartDaily = function() {
+  var selector = null,
+      data = [],
+      duration = 500,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      };
+
+
+  var graph = nv.models.cumulativeLine()
+                .x(function(d,i) { return i })
+                .color(d3.scale.category10().range()),
+      showTooltip = function(e) {
+        var offsetElement = document.getElementById(selector.substr(1)),
+            left = e.pos[0] + offsetElement.offsetLeft,
+            top = e.pos[1] + offsetElement.offsetTop,
+            formatX = graph.xAxis.tickFormat(),
+            formatY = graph.yAxis.tickFormat(),
+            x = formatX(graph.x()(e, e.pointIndex)),
+            //x = formatX(graph.x()(e.point)),
+            y = formatY(graph.y()(e.point)),
+            content = tooltip(e.series.key, x, y, e, graph);
+
+        nv.tooltip.show([left, top], content);
+      };
+
+  //setting component defaults
+  //graph.xAxis.tickFormat(d3.format(',r'));
+  graph.xAxis.tickFormat(function(d) {
+    //return d3.time.format('%x')(new Date(d))
+    return d3.time.format('%x')(new Date(data[0].values[d].x))
+  });
+
+  //graph.yAxis.tickFormat(d3.format(',.2f'));
+  graph.yAxis.tickFormat(d3.format(',.2%'));
+
+
+  //TODO: consider a method more similar to how the models are built
+  function chart() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph); //consider using transition chaining like in the models
+
+    return chart;
+  }
+
+
+  // This should always only be called once, then update should be used after, 
+  //     in which case should consider the 'd3 way' and merge this with update, 
+  //     but simply do this on enter... will try another example the d3 way
+  chart.build = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    nv.addGraph({
+      generate: function() {
+        var container = d3.select(selector),
+            width = function() { return parseInt(container.style('width')) },
+            height = function() { return parseInt(container.style('height')) },
+            svg = container.append('svg');
+
+        graph
+            .width(width)
+            .height(height);
+
+        svg
+            .attr('width', width())
+            .attr('height', height())
+            .datum(data)
+          .transition().duration(duration).call(graph);
+
+        return graph;
+      },
+      callback: function(graph) {
+        graph.dispatch.on('tooltipShow', showTooltip);
+        graph.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+        //TODO: fix issue of multiple graphs failing on resize
+        //TODO: create resize queue and have nv core handle resize instead of binding all to window resize
+        window.onresize =
+        function() {
+          // now that width and height are functions, should be automatic..of course you can always override them
+          d3.select(selector + ' svg')
+              .attr('width', graph.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+              .attr('height', graph.height()())
+              .call(graph);
+        };
+      }
+    });
+
+    return chart;
+  };
+
+
+  /*
+  //  moved to chart()
+  chart.update = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph);
+
+    return chart;
+  };
+  */
+
+  chart.data = function(_) {
+    if (!arguments.length) return data;
+    data = _;
+    return chart;
+  };
+
+  chart.selector = function(_) {
+    if (!arguments.length) return selector;
+    selector = _;
+    return chart;
+  };
+
+  chart.duration = function(_) {
+    if (!arguments.length) return duration;
+    duration = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return graph.xAxis.tickFormat();
+    graph.xAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return graph.yAxis.tickFormat();
+    graph.yAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.xAxisLabel = function(_) {
+    if (!arguments.length) return graph.xAxis.axisLabel();
+    graph.xAxis.axisLabel(_);
+    return chart;
+  };
+
+  chart.yAxisLabel = function(_) {
+    if (!arguments.length) return graph.yAxis.axisLabel();
+    graph.yAxis.axisLabel(_);
+    return chart;
+  };
+
+  d3.rebind(chart, graph, 'x', 'y');
+
+  chart.graph = graph; // Give direct access for getter/setters, and dispatchers
+
+  return chart;
+};
+
+
diff --git a/deprecated/charts/discreteBarChart.js b/deprecated/charts/discreteBarChart.js
new file mode 100644
index 0000000..db22ca3
--- /dev/null
+++ b/deprecated/charts/discreteBarChart.js
@@ -0,0 +1,157 @@
+
+nv.charts.discreteBar = function() {
+  var selector = null,
+      data = [],
+      duration = 500,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      };
+
+
+  var graph = nv.models.discreteBarWithAxes(),
+      showTooltip = function(e) {
+        var offsetElement = document.getElementById(selector.substr(1)),
+            left = e.pos[0] + offsetElement.offsetLeft,
+            top = e.pos[1] + offsetElement.offsetTop,
+            formatY = graph.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+            formatX = graph.xAxis.tickFormat(),
+            x = formatX(graph.x()(e.point)),
+            y = formatY(graph.y()(e.point)),
+            content = tooltip(e.series.key, x, y, e, graph);
+
+        nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+      };
+
+  //setting component defaults
+  graph.xAxis.tickFormat(function(d) { return d });
+  graph.yAxis.tickFormat(d3.format(',.f'));
+
+
+  //TODO: consider a method more similar to how the models are built
+  function chart() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph); //consider using transition chaining like in the models
+
+    return chart;
+  }
+
+
+  // This should always only be called once, then update should be used after, 
+  //     in which case should consider the 'd3 way' and merge this with update, 
+  //     but simply do this on enter... should try anoter example that way
+  chart.build = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    nv.addGraph({
+      generate: function() {
+        var container = d3.select(selector),
+            width = function() { return parseInt(container.style('width')) },
+            height = function() { return parseInt(container.style('height')) },
+            svg = container.append('svg');
+
+        graph
+            .width(width)
+            .height(height);
+
+        svg
+            .attr('width', width())
+            .attr('height', height())
+            .datum(data)
+          .transition().duration(duration).call(graph);
+
+        return graph;
+      },
+      callback: function(graph) {
+        graph.dispatch.on('tooltipShow', showTooltip);
+        graph.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+        //TODO: create resize queue and have nv core handle resize instead of binding all to window resize
+        nv.utils.windowResize(
+          function() {
+            // now that width and height are functions, should be automatic..of course you can always override them
+            d3.select(selector + ' svg')
+                .attr('width', graph.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+                .attr('height', graph.height()())
+                .transition().duration(duration).call(graph);
+                //.call(graph);
+          }
+        );
+      }
+    });
+
+    return chart;
+  };
+
+
+  /*
+  //  moved to chart()
+  chart.update = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph);
+
+    return chart;
+  };
+  */
+
+  chart.data = function(_) {
+    if (!arguments.length) return data;
+    data = _;
+    return chart;
+  };
+
+  chart.selector = function(_) {
+    if (!arguments.length) return selector;
+    selector = _;
+    return chart;
+  };
+
+  chart.duration = function(_) {
+    if (!arguments.length) return duration;
+    duration = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return graph.xAxis.tickFormat();
+    graph.xAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return graph.yAxis.tickFormat();
+    graph.yAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.xAxisLabel = function(_) {
+    if (!arguments.length) return graph.xAxis.axisLabel();
+    graph.xAxis.axisLabel(_);
+    return chart;
+  };
+
+  chart.yAxisLabel = function(_) {
+    if (!arguments.length) return graph.yAxis.axisLabel();
+    graph.yAxis.axisLabel(_);
+    return chart;
+  };
+
+  d3.rebind(chart, graph, 'x', 'y', 'staggerLabels');
+
+  chart.graph = graph; // Give direct access for getter/setters, and dispatchers
+
+  return chart;
+};
+
diff --git a/deprecated/charts/lineChart.js b/deprecated/charts/lineChart.js
new file mode 100644
index 0000000..35da87e
--- /dev/null
+++ b/deprecated/charts/lineChart.js
@@ -0,0 +1,159 @@
+
+// This is an attempt to make an extremely easy to use chart that is ready to go,
+//    basically the chart models with the extra glue... Queuing, tooltips, automatic resize, etc.
+// I may make these more specific, like 'time series line with month end data points', etc.
+//    or may make yet another layer of abstraction... common settings.
+nv.charts.line = function() {
+  var selector = null,
+      data = [],
+      duration = 500,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      };
+
+
+  var graph = nv.models.lineWithLegend(),
+      showTooltip = function(e) {
+        var offsetElement = document.getElementById(selector.substr(1)),
+            left = e.pos[0] + offsetElement.offsetLeft,
+            top = e.pos[1] + offsetElement.offsetTop,
+            formatX = graph.xAxis.tickFormat(),
+            formatY = graph.yAxis.tickFormat(),
+            x = formatX(graph.x()(e.point)),
+            y = formatY(graph.y()(e.point)),
+            content = tooltip(e.series.key, x, y, e, graph);
+
+        nv.tooltip.show([left, top], content);
+      };
+
+  //setting component defaults
+  graph.xAxis.tickFormat(d3.format(',r'));
+  graph.yAxis.tickFormat(d3.format(',.2f'));
+
+
+  //TODO: consider a method more similar to how the models are built
+  function chart() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph); //consider using transition chaining like in the models
+
+    return chart;
+  }
+
+
+  // This should always only be called once, then update should be used after, 
+  //     in which case should consider the 'd3 way' and merge this with update, 
+  //     but simply do this on enter... should try anoter example that way
+  chart.build = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    nv.addGraph({
+      generate: function() {
+        var container = d3.select(selector),
+            width = function() { return parseInt(container.style('width')) },
+            height = function() { return parseInt(container.style('height')) },
+            svg = container.append('svg');
+
+        graph
+            .width(width)
+            .height(height);
+
+        svg
+            .attr('width', width())
+            .attr('height', height())
+            .datum(data)
+          .transition().duration(duration).call(graph);
+
+        return graph;
+      },
+      callback: function(graph) {
+        graph.dispatch.on('tooltipShow', showTooltip);
+        graph.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+        //TODO: create resize queue and have nv core handle resize instead of binding all to window resize
+        window.onresize =
+        function() {
+          // now that width and height are functions, should be automatic..of course you can always override them
+          d3.select(selector + ' svg')
+              .attr('width', graph.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+              .attr('height', graph.height()())
+              .call(graph);
+        };
+      }
+    });
+
+    return chart;
+  };
+
+
+  /*
+  //  moved to chart()
+  chart.update = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph);
+
+    return chart;
+  };
+  */
+
+  chart.data = function(_) {
+    if (!arguments.length) return data;
+    data = _;
+    return chart;
+  };
+
+  chart.selector = function(_) {
+    if (!arguments.length) return selector;
+    selector = _;
+    return chart;
+  };
+
+  chart.duration = function(_) {
+    if (!arguments.length) return duration;
+    duration = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return graph.xAxis.tickFormat();
+    graph.xAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return graph.yAxis.tickFormat();
+    graph.yAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.xAxisLabel = function(_) {
+    if (!arguments.length) return graph.xAxis.axisLabel();
+    graph.xAxis.axisLabel(_);
+    return chart;
+  };
+
+  chart.yAxisLabel = function(_) {
+    if (!arguments.length) return graph.yAxis.axisLabel();
+    graph.yAxis.axisLabel(_);
+    return chart;
+  };
+
+  d3.rebind(chart, graph, 'x', 'y');
+
+  chart.graph = graph; // Give direct access for getter/setters, and dispatchers
+
+  return chart;
+};
+
diff --git a/deprecated/charts/lineChartDaily.js b/deprecated/charts/lineChartDaily.js
new file mode 100644
index 0000000..592a285
--- /dev/null
+++ b/deprecated/charts/lineChartDaily.js
@@ -0,0 +1,168 @@
+
+// This is an attempt to make an extremely easy to use chart that is ready to go,
+//    basically the chart models with the extra glue... Queuing, tooltips, automatic resize, etc.
+// I may make these more specific, like 'time series line with month end data points', etc.
+//    or may make yet another layer of abstraction... common settings.
+nv.charts.lineChartDaily = function() {
+  var selector = null,
+      data = [],
+      duration = 500,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      };
+
+
+  var graph = nv.models.lineWithLegend()
+                .x(function(d,i) { return i }),
+      showTooltip = function(e) {
+        var offsetElement = document.getElementById(selector.substr(1)),
+            left = e.pos[0] + offsetElement.offsetLeft,
+            top = e.pos[1] + offsetElement.offsetTop,
+            formatX = graph.xAxis.tickFormat(),
+            formatY = graph.yAxis.tickFormat(),
+            x = formatX(graph.x()(e, e.pointIndex)),
+            //x = formatX(graph.x()(e.point)),
+            y = formatY(graph.y()(e.point)),
+            content = tooltip(e.series.key, x, y, e, graph);
+
+        nv.tooltip.show([left, top], content);
+      };
+
+  //setting component defaults
+  //graph.xAxis.tickFormat(d3.format(',r'));
+  graph.xAxis.tickFormat(function(d) {
+    //return d3.time.format('%x')(new Date(d))
+    //log(d, data[0].values[d]);
+    return d3.time.format('%x')(new Date(data[0].values[d].x))
+  });
+
+  //graph.yAxis.tickFormat(d3.format(',.2f'));
+  graph.yAxis.tickFormat(d3.format(',.2%'));
+
+
+  //TODO: consider a method more similar to how the models are built
+  function chart() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph); //consider using transition chaining like in the models
+
+    return chart;
+  }
+
+
+  // This should always only be called once, then update should be used after, 
+  //     in which case should consider the 'd3 way' and merge this with update, 
+  //     but simply do this on enter... should try anoter example that way
+  chart.build = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    nv.addGraph({
+      generate: function() {
+        var container = d3.select(selector),
+            width = function() { return parseInt(container.style('width')) },
+            height = function() { return parseInt(container.style('height')) },
+            svg = container.append('svg');
+
+        graph
+            .width(width)
+            .height(height);
+
+        svg
+            .attr('width', width())
+            .attr('height', height())
+            .datum(data)
+          .transition().duration(duration).call(graph);
+
+        return graph;
+      },
+      callback: function(graph) {
+        graph.dispatch.on('tooltipShow', showTooltip);
+        graph.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+        //TODO: create resize queue and have nv core handle resize instead of binding all to window resize
+        window.onresize =
+        function() {
+          // now that width and height are functions, should be automatic..of course you can always override them
+          d3.select(selector + ' svg')
+              .attr('width', graph.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+              .attr('height', graph.height()())
+              .call(graph);
+        };
+      }
+    });
+
+    return chart;
+  };
+
+
+  /*
+  //  moved to chart()
+  chart.update = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph);
+
+    return chart;
+  };
+  */
+
+  chart.data = function(_) {
+    if (!arguments.length) return data;
+    data = _;
+    return chart;
+  };
+
+  chart.selector = function(_) {
+    if (!arguments.length) return selector;
+    selector = _;
+    return chart;
+  };
+
+  chart.duration = function(_) {
+    if (!arguments.length) return duration;
+    duration = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return graph.xAxis.tickFormat();
+    graph.xAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return graph.yAxis.tickFormat();
+    graph.yAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.xAxisLabel = function(_) {
+    if (!arguments.length) return graph.xAxis.axisLabel();
+    graph.xAxis.axisLabel(_);
+    return chart;
+  };
+
+  chart.yAxisLabel = function(_) {
+    if (!arguments.length) return graph.yAxis.axisLabel();
+    graph.yAxis.axisLabel(_);
+    return chart;
+  };
+
+  d3.rebind(chart, graph, 'x', 'y');
+
+  chart.graph = graph; // Give direct access for getter/setters, and dispatchers
+
+  return chart;
+};
+
diff --git a/deprecated/charts/stackedAreaChart.js b/deprecated/charts/stackedAreaChart.js
new file mode 100644
index 0000000..8444bbb
--- /dev/null
+++ b/deprecated/charts/stackedAreaChart.js
@@ -0,0 +1,177 @@
+
+/***
+ * This chart treats the X position as the INDEX, not the value
+ * Each series at the same index MUST be the same x value for a valid representation
+ * This is needed specifically for daily data where the gap between Friday and Monday
+ * should be equal to the gap from Monday to Tuesday. (and of course, holidays can be 
+ * omitted without issue, as long as ALL series omit the same days).
+ * An intentional side effect is that ALL ticks will land on actual data points,
+ * so this visualization can also be used for Month End data points, showing Month End
+ * ticks on the X axis
+ ***/
+
+nv.charts.stackedAreaChart = function() {
+  var selector = null,
+      data = [],
+      duration = 500,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      };
+
+
+  var graph = nv.models.stackedAreaWithLegend()
+                .x(function(d,i) { return i }),
+      showTooltip = function(e) {
+        var offsetElement = document.getElementById(selector.substr(1)),
+            left = e.pos[0] + offsetElement.offsetLeft,
+            top = e.pos[1] + offsetElement.offsetTop,
+            formatX = graph.xAxis.tickFormat(),
+            formatY = graph.yAxis.tickFormat(),
+            x = formatX(graph.x()(e, e.pointIndex)),
+            //x = formatX(graph.x()(e.point)),
+            y = formatY(graph.y()(e.point)),
+            content = tooltip(e.series.key, x, y, e, graph);
+
+        nv.tooltip.show([left, top], content);
+      };
+
+  //setting component defaults
+  //graph.xAxis.tickFormat(d3.format(',r'));
+  graph.xAxis.tickFormat(function(d) {
+    //return d3.time.format('%x')(new Date(d))
+    //log(d, data[0].values[d]);
+    return d3.time.format('%x')(new Date(data[0].values[d].x))
+  });
+
+  //graph.yAxis.tickFormat(d3.format(',.2f'));
+  graph.yAxis.tickFormat(d3.format(',.2%'));
+
+
+  //TODO: consider a method more similar to how the models are built
+  function chart() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration)
+        .call(graph); //consider using transition chaining like in the models
+
+    return chart;
+  }
+
+
+  // This should always only be called once, then update should be used after, 
+  //     in which case should consider the 'd3 way' and merge this with update, 
+  //     but simply do this on enter... should try anoter example that way
+  chart.build = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    nv.addGraph({
+      generate: function() {
+        var container = d3.select(selector),
+            width = function() { return parseInt(container.style('width')) },
+            height = function() { return parseInt(container.style('height')) },
+            svg = container.append('svg');
+
+        graph
+            .width(width)
+            .height(height);
+
+        svg
+            .attr('width', width())
+            .attr('height', height())
+            .datum(data)
+          .transition().duration(duration)
+            .call(graph);
+
+        return graph;
+      },
+      callback: function(graph) {
+        graph.dispatch.on('tooltipShow', showTooltip);
+        graph.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+        //TODO: create resize queue and have nv core handle resize instead of binding all to window resize
+        window.onresize =
+        function() {
+          // now that width and height are functions, should be automatic..of course you can always override them
+          d3.select(selector + ' svg')
+              .attr('width', graph.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+              .attr('height', graph.height()())
+              .call(graph);
+        };
+      }
+    });
+
+    return chart;
+  };
+
+
+  /*
+  //  moved to chart()
+  chart.update = function() {
+    if (!selector || !data.length) return chart; //do nothing if you have nothing to work with
+
+    d3.select(selector).select('svg')
+        .datum(data)
+      .transition().duration(duration).call(graph);
+
+    return chart;
+  };
+  */
+
+  chart.data = function(_) {
+    if (!arguments.length) return data;
+    data = _;
+    return chart;
+  };
+
+  chart.selector = function(_) {
+    if (!arguments.length) return selector;
+    selector = _;
+    return chart;
+  };
+
+  chart.duration = function(_) {
+    if (!arguments.length) return duration;
+    duration = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return graph.xAxis.tickFormat();
+    graph.xAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return graph.yAxis.tickFormat();
+    graph.yAxis.tickFormat(typeof _ === 'function' ? _ : d3.format(_));
+    return chart;
+  };
+
+  chart.xAxisLabel = function(_) {
+    if (!arguments.length) return graph.xAxis.axisLabel();
+    graph.xAxis.axisLabel(_);
+    return chart;
+  };
+
+  chart.yAxisLabel = function(_) {
+    if (!arguments.length) return graph.yAxis.axisLabel();
+    graph.yAxis.axisLabel(_);
+    return chart;
+  };
+
+  d3.rebind(chart, graph, 'x', 'y');
+
+  chart.graph = graph; // Give direct access for getter/setters, and dispatchers
+
+  return chart;
+};
+
diff --git a/deprecated/cumulativeLine.html b/deprecated/cumulativeLine.html
new file mode 100644
index 0000000..0a7bab8
--- /dev/null
+++ b/deprecated/cumulativeLine.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+  <div id="test1">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/cumulativeLine.js"></script>
+<script>
+
+
+
+var cumulativeMonthEndTestData = [
+                {
+                    key: "Long",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , -6.3382185140371] , [ 1030766400000 , -5.9507873460847] , [ 1033358400000 , -11.569146943813] , [ 1036040400000 , -5.4767332317425] , [ 1038632400000 , 0.50794682203014] , [ 1041310800000 , -5.5310285460542] , [ 1043989200000 , -5.7838296963382] , [ 1046408400000 , -7.3249341615649] , [ 1049086800000 , -6.7078630712489] , [ 1051675200000 , 0.44227126150934] , [ 1054353600000 , 7.2481659343222] , [ 1056945600000 , 9.2512381306992] , [ 1059624000000 , 11.341210982529] , [ 1062302400000 , 14.734820409020] , [ 1064894400000 , 12.387148007542] , [ 1067576400000 , 18.436471461827] , [ 1070168400000 , 19.830742266977] , [ 1072846800000 , 22.643205829887] , [ 1075525200000 , 26.743156781239] , [ 1078030800000 , 29.597478802228] , [ 1080709200000 , 30.831697585341] , [ 1083297600000 , 28.054068024708] , [ 1085976000000 , 29.294079423832] , [ 1088568000000 , 30.269264061274] , [ 1091246400000 , 24.934526898906] , [ 1093924800000 , 24.265982759406] , [ 1096516800000 , 27.217794897473] , [ 1099195200000 , 30.802601992077] , [ 1101790800000 , 36.331003758254] , [ 1104469200000 , 43.142498700060] , [ 1107147600000 , 40.558263931958] , [ 1109566800000 , 42.543622385800] , [ 1112245200000 , 41.683584710331] , [ 1114833600000 , 36.375367302328] , [ 1117512000000 , 40.719688980730] , [ 1120104000000 , 43.897963036919] , [ 1122782400000 , 49.797033975368] , [ 1125460800000 , 47.085993935989] , [ 1128052800000 , 46.601972859745] , [ 1130734800000 , 41.567784572762] , [ 1133326800000 , 47.296923737245] , [ 1136005200000 , 47.642969612080] , [ 1138683600000 , 50.781515820954] , [ 1141102800000 , 52.600229204305] , [ 1143781200000 , 55.599684490628] , [ 1146369600000 , 57.920388436633] , [ 1149048000000 , 53.503593218971] , [ 1151640000000 , 53.522973979964] , [ 1154318400000 , 49.846822298548] , [ 1156996800000 , 54.721341614650] , [ 1159588800000 , 58.186236223191] , [ 1162270800000 , 63.908065540997] , [ 1164862800000 , 69.767285129367] , [ 1167541200000 , 72.534013373592] , [ 1170219600000 , 77.991819436573] , [ 1172638800000 , 78.143584404990] , [ 1175313600000 , 83.702398665233] , [ 1177905600000 , 91.140859312418] , [ 1180584000000 , 98.590960607028] , [ 1183176000000 , 96.245634754228] , [ 1185854400000 , 92.326364432615] , [ 1188532800000 , 97.068765332230] , [ 1191124800000 , 105.81025556260] , [ 1193803200000 , 114.38348777791] , [ 1196398800000 , 103.59604949810] , [ 1199077200000 , 101.72488429307] , [ 1201755600000 , 89.840147735028] , [ 1204261200000 , 86.963597532664] , [ 1206936000000 , 84.075505208491] , [ 1209528000000 , 93.170105645831] , [ 1212206400000 , 103.62838083121] , [ 1214798400000 , 87.458241365091] , [ 1217476800000 , 85.808374141319] , [ 1220155200000 , 93.158054469193] , [ 1222747200000 , 65.973252382360] , [ 1225425600000 , 44.580686638224] , [ 1228021200000 , 36.418977140128] , [ 1230699600000 , 38.727678144761] , [ 1233378000000 , 36.692674173387] , [ 1235797200000 , 30.033022809480] , [ 1238472000000 , 36.707532162718] , [ 1241064000000 , 52.191457688389] , [ 1243742400000 , 56.357883979735] , [ 1246334400000 , 57.629002180305] , [ 1249012800000 , 66.650985790166] , [ 1251691200000 , 70.839243432186] , [ 1254283200000 , 78.731998491499] , [ 1256961600000 , 72.375528540349] , [ 1259557200000 , 81.738387881630] , [ 1262235600000 , 87.539792394232] , [ 1264914000000 , 84.320762662273] , [ 1267333200000 , 90.621278391889] , [ 1270008000000 , 102.47144881651] , [ 1272600000000 , 102.79320353429] , [ 1275278400000 , 90.529736050479] , [ 1277870400000 , 76.580859994531] , [ 1280548800000 , 86.548979376972] , [ 1283227200000 , 81.879653334089] , [ 1285819200000 , 101.72550015956] , [ 1288497600000 , 107.97964852260] , [ 1291093200000 , 106.16240630785] , [ 1293771600000 , 114.84268599533] , [ 1296450000000 , 121.60793322282] , [ 1298869200000 , 133.41437346605] , [ 1301544000000 , 125.46646042904] , [ 1304136000000 , 129.76784954301] , [ 1306814400000 , 128.15798861044] , [ 1309406400000 , 121.92388706072] , [ 1312084800000 , 116.70036100870] , [ 1314763200000 , 88.367701837033] , [ 1317355200000 , 59.159665765725] , [ 1320033600000 , 79.793568139753] , [ 1322629200000 , 75.903834028417] , [ 1325307600000 , 72.704218209157] , [ 1327986000000 , 84.936990804097] , [ 1330491600000 , 93.388148670744]]
+                },
+                {
+                    key: "Short",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0] , [ 1036040400000 , 0] , [ 1038632400000 , 0] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , -0.049184266875945] , [ 1078030800000 , -0.10757569491991] , [ 1080709200000 , -0.075601531307242] , [ 1083297600000 , -0.061245277988149] , [ 1085976000000 , -0.068227316401169] , [ 1088568000000 , -0.11242758058502] , [ 1091246400000 , -0.074848439408270] , [ 1093924800000 , -0.11465623676497] , [ 1096516800000 , -0.24370633342416] , [ 1099195200000 , -0.21523268478893] , [ 1101790800000 , -0.37859370911822] , [ 1104469200000 , -0.41932884345151] , [ 1107147600000 , -0.45393735984802] , [ 1109566800000 , -0.50868179522598] , [ 1112245200000 , -0.48164396881207] , [ 1114833600000 , -0.41605962887194] , [ 1117512000000 , -0.48490348490240] , [ 1120104000000 , -0.55071036101311] , [ 1122782400000 , -0.67489170505394] , [ 1125460800000 , -0.74978070939342] , [ 1128052800000 , -0.86395050745343] , [ 1130734800000 , -0.78524898506764] , [ 1133326800000 , -0.99800440950854] , [ 1136005200000 , -1.1177951153878] , [ 1138683600000 , -1.4119975432964] , [ 1141102800000 , -1.2409959736465] , [ 1143781200000 , -1.3088936375431] , [ 1146369600000 , -1.5495785469683] , [ 1149048000000 , -1.1563414981293] , [ 1151640000000 , -0.87192471725994] , [ 1154318400000 , -0.84073995183442] , [ 1156996800000 , -0.88761892867370] , [ 1159588800000 , -0.81748513917485] , [ 1162270800000 , -1.2874081041274] , [ 1164862800000 , -1.9234702981339] , [ 1167541200000 , -1.8377768147648] , [ 1170219600000 , -2.7107654031830] , [ 1172638800000 , -2.6493268125418] , [ 1175313600000 , -3.0814553134551] , [ 1177905600000 , -3.8509837783574] , [ 1180584000000 , -5.2919167850718] , [ 1183176000000 , -5.2297750650773] , [ 1185854400000 , -3.9335668501451] , [ 1188532800000 , -2.3695525190114] , [ 1191124800000 , -2.3084243151854] , [ 1193803200000 , -3.0753680726738] , [ 1196398800000 , -2.2346609938962] , [ 1199077200000 , -3.0598810361615] , [ 1201755600000 , -1.8410154270386] , [ 1204261200000 , -1.6479442038620] , [ 1206936000000 , -1.9293858622780] , [ 1209528000000 , -3.0769590460943] , [ 1212206400000 , -4.2423933501421] , [ 1214798400000 , -2.6951491617768] , [ 1217476800000 , -2.8981825939957] , [ 1220155200000 , -2.9662727940324] , [ 1222747200000 , 0.21556750497498] , [ 1225425600000 , 2.6784995167088] , [ 1228021200000 , 4.1296711248958] , [ 1230699600000 , 3.7311068218734] , [ 1233378000000 , 4.7695330866954] , [ 1235797200000 , 5.1919133040990] , [ 1238472000000 , 4.1025856045660] , [ 1241064000000 , 2.8498939666225] , [ 1243742400000 , 2.8106017222851] , [ 1246334400000 , 2.8456526669963] , [ 1249012800000 , 0.65563070754298] , [ 1251691200000 , -0.30022343874633] , [ 1254283200000 , -1.1600358228964] , [ 1256961600000 , -0.26674408835052] , [ 1259557200000 , -1.4693389757812] , [ 1262235600000 , -2.7855421590594] , [ 1264914000000 , -1.2668244065703] , [ 1267333200000 , -2.5537804115548] , [ 1270008000000 , -4.9144552474502] , [ 1272600000000 , -6.0484408234831] , [ 1275278400000 , -3.3834349033750] , [ 1277870400000 , -0.46752826932523] , [ 1280548800000 , -1.8030186027963] , [ 1283227200000 , -0.99623230097881] , [ 1285819200000 , -3.3475370235594] , [ 1288497600000 , -3.8187026520342] , [ 1291093200000 , -4.2354146250353] , [ 1293771600000 , -5.6795404292885] , [ 1296450000000 , -6.2928665328172] , [ 1298869200000 , -6.8549277434419] , [ 1301544000000 , -6.9925308360918] , [ 1304136000000 , -8.3216548655839] , [ 1306814400000 , -7.7682867271435] , [ 1309406400000 , -6.9244213301058] , [ 1312084800000 , -5.7407624451404] , [ 1314763200000 , -2.1813149077927] , [ 1317355200000 , 2.9407596325999] , [ 1320033600000 , -1.1130607112134] , [ 1322629200000 , -2.0274822307752] , [ 1325307600000 , -1.8372559072154] , [ 1327986000000 , -4.0732815531148] , [ 1330491600000 , -6.4417038470291]]
+                },
+                {
+                    key: "Gross",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , -6.3382185140371] , [ 1030766400000 , -5.9507873460847] , [ 1033358400000 , -11.569146943813] , [ 1036040400000 , -5.4767332317425] , [ 1038632400000 , 0.50794682203014] , [ 1041310800000 , -5.5310285460542] , [ 1043989200000 , -5.7838296963382] , [ 1046408400000 , -7.3249341615649] , [ 1049086800000 , -6.7078630712489] , [ 1051675200000 , 0.44227126150934] , [ 1054353600000 , 7.2481659343222] , [ 1056945600000 , 9.2512381306992] , [ 1059624000000 , 11.341210982529] , [ 1062302400000 , 14.734820409020] , [ 1064894400000 , 12.387148007542] , [ 1067576400000 , 18.436471461827] , [ 1070168400000 , 19.830742266977] , [ 1072846800000 , 22.643205829887] , [ 1075525200000 , 26.693972514363] , [ 1078030800000 , 29.489903107308] , [ 1080709200000 , 30.756096054034] , [ 1083297600000 , 27.992822746720] , [ 1085976000000 , 29.225852107431] , [ 1088568000000 , 30.156836480689] , [ 1091246400000 , 24.859678459498] , [ 1093924800000 , 24.151326522641] , [ 1096516800000 , 26.974088564049] , [ 1099195200000 , 30.587369307288] , [ 1101790800000 , 35.952410049136] , [ 1104469200000 , 42.723169856608] , [ 1107147600000 , 40.104326572110] , [ 1109566800000 , 42.034940590574] , [ 1112245200000 , 41.201940741519] , [ 1114833600000 , 35.959307673456] , [ 1117512000000 , 40.234785495828] , [ 1120104000000 , 43.347252675906] , [ 1122782400000 , 49.122142270314] , [ 1125460800000 , 46.336213226596] , [ 1128052800000 , 45.738022352292] , [ 1130734800000 , 40.782535587694] , [ 1133326800000 , 46.298919327736] , [ 1136005200000 , 46.525174496692] , [ 1138683600000 , 49.369518277658] , [ 1141102800000 , 51.359233230659] , [ 1143781200000 , 54.290790853085] , [ 1146369600000 , 56.370809889665] , [ 1149048000000 , 52.347251720842] , [ 1151640000000 , 52.651049262704] , [ 1154318400000 , 49.006082346714] , [ 1156996800000 , 53.833722685976] , [ 1159588800000 , 57.368751084016] , [ 1162270800000 , 62.620657436870] , [ 1164862800000 , 67.843814831233] , [ 1167541200000 , 70.696236558827] , [ 1170219600000 , 75.281054033390] , [ 1172638800000 , 75.494257592448] , [ 1175313600000 , 80.620943351778] , [ 1177905600000 , 87.289875534061] , [ 1180584000000 , 93.299043821956] , [ 1183176000000 , 91.015859689151] , [ 1185854400000 , 88.392797582470] , [ 1188532800000 , 94.699212813219] , [ 1191124800000 , 103.50183124741] , [ 1193803200000 , 111.30811970524] , [ 1196398800000 , 101.36138850420] , [ 1199077200000 , 98.665003256909] , [ 1201755600000 , 87.999132307989] , [ 1204261200000 , 85.315653328802] , [ 1206936000000 , 82.146119346213] , [ 1209528000000 , 90.093146599737] , [ 1212206400000 , 99.385987481068] , [ 1214798400000 , 84.763092203314] , [ 1217476800000 , 82.910191547323] , [ 1220155200000 , 90.191781675161] , [ 1222747200000 , 66.188819887335] , [ 1225425600000 , 47.259186154933] , [ 1228021200000 , 40.548648265024] , [ 1230699600000 , 42.458784966634] , [ 1233378000000 , 41.462207260082] , [ 1235797200000 , 35.224936113579] , [ 1238472000000 , 40.810117767284] , [ 1241064000000 , 55.041351655012] , [ 1243742400000 , 59.168485702020] , [ 1246334400000 , 60.474654847301] , [ 1249012800000 , 67.306616497709] , [ 1251691200000 , 70.539019993440] , [ 1254283200000 , 77.571962668603] , [ 1256961600000 , 72.108784451998] , [ 1259557200000 , 80.269048905849] , [ 1262235600000 , 84.754250235173] , [ 1264914000000 , 83.053938255703] , [ 1267333200000 , 88.067497980334] , [ 1270008000000 , 97.556993569060] , [ 1272600000000 , 96.744762710807] , [ 1275278400000 , 87.146301147104] , [ 1277870400000 , 76.113331725206] , [ 1280548800000 , 84.745960774176] , [ 1283227200000 , 80.883421033110] , [ 1285819200000 , 98.377963136001] , [ 1288497600000 , 104.16094587057] , [ 1291093200000 , 101.92699168281] , [ 1293771600000 , 109.16314556604] , [ 1296450000000 , 115.31506669000] , [ 1298869200000 , 126.55944572261] , [ 1301544000000 , 118.47392959295] , [ 1304136000000 , 121.44619467743] , [ 1306814400000 , 120.38970188330] , [ 1309406400000 , 114.99946573061] , [ 1312084800000 , 110.95959856356] , [ 1314763200000 , 86.186386929240] , [ 1317355200000 , 62.100425398325] , [ 1320033600000 , 78.680507428540] , [ 1322629200000 , 73.876351797642] , [ 1325307600000 , 70.866962301942] , [ 1327986000000 , 80.863709250982] , [ 1330491600000 , 86.946444823715]]
+                },
+                {
+                    key: "S&P 1500",
+                    values: [ [ 1025409600000 , -7.0674410638835] , [ 1028088000000 , -14.663359292964] , [ 1030766400000 , -14.104393060540] , [ 1033358400000 , -23.114477037218] , [ 1036040400000 , -16.774256687841] , [ 1038632400000 , -11.902028464000] , [ 1041310800000 , -16.883038668422] , [ 1043989200000 , -19.104223676831] , [ 1046408400000 , -20.420523282736] , [ 1049086800000 , -19.660555051587] , [ 1051675200000 , -13.106911231646] , [ 1054353600000 , -8.2448460302143] , [ 1056945600000 , -7.0313058730976] , [ 1059624000000 , -5.1485118700389] , [ 1062302400000 , -3.0011028761469] , [ 1064894400000 , -4.1367265281467] , [ 1067576400000 , 1.5425209565025] , [ 1070168400000 , 2.7673533607299] , [ 1072846800000 , 7.7077114755360] , [ 1075525200000 , 9.7565015112434] , [ 1078030800000 , 11.396888609473] , [ 1080709200000 , 10.013964745578] , [ 1083297600000 , 8.0558890950562] , [ 1085976000000 , 9.6081966657458] , [ 1088568000000 , 11.918590426432] , [ 1091246400000 , 7.9945345523982] , [ 1093924800000 , 8.3201276776796] , [ 1096516800000 , 9.8283954846342] , [ 1099195200000 , 11.527125859650] , [ 1101790800000 , 16.413657596527] , [ 1104469200000 , 20.393798297928] , [ 1107147600000 , 17.456308413907] , [ 1109566800000 , 20.087778400999] , [ 1112245200000 , 17.988336990817] , [ 1114833600000 , 15.378490151331] , [ 1117512000000 , 19.474322935730] , [ 1120104000000 , 20.013851070354] , [ 1122782400000 , 24.749943726975] , [ 1125460800000 , 23.558710274826] , [ 1128052800000 , 24.558915040889] , [ 1130734800000 , 22.355860488034] , [ 1133326800000 , 27.138026265756] , [ 1136005200000 , 27.202220808591] , [ 1138683600000 , 31.219437344964] , [ 1141102800000 , 31.392355525125] , [ 1143781200000 , 33.373099232542] , [ 1146369600000 , 35.095277582309] , [ 1149048000000 , 30.923356507615] , [ 1151640000000 , 31.083717332561] , [ 1154318400000 , 31.290690671561] , [ 1156996800000 , 34.247769216679] , [ 1159588800000 , 37.411073177620] , [ 1162270800000 , 42.079177096411] , [ 1164862800000 , 44.978191659648] , [ 1167541200000 , 46.713271025310] , [ 1170219600000 , 49.203892437699] , [ 1172638800000 , 46.684723471826] , [ 1175313600000 , 48.385458973500] , [ 1177905600000 , 54.660197840305] , [ 1180584000000 , 60.311838415602] , [ 1183176000000 , 57.583282204682] , [ 1185854400000 , 52.425398898751] , [ 1188532800000 , 54.663538086985] , [ 1191124800000 , 60.181844325224] , [ 1193803200000 , 62.877219773621] , [ 1196398800000 , 55.760611512951] , [ 1199077200000 , 54.735280367784] , [ 1201755600000 , 45.495912959474] , [ 1204261200000 , 40.934919015876] , [ 1206936000000 , 40.303777633187] , [ 1209528000000 , 47.403740368773] , [ 1212206400000 , 49.951960898839] , [ 1214798400000 , 37.534590035098] , [ 1217476800000 , 36.405758293321] , [ 1220155200000 , 38.545373001858] , [ 1222747200000 , 26.106358664455] , [ 1225425600000 , 4.2658006768744] , [ 1228021200000 , -3.5517839867557] , [ 1230699600000 , -2.0878920761513] , [ 1233378000000 , -10.408879093829] , [ 1235797200000 , -19.924242196038] , [ 1238472000000 , -12.906491912782] , [ 1241064000000 , -3.9774866468346] , [ 1243742400000 , 1.0319171601402] , [ 1246334400000 , 1.3109350357718] , [ 1249012800000 , 9.1668309061935] , [ 1251691200000 , 13.121178985954] , [ 1254283200000 , 17.578680237511] , [ 1256961600000 , 14.971294355085] , [ 1259557200000 , 21.551327027338] , [ 1262235600000 , 24.592328423819] , [ 1264914000000 , 20.158087829555] , [ 1267333200000 , 24.135661929185] , [ 1270008000000 , 31.815205405903] , [ 1272600000000 , 34.389524768466] , [ 1275278400000 , 23.785555857522] , [ 1277870400000 , 17.082756649072] , [ 1280548800000 , 25.248007727100] , [ 1283227200000 , 19.415179069165] , [ 1285819200000 , 30.413636349327] , [ 1288497600000 , 35.357952964550] , [ 1291093200000 , 35.886413535859] , [ 1293771600000 , 45.003601951959] , [ 1296450000000 , 48.274893564020] , [ 1298869200000 , 53.562864914648] , [ 1301544000000 , 54.108274337412] , [ 1304136000000 , 58.618190111927] , [ 1306814400000 , 56.806793965598] , [ 1309406400000 , 54.135477252994] , [ 1312084800000 , 50.735258942442] , [ 1314763200000 , 42.208170945813] , [ 1317355200000 , 31.617916826724] , [ 1320033600000 , 46.492005006737] , [ 1322629200000 , 46.203116922145] , [ 1325307600000 , 47.541427643137] , [ 1327986000000 , 54.518998440993] , [ 1330491600000 , 61.099720234693]]
+                }
+].map(function(line) {
+  line.values = line.values.map(function(d) { return {x: d[0], y: d[1]/100  }});
+  return line;
+});
+
+
+
+
+
+nv.addGraph({
+  generate: function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40;
+
+    var chart = nv.models.cumulativeLine()
+                .width(width)
+                .height(height)
+                .color(d3.scale.category10().range())
+                //.margin({top: 20, right: 10, bottom: 50, left: 80})
+
+        //chart.yAxis.axisLabel('Cumulative');
+        //chart.xAxis.axisLabel('Date');
+
+        //these are specific for a chart containing only month end data points
+        chart.xAxis.scale(d3.time.scale());
+        chart.xAxis.ticks(d3.time.monthEnds, 12); //need to figure out the best way to calculate the step here... preferably without knowledge of the data domain
+
+        chart.yAxis.tickFormat(d3.format(',%'));
+        chart.xAxis.tickFormat(function(d) {
+          return d3.time.format('%x')(new Date(d))
+        });
+
+    //chart.xaxis.tickFormat(d3.format(".02f"))
+
+    var svg = d3.select('#test1 svg')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(cumulativeMonthEndTestData)
+
+    svg.transition().duration(500).call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+
+    graph.dispatch.on('tooltipShow', function(e) {
+        var offsetElement = document.getElementById("test1"),
+                left = e.pos[0] + offsetElement.offsetLeft,
+                top = e.pos[1] + offsetElement.offsetTop,
+          formatterY = d3.format(",.2%"),
+          formatterX = function(d) {
+            return d3.time.format('%x')(new Date(d))
+          };
+
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatterY(graph.y()(e.point)) + ' on ' + formatterX(graph.x()(e.point)) +
+                    '</p>';
+
+      nv.tooltip.show([left, top], content);
+    });
+
+    graph.dispatch.on('tooltipHide', function(e) {
+      nv.tooltip.cleanup();
+    });
+
+
+
+    window.onresize = function() {
+        var width = nv.utils.windowSize().width - 40,
+           height = nv.utils.windowSize().height - 40,
+           margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#test1 svg')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/cumulativeLine.js b/deprecated/cumulativeLine.js
new file mode 100644
index 0000000..127d940
--- /dev/null
+++ b/deprecated/cumulativeLine.js
@@ -0,0 +1,334 @@
+
+nv.models.cumulativeLine = function() {
+  var margin = {top: 30, right: 20, bottom: 30, left: 60},
+      getWidth = function() { return 960 },
+      getHeight = function() { return 500 },
+      color = d3.scale.category20().range(),
+      dotRadius = function() { return 2.5 },
+      getX = function(d) { return d.x },
+      getY = function(d) { return d.y },
+      id = Math.floor(Math.random() * 10000), //Create semi-unique ID incase user doesn't select one
+      showRescaleToggle = true,
+      rescaleY = true;
+
+  var x = d3.scale.linear(),
+      dx = d3.scale.linear(),
+      y = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30),
+      lines = nv.models.line(),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
+      index = {i: 0, x: 0};
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Re-scale y-axis' }
+  ];
+
+  var indexDrag = d3.behavior.drag()
+                    .on('dragstart', dragStart)
+                    .on('drag', dragMove)
+                    .on('dragend', dragEnd);
+
+  function dragStart(d,i) {}
+
+  function dragMove(d,i) {
+    d.x += d3.event.dx;
+    d.i = Math.round(dx.invert(d.x));
+
+    //d3.transition(d3.select('.chart-' + id)).call(chart);
+    d3.select(this).attr("transform", "translate(" + dx(d.i) + ",0)");
+  }
+
+  function dragEnd(d,i) {
+    d3.transition(d3.select('.chart-' + id)).call(chart);
+  }
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var width = getWidth(),
+          height = getHeight(),
+          availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom;
+
+      var series = indexify(index.i, data);
+
+      var seriesData = series
+            .filter(function(d) { return !rescaleY || !d.disabled }) // only filter out if rescaling y axis
+            .map(function(d) { return d.values });
+
+
+      x   .domain(d3.extent(d3.merge(seriesData), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      dx  .domain([0, data[0].values.length - 1]) //Assumes all series have same length
+          .range([0, availableWidth])
+          .clamp(true);
+
+      y   .domain(d3.extent(d3.merge(seriesData), function(d) { return d.y } ))
+          .range([availableHeight, 0]);
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var wrap = d3.select(this).classed('chart-' + id, true).selectAll('g.wrap').data([series]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 cumulativeLine').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'controlsWrap');
+
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height();
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      legend.width(width/2 - margin.right);
+
+      g.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (width/2 - margin.left) + ',' + (-margin.top) +')')
+          .call(legend);
+
+      if (showRescaleToggle) {
+        controls.width(140).color(['#444', '#444', '#444']);
+        g.select('.controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(series.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(linesWrap).call(lines);
+
+
+      var indexLine = linesWrap.selectAll('.indexLine')
+          .data([index]);
+      indexLine.enter().append('rect').attr('class', 'indexLine')
+          .attr('width', 3)
+          .attr('x', -2)
+          .attr('fill', 'red')
+          .attr('fill-opacity', .5)
+          .call(indexDrag)
+
+      indexLine
+          .attr("transform", function(d) { return "translate(" + dx(d.i) + ",0)" })
+          .attr('height', availableHeight)
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( height / 36 )
+        .tickSize(-availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+
+      // ********** EVENT LISTENERS **********
+
+      legend.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+      /*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+      */
+
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+        rescaleY = !d.disabled;
+
+        //console.log(d,i,arguments);
+
+        selection.transition().call(chart);
+      });
+
+
+
+
+      lines.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+      });
+
+      lines.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+
+    });
+
+    return chart;
+  }
+
+
+
+  // ********** FUNCTIONS **********
+
+  /* Normalize the data according to an index point. */
+  function indexify(idx, data) {
+    return data.map(function(line, i) {
+      var v = getY(line.values[idx], idx);
+
+      return {
+        key: line.key,
+        values: line.values.map(function(point, pointIndex) {
+          return {'x': getX(point, pointIndex), 'y': (getY(point, pointIndex) - v) / (1 + v) };
+        }),
+        disabled: line.disabled,
+        hover: line.hover
+        /*
+        if (v < -.9) {
+          //if a series loses more than 100%, calculations fail.. anything close can cause major distortion (but is mathematically currect till it hits 100)
+        }
+        */
+      };
+    });
+  };
+
+
+
+
+  // ********** PUBLIC ACCESSORS **********
+
+  chart.dispatch = dispatch;
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    //lines.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    //lines.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  /*
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+  */
+
+  chart.width = function(_) {
+    if (!arguments.length) return getWidth;
+    getWidth = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return getHeight;
+    getHeight = d3.functor(_);
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  chart.dotRadius = function(_) {
+    if (!arguments.length) return dotRadius;
+    dotRadius = d3.functor(_);
+    lines.dotRadius = _;
+    return chart;
+  };
+
+  chart.showRescaleToggle = function(_) {
+    if (!arguments.length) return showRescaleToggle;
+    showRescaleToggle = _;
+    return chart;
+  };
+
+
+  // Expose the x-axis' tickFormat method.
+  //chart.xAxis = {};
+  //d3.rebind(chart.xAxis, xAxis, 'tickFormat');
+  chart.xAxis = xAxis;
+
+  // Expose the y-axis' tickFormat method.
+  //chart.yAxis = {};
+  //d3.rebind(chart.yAxis, yAxis, 'tickFormat');
+  chart.yAxis = yAxis;
+
+
+  return chart;
+}
diff --git a/deprecated/discreteBarChartWithEnabledTooltip.html b/deprecated/discreteBarChartWithEnabledTooltip.html
new file mode 100644
index 0000000..f23732c
--- /dev/null
+++ b/deprecated/discreteBarChartWithEnabledTooltip.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#wrapper {
+  width: 960;
+  padding: 100px;  
+}
+
+#chart1 {
+  width: 960px;
+}
+
+#chart1 svg{
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 10px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+  <div id="wrapper">
+
+    <div id="chart1">
+      <svg></svg>
+    </div>
+
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<!-- including all the components so I don't have to minify every time I test in development -->
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/discreteBar.js"></script>
+<script src="../src/models/discreteBarChartWithEnabledTooltip.js"></script>
+<script>
+
+
+
+
+
+historicalBarChart = [ 
+  {
+    key: "Cumulative Return",
+    values: [
+      { 
+        "label" : "CDS / Options" ,
+        "value" : -29.765957771107
+      } , 
+      { 
+        "label" : "Cash" , 
+        "value" : 0
+      } , 
+      { 
+        "label" : "Corporate Bonds" , 
+        "value" : 32.807804682612
+      } , 
+      { 
+        "label" : "Equity" , 
+        "value" : 196.45946739256
+      } , 
+      { 
+        "label" : "Index Futures" ,
+        "value" : 0.19434030906893
+      } , 
+      { 
+        "label" : "Options" , 
+        "value" : -98.079782601442
+      } , 
+      { 
+        "label" : "Preferred" , 
+        "value" : -13.925743130903
+      } , 
+      { 
+        "label" : "Not Available" , 
+        "value" : -5.1387322875705
+      }
+    ]
+  }
+];
+
+
+
+
+nv.addGraph(function() {  
+  var chart = nv.models.discreteBarChart()
+      .x(function(d) { return d.label })
+      .y(function(d) { return d.value })
+      .staggerLabels(true)
+      //.staggerLabels(historicalBarChart[0].values.length > 8)
+      .tooltips(true)
+      .showValues(true)
+
+
+  d3.select('#chart1 svg')
+      .datum(historicalBarChart)
+    .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+</script>
+</body>
\ No newline at end of file
diff --git a/deprecated/discreteBarChartWithEnabledTooltip.js b/deprecated/discreteBarChartWithEnabledTooltip.js
new file mode 100644
index 0000000..d4465ca
--- /dev/null
+++ b/deprecated/discreteBarChartWithEnabledTooltip.js
@@ -0,0 +1,222 @@
+
+nv.models.discreteBarChart = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = null,
+      height = null,
+      color = d3.scale.category20().range(),
+      staggerLabels = false,
+      tooltips = true,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      };
+
+
+  var discretebar = nv.models.discreteBar(),
+      x = discretebar.xScale(),
+      y = discretebar.yScale(),
+      xAxis = nv.models.axis().scale(x).orient('bottom').highlightZero(false).showMaxMin(false),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  xAxis.tickFormat(function(d) { return d });
+  yAxis.tickFormat(d3.format(',.1f'));
+
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(discretebar.x()(e.point)),
+        y = yAxis.tickFormat()(discretebar.y()(e.point)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Grouped' },
+    { key: 'Stacked', disabled: true }
+  ];
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      discretebar
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var wrap = container.selectAll('g.wrap.discreteBarWithAxes').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 discreteBarWithAxes').append('g');
+      var defsEnter = gEnter.append('defs');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'barsWrap');
+
+
+
+      var g = wrap.select('g');
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      var barsWrap = g.select('.barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(barsWrap).call(discretebar);
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'x-label-clip-' + discretebar.id())
+        .append('rect')
+
+      g.select('#x-label-clip-' + discretebar.id() + ' rect')
+          .attr('width', x.rangeBand() * (staggerLabels ? 2 : 1))
+          .attr('height', 16)
+          .attr('x', -x.rangeBand() / (staggerLabels ? 1 : 2 ));
+
+      /*
+      var evenLabelClips = defsEnter.append('clipPath')
+          .attr('id', 'x-label-clip-even-' + discretebar.id())
+        .selectAll('rect')
+          .data(function(d) { return d[0].values.filter(function(d,i) { return i % 2 === 0 }) });
+
+      evenLabelClips.enter().append('rect')
+            .attr('width', x.rangeBand())
+            .attr('height', 32)
+            .attr('y', y.range()[0])
+            .attr('x', function(d,i) { return x(discretebar.x()(d,i)) });
+
+      var oddLabelClips = defsEnter.append('clipPath')
+          .attr('id', 'x-label-clip-odd-' + discretebar.id())
+        .selectAll('rect')
+          .data(function(d) { return d[0].values.filter(function(d,i) { return i % 2 === 1 }) });
+
+      oddLabelClips.enter().append('rect')
+            .attr('width', x.rangeBand())
+            .attr('height', 16)
+            .attr('y', y.range()[0] + 16 + (staggerLabels ? 12: 0))
+            .attr('x', function(d,i) { return x(discretebar.x()(d,i)) });
+            */
+
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + (y.range()[0] + (discretebar.showValues() ? 16 : 0)) + ')')
+      //d3.transition(g.select('.x.axis'))
+      g.select('.x.axis').transition().duration(0)
+          .call(xAxis);
+
+
+      var xTicks = g.select('.x.axis').selectAll('g');
+
+      if (staggerLabels)
+        xTicks
+            .selectAll('text')
+            .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '0' : '12') + ')' })
+
+      xTicks
+          .selectAll('text')
+          .attr('clip-path', function(d,i,j) { return 'url(#x-label-clip-' + discretebar.id() + ')' });
+
+
+      yAxis
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+      discretebar.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+      if (tooltips) dispatch.on('tooltipShow', function(e) { showTooltip(e, that.parentNode) } ); // TODO: maybe merge with above?
+
+      discretebar.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+      if (tooltips) dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+      //TODO: decide if this makes sense to add into all the models for ease of updating (updating without needing the selection)
+      chart.update = function() { selection.transition().call(chart); };
+      chart.container = this; // I need a reference to the container in order to have outside code check if the chart is visible or not
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.discretebar = discretebar; // really just makign the accessible for discretebar.dispatch, may rethink slightly
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, discretebar, 'x', 'y', 'xDomain', 'yDomain', 'forceX', 'forceY', 'id', 'showValues', 'valueFormat');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    discretebar.color(_);
+    return chart;
+  };
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/discreteBarWithAxes.html b/deprecated/discreteBarWithAxes.html
new file mode 100644
index 0000000..fc7ef62
--- /dev/null
+++ b/deprecated/discreteBarWithAxes.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/discreteBar.js"></script>
+<script src="../src/models/discreteBarWithAxes.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+
+
+historicalBarChart = [ 
+  {
+    key: "Cumulative Return",
+    values: [
+      { 
+        "label" : "CDS / Options" ,
+        "value" : -29.765957771107
+      } , 
+      { 
+        "label" : "Cash" , 
+        "value" : 0
+      } , 
+      { 
+        "label" : "Corporate Bonds" , 
+        "value" : 32.807804682612
+      } , 
+      { 
+        "label" : "Equity" , 
+        "value" : 196.45946739256
+      } , 
+      { 
+        "label" : "Index Futures" ,
+        "value" : 0.19434030906893
+      } , 
+      { 
+        "label" : "Options" , 
+        "value" : -98.079782601442
+      } , 
+      { 
+        "label" : "Preferred" , 
+        "value" : -13.925743130903
+      } , 
+      { 
+        "label" : "Not Available" , 
+        "value" : -5.1387322875705
+      }
+    ]
+  }
+];
+ 
+
+
+
+
+
+var selector = '#chart1',
+    chart = nv.models.discreteBarWithAxes()
+              .color(d3.scale.category10().range())
+              .x(function(d) { return d.label })
+              .y(function(d) { return d.value }),
+    data = historicalBarChart,
+    xTickFormat = function(d) { return d },
+    yTickFormat = d3.format(',.2f'),
+    xAxisLabel = null,
+    yAxisLabel = null,
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg');
+
+    chart
+        .width(width)
+        .height(height)
+        .staggerLabels(true);
+
+    chart.xAxis
+        .tickFormat(xTickFormat);
+
+    chart.yAxis
+        .tickFormat(yTickFormat)
+        .axisLabel(yAxisLabel);
+
+    svg
+        .attr('width', width())
+        .attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function(e) {
+      var offsetElement = document.getElementById(selector.substr(1)),
+          left = e.pos[0] + offsetElement.offsetLeft,
+          top = e.pos[1] + offsetElement.offsetTop,
+          formatY = chart.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatX = chart.xAxis.tickFormat();
+
+      // uses the chart's getX and getY, you may customize if x position is not the same as the value you want
+      //   ex. daily data without weekends, x is the index, while you want the date
+      var content = '<h3>' + formatX(chart.x()(e.point))  + '</h3>' +
+                    '<p>' +
+                    formatY(chart.y()(e.point)) + 
+                    '</p>';
+
+      nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+    };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize= function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+        .transition().duration(duration)
+          .call(chart);
+
+/*
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+          .call(chart);
+*/
+    };
+  }
+});
+
+
+
+</script>
diff --git a/deprecated/discreteBarWithAxes.js b/deprecated/discreteBarWithAxes.js
new file mode 100644
index 0000000..558efaf
--- /dev/null
+++ b/deprecated/discreteBarWithAxes.js
@@ -0,0 +1,152 @@
+
+nv.models.discreteBarWithAxes = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = function() { return 960 },
+      height = function() { return 500 },
+      color = d3.scale.category20().range(),
+      staggerLabels = false;
+
+  var discretebar = nv.models.discreteBar(),
+      x = discretebar.xScale(),
+      y = discretebar.yScale(),
+      xAxis = nv.models.axis().scale(x).orient('bottom').highlightZero(false),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Grouped' },
+    { key: 'Stacked', disabled: true }
+  ];
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width() - margin.left - margin.right,
+          availableHeight = height() - margin.top - margin.bottom;
+
+      var seriesData = data.filter(function(d) { return !d.disabled })
+          .map(function(d) { 
+            return d.values.map(function(d,i) {
+              return { x: discretebar.x()(d,i), y: discretebar.y()(d,i) }
+            })
+          });
+
+
+
+      discretebar
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.discreteBarWithAxes').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 discreteBarWithAxes').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'barsWrap');
+
+
+
+      var g = wrap.select('g');
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      var barsWrap = g.select('.barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(barsWrap).call(discretebar);
+
+
+      xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+
+      var xTicks = g.select('.x.axis').selectAll('g');
+
+      if (staggerLabels)
+        xTicks
+            .selectAll('text')
+            .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '0' : '12') + ')' })
+
+          /*
+      xTicks.filter(function(d,i) {
+            return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+          })
+          .selectAll('line, text')
+          .style('opacity', 0)
+         */
+
+      yAxis
+        .scale(y)
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+      discretebar.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      discretebar.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, discretebar, 'x', 'y', 'xDomain', 'yDomain', 'forceX', 'forceY', 'clipEdge', 'id');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = d3.functor(_);
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    discretebar.color(_);
+    return chart;
+  };
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/lineChart-old.html b/deprecated/lineChart-old.html
new file mode 100644
index 0000000..84f0c70
--- /dev/null
+++ b/deprecated/lineChart-old.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<!-- including all the components so I don't have to minify every time I test in development -->
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithLegend.js"></script>
+<script src="../src/charts/lineChart.js"></script>
+<script>
+
+
+
+nv.charts.line()
+    .selector('#chart1')
+    .data(sinAndCos())
+    .y(function(d) { return d.voltage })
+    .yAxisLabel('Voltage (v)')
+    .build();
+
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [],
+      r1 = Math.random(),
+      r2 = Math.random();
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, voltage: r2 * Math.sin(i/10)});
+    cos.push({x: i, voltage: r1 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/lineChartDaily.html b/deprecated/lineChartDaily.html
new file mode 100644
index 0000000..2ef0954
--- /dev/null
+++ b/deprecated/lineChartDaily.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<!-- including all the components so I don't have to minify every time I test in development -->
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithLegend.js"></script>
+<script src="../src/charts/lineChartDaily.js"></script>
+<script>
+
+
+
+var cumulativeDailyTestData = [
+  {
+    key: "Actual Return" ,
+    values: [ [ 1317614400000 , -1.4475640131507] , [ 1317700800000 , -0.50785241139112] , [ 1317787200000 , 1.2232844878178] , [ 1317873600000 , 2.3277976069464] , [ 1317960000000 , 0.87828538009238] , [ 1318046400000 , 0.87828538009238] , [ 1318132800000 , 0.87828538009238] , [ 1318219200000 , 2.8821394715025] , [ 1318305600000 , 3.0600496997189] , [ 1318392000000 , 4.1615801183747] , [ 1318478400000 , 3.8560316339337] , [ 1318564800000 , 4.2624578565545] , [ 1318651200000 , 4.2624578565545] , [ 1318737600000 , 4.2624578565545] , [ 1318824000000 , 2.8760203477064] , [ 1318910400000 , 4.2802792900813] , [ 1318996800000 , 3.5644216125341] , [ 1319083200000 , 3.8267230522883] , [ 1319169600000 , 4.5897674196334] , [ 1319256000000 , 4.5897674196334] , [ 1319342400000 , 4.5897674196334] , [ 1319428800000 , 6.1435681595838] , [ 1319515200000 , 4.6773634913148] , [ 1319601600000 , 5.5686828861057] , [ 1319688000000 , 8.6510229437140] , [ 1319774400000 , 8.4035095885256] , [ 1319860800000 , 8.4035095885256] , [ 1319947200000 , 8.4035095885256] , [ 1320033600000 , 5.9304228949775] , [ 1320120000000 , 4.6694048881845] , [ 1320206400000 , 5.5755229192740] , [ 1320292800000 , 5.9596062543264] , [ 1320379200000 , 5.8750173069172] , [ 1320465600000 , 5.8750173069172] , [ 1320552000000 , 5.8750173069172] , [ 1320642000000 , 6.2705601567990] , [ 1320728400000 , 6.4422984536501] , [ 1320814800000 , 3.7696655204518] , [ 1320901200000 , 3.9256502879070] , [ 1320987600000 , 4.9896568610477] , [ 1321074000000 , 4.9896568610477] , [ 1321160400000 , 4.9896568610477] , [ 1321246800000 , 4.5101581898062] , [ 1321333200000 , 5.1852026589187] , [ 1321419600000 , 4.1412722333259] , [ 1321506000000 , 2.6646651357988] , [ 1321592400000 , 2.5391402402758] , [ 1321678800000 , 2.5391402402758] , [ 1321765200000 , 2.5391402402758] , [ 1321851600000 , 1.4480191418839] , [ 1321938000000 , 1.1851353770435] , [ 1322024400000 , -0.0110471601546] , [ 1322110800000 , -0.0110471601546] , [ 1322197200000 , -0.2607790366052] , [ 1322283600000 , -0.2607790366052] , [ 1322370000000 , -0.2607790366052] , [ 1322456400000 , -0.2993491727393] , [ 1322542800000 , -0.8721365094791] , [ 1322629200000 , 1.3826624677829] , [ 1322715600000 , 1.1413888639683] , [ 1322802000000 , 1.1916488459919] , [ 1322888400000 , 1.1916488459919] , [ 1322974800000 , 1.1916488459919] , [ 1323061200000 , 1.6640075295100] , [ 1323147600000 , 1.4333447279330] , [ 1323234000000 , 1.5756501095903] , [ 1323320400000 , 0.1566240837346] , [ 1323406800000 , 1.1957087351357] , [ 1323493200000 , 1.1957087351357] , [ 1323579600000 , 1.1957087351357] , [ 1323666000000 , 0.1529279857726] , [ 1323752400000 , -0.4379146622043] , [ 1323838800000 , -1.6307803651431] , [ 1323925200000 , -1.8097182178695] , [ 1324011600000 , -1.6612784009542] , [ 1324098000000 , -1.6612784009542] , [ 1324184400000 , -1.6612784009542] , [ 1324270800000 , -2.7123628804330] , [ 1324357200000 , -0.9156099608796] , [ 1324443600000 , -1.3441101479801] , [ 1324530000000 , -0.4285924644141] , [ 1324616400000 , 0.0289302220607] , [ 1324702800000 , 0.0289302220607] , [ 1324789200000 , 0.0289302220607] , [ 1324875600000 , 0.0289302220607] , [ 1324962000000 , -0.1680182906741] , [ 1325048400000 , -1.1735228321827] , [ 1325134800000 , -0.4819867447246] , [ 1325221200000 , -0.5667569440908] , [ 1325307600000 , -0.5667569440908] , [ 1325394000000 , -0.5667569440908] , [ 1325480400000 , -0.5667569440908] , [ 1325566800000 , 0.6031318427099] , [ 1325653200000 , 0.5247518205078] , [ 1325739600000 , 0.8575949798359] , [ 1325826000000 , 0.9983061584652] , [ 1325912400000 , 0.9983061584652] , [ 1325998800000 , 0.9983061584652] , [ 1326085200000 , 1.4032665222444] , [ 1326171600000 , 1.8976558759597] , [ 1326258000000 , 2.1532858156245] , [ 1326344400000 , 2.3864413393018] , [ 1326430800000 , 1.8718218939651] , [ 1326517200000 , 1.8718218939651] , [ 1326603600000 , 1.8718218939651] , [ 1326690000000 , 1.8718218939651] , [ 1326776400000 , 1.7604328445901] , [ 1326862800000 , 2.6068832572249] , [ 1326949200000 , 3.0615220945767] , [ 1327035600000 , 2.9348684033730] , [ 1327122000000 , 2.9348684033730] , [ 1327208400000 , 2.9348684033730] , [ 1327294800000 , 3.1172684824147] , [ 1327381200000 , 2.9842827363639] , [ 1327467600000 , 3.2794961257832] , [ 1327554000000 , 3.2797701308936] , [ 1327640400000 , 3.7651100285428] , [ 1327726800000 , 3.7651100285428] , [ 1327813200000 , 3.7651100285428] , [ 1327899600000 , 3.4448337693528] , [ 1327986000000 , 3.4404569794837] , [ 1328072400000 , 4.1401512200522] , [ 1328158800000 , 4.6727018946707] , [ 1328245200000 , 5.2867004865128] , [ 1328331600000 , 5.2867004865128] , [ 1328418000000 , 5.2867004865128] , [ 1328504400000 , 5.3018888374398] , [ 1328590800000 , 5.1280880489145] , [ 1328677200000 , 5.4871623117969] , [ 1328763600000 , 5.9003310858354] , [ 1328850000000 , 5.0814183419277] , [ 1328936400000 , 5.0814183419277] , [ 1329022800000 , 5.0814183419277] , [ 1329109200000 , 5.2642419624752] , [ 1329195600000 , 4.8821179791227] , [ 1329282000000 , 4.5757484771430] , [ 1329368400000 , 5.3842423229681] , [ 1329454800000 , 5.8228981100571] , [ 1329541200000 , 5.8228981100571] , [ 1329627600000 , 5.8228981100571] , [ 1329714000000 , 5.8228981100571] , [ 1329800400000 , 5.9363351939783] , [ 1329886800000 , 5.8228361646391] , [ 1329973200000 , 6.0558840413572] , [ 1330059600000 , 5.9445876811563] , [ 1330146000000 , 5.9445876811563] , [ 1330232400000 , 5.9445876811563] , [ 1330318800000 , 6.1681584877353] , [ 1330405200000 , 6.3035995639854] , [ 1330491600000 , 5.6363506399283]]
+  },
+  {
+    key: "Average Exposure Return" ,
+    values: [ [ 1317614400000 , -1.4090582224638] , [ 1317700800000 , -0.33947919866996] , [ 1317787200000 , 1.3209670502436] , [ 1317873600000 , 2.4188464341509] , [ 1317960000000 , 1.0255951936249] , [ 1318046400000 , 1.0255951936249] , [ 1318132800000 , 1.0255951936249] , [ 1318219200000 , 2.6899883270271] , [ 1318305600000 , 2.8018416928856] , [ 1318392000000 , 3.8403942243892] , [ 1318478400000 , 3.5468986968984] , [ 1318564800000 , 4.0243375950513] , [ 1318651200000 , 4.0243375950513] , [ 1318737600000 , 4.0243375950513] , [ 1318824000000 , 2.4581180602808] , [ 1318910400000 , 4.1316695396727] , [ 1318996800000 , 3.1991658519074] , [ 1319083200000 , 3.3754265861117] , [ 1319169600000 , 4.4804434889521] , [ 1319256000000 , 4.4804434889521] , [ 1319342400000 , 4.4804434889521] , [ 1319428800000 , 6.0509760703797] , [ 1319515200000 , 4.5220450819341] , [ 1319601600000 , 5.4035696887952] , [ 1319688000000 , 8.5378579094975] , [ 1319774400000 , 8.3016796632707] , [ 1319860800000 , 8.3016796632707] , [ 1319947200000 , 8.3016796632707] , [ 1320033600000 , 6.2091232673734] , [ 1320120000000 , 4.6685577522987] , [ 1320206400000 , 5.6873278908841] , [ 1320292800000 , 6.1826552943765] , [ 1320379200000 , 6.0959959548027] , [ 1320465600000 , 6.0959959548027] , [ 1320552000000 , 6.0959959548027] , [ 1320642000000 , 6.4745420383103] , [ 1320728400000 , 6.6925431963260] , [ 1320814800000 , 4.0430621035979] , [ 1320901200000 , 4.2956347789229] , [ 1320987600000 , 5.5492974385965] , [ 1321074000000 , 5.5492974385965] , [ 1321160400000 , 5.5492974385965] , [ 1321246800000 , 5.0642000641245] , [ 1321333200000 , 5.6666120553597] , [ 1321419600000 , 4.6202390103380] , [ 1321506000000 , 3.0124066565603] , [ 1321592400000 , 2.8681458220660] , [ 1321678800000 , 2.8681458220660] , [ 1321765200000 , 2.8681458220660] , [ 1321851600000 , 1.6604177140523] , [ 1321938000000 , 1.3391308252236] , [ 1322024400000 , -0.1027204753207] , [ 1322110800000 , -0.1027204753207] , [ 1322197200000 , -0.4062707232214] , [ 1322283600000 , -0.4062707232214] , [ 1322370000000 , -0.4062707232214] , [ 1322456400000 , 0.5651520529190] , [ 1322542800000 , 0.1114911016548] , [ 1322629200000 , 2.2135818365753] , [ 1322715600000 , 1.9445161544187] , [ 1322802000000 , 1.9427980090936] , [ 1322888400000 , 1.9427980090936] , [ 1322974800000 , 1.9427980090936] , [ 1323061200000 , 2.3501860364827] , [ 1323147600000 , 2.1136672636407] , [ 1323234000000 , 2.2418743103244] , [ 1323320400000 , 1.0064931140733] , [ 1323406800000 , 1.9661258515092] , [ 1323493200000 , 1.9661258515092] , [ 1323579600000 , 1.9661258515092] , [ 1323666000000 , 1.0175542221399] , [ 1323752400000 , 0.5024676440828] , [ 1323838800000 , -0.6545437495700] , [ 1323925200000 , -0.8689652158149] , [ 1324011600000 , -0.7645004652824] , [ 1324098000000 , -0.7645004652824] , [ 1324184400000 , -0.7645004652824] , [ 1324270800000 , -1.7880862317039] , [ 1324357200000 , -0.1461682112898] , [ 1324443600000 , -0.5871487877962] , [ 1324530000000 , 0.2867400066741] , [ 1324616400000 , 0.7000618003773] , [ 1324702800000 , 0.7000618003773] , [ 1324789200000 , 0.7000618003773] , [ 1324875600000 , 0.7000618003773] , [ 1324962000000 , 0.4859463316191] , [ 1325048400000 , -0.4119526235861] , [ 1325134800000 , 0.2230991860845] , [ 1325221200000 , 0.1595400012524] , [ 1325307600000 , 0.1595400012524] , [ 1325394000000 , 0.1595400012524] , [ 1325480400000 , 0.1595400012524] , [ 1325566800000 , 1.2638744291023] , [ 1325653200000 , 1.1480591676914] , [ 1325739600000 , 1.4876618741657] , [ 1325826000000 , 1.6476476765120] , [ 1325912400000 , 1.6476476765120] , [ 1325998800000 , 1.6476476765120] , [ 1326085200000 , 2.1063050593731] , [ 1326171600000 , 2.5653649043989] , [ 1326258000000 , 2.8466857983576] , [ 1326344400000 , 3.0747141460071] , [ 1326430800000 , 2.4992620202541] , [ 1326517200000 , 2.4992620202541] , [ 1326603600000 , 2.4992620202541] , [ 1326690000000 , 2.4992620202541] , [ 1326776400000 , 2.2880782376570] , [ 1326862800000 , 3.1353436274553] , [ 1326949200000 , 3.5677616820370] , [ 1327035600000 , 3.5059469003623] , [ 1327122000000 , 3.5059469003623] , [ 1327208400000 , 3.5059469003623] , [ 1327294800000 , 3.6741640726128] , [ 1327381200000 , 3.5476135299444] , [ 1327467600000 , 3.8207752112587] , [ 1327554000000 , 3.8616315638872] , [ 1327640400000 , 4.3254831376284] , [ 1327726800000 , 4.3254831376284] , [ 1327813200000 , 4.3254831376284] , [ 1327899600000 , 4.0133484282063] , [ 1327986000000 , 4.0086992762233] , [ 1328072400000 , 4.6741072621578] , [ 1328158800000 , 5.1853600238372] , [ 1328245200000 , 5.7164828688020] , [ 1328331600000 , 5.7164828688020] , [ 1328418000000 , 5.7164828688020] , [ 1328504400000 , 5.7706486616140] , [ 1328590800000 , 5.5821721041319] , [ 1328677200000 , 5.9281978759001] , [ 1328763600000 , 6.3202608081270] , [ 1328850000000 , 5.4952215782126] , [ 1328936400000 , 5.4952215782126] , [ 1329022800000 , 5.4952215782126] , [ 1329109200000 , 5.6378737590063] , [ 1329195600000 , 5.2228974160623] , [ 1329282000000 , 4.8974412407240] , [ 1329368400000 , 5.7203603398934] , [ 1329454800000 , 6.1518150836713] , [ 1329541200000 , 6.1518150836713] , [ 1329627600000 , 6.1518150836713] , [ 1329714000000 , 6.1518150836713] , [ 1329800400000 , 6.2799444735621] , [ 1329886800000 , 6.1985966532271] , [ 1329973200000 , 6.3441512518544] , [ 1330059600000 , 6.2162658382840] , [ 1330146000000 , 6.2162658382840] , [ 1330232400000 , 6.2162658382840] , [ 1330318800000 , 6.4153940933982] , [ 1330405200000 , 6.5112028076997] , [ 1330491600000 , 5.8186218494908]]
+  }
+].map(function(line) {
+  line.values = line.values.map(function(d) { return {x: d[0], y: d[1]/100  }})
+                           .filter(function(d) { 
+                             var day = (new Date(d.x)).getDay();
+                             return day != 0 && day != 6; //get rid of weekends for this example
+                            });
+  return line;
+});
+
+
+
+
+
+
+
+
+
+
+nv.charts.lineChartDaily()
+    .selector('#chart1')
+    //.data(sinAndCos())
+    .data(cumulativeDailyTestData)
+    .build();
+
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [],
+      r1 = Math.random(),
+      r2 = Math.random();
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, voltage: r2 * Math.sin(i/10)});
+    cos.push({x: i, voltage: r1 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/linePlusBar.html b/deprecated/linePlusBar.html
new file mode 100644
index 0000000..a64ec4b
--- /dev/null
+++ b/deprecated/linePlusBar.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/linePlusBar.js"></script>
+<script>
+
+
+
+var valueVsQuantity = [ 
+  { 
+    "key" : "Quantity" , 
+    "bar": true,
+    "values" : [ [ 1136005200000 , 1271000.0] , [ 1138683600000 , 1271000.0] , [ 1141102800000 , 1271000.0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 3899486.0] , [ 1162270800000 , 3899486.0] , [ 1164862800000 , 3899486.0] , [ 1167541200000 , 3564700.0] , [ 1170219600000 , 3564700.0] , [ 1172638800000 , 3564700.0] , [ 1175313600000 , 2648493.0] , [ 1177905600000 , 2648493.0] , [ 1180584000000 , 2648493.0] , [ 1183176000000 , 2522993.0] , [ 1185854400000 , 2522993.0] , [ 1188532800000 , 2522993.0] , [ 1191124800000 , 2906501.0] , [ 1193803200000 , 2906501.0] , [ 1196398800000 , 2906501.0] , [ 1199077200000 , 2206761.0] , [ 1201755600000 , 2206761.0] , [ 1204261200000 , 2206761.0] , [ 1206936000000 , 2287726.0] , [ 1209528000000 , 2287726.0] , [ 1212206400000 , 2287726.0] , [ 1214798400000 , 2732646.0] , [ 1217476800000 , 2732646.0] , [ 1220155200000 , 2732646.0] , [ 1222747200000 , 2599196.0] , [ 1225425600000 , 2599196.0] , [ 1228021200000 , 2599196.0] , [ 1230699600000 , 1924387.0] , [ 1233378000000 , 1924387.0] , [ 1235797200000 , 1924387.0] , [ 1238472000000 , 1756311.0] , [ 1241064000000 , 1756311.0] , [ 1243742400000 , 1756311.0] , [ 1246334400000 , 1743470.0] , [ 1249012800000 , 1743470.0] , [ 1251691200000 , 1743470.0] , [ 1254283200000 , 1519010.0] , [ 1256961600000 , 1519010.0] , [ 1259557200000 , 1519010.0] , [ 1262235600000 , 1591444.0] , [ 1264914000000 , 1591444.0] , [ 1267333200000 , 1591444.0] , [ 1270008000000 , 1543784.0] , [ 1272600000000 , 1543784.0] , [ 1275278400000 , 1543784.0] , [ 1277870400000 , 1309915.0] , [ 1280548800000 , 1309915.0] , [ 1283227200000 , 1309915.0] , [ 1285819200000 , 1331875.0] , [ 1288497600000 , 1331875.0] , [ 1291093200000 , 1331875.0] , [ 1293771600000 , 1331875.0] , [ 1296450000000 , 1154695.0] , [ 1298869200000 , 1154695.0] , [ 1301544000000 , 1194025.0] , [ 1304136000000 , 1194025.0] , [ 1306814400000 , 1194025.0] , [ 1309406400000 , 1194025.0] , [ 1312084800000 , 1194025.0] , [ 1314763200000 , 1244525.0] , [ 1317355200000 , 475000.0] , [ 1320033600000 , 475000.0] , [ 1322629200000 , 475000.0] , [ 1325307600000 , 690033.0] , [ 1327986000000 , 690033.0] , [ 1330491600000 , 690033.0] , [ 1333166400000 , 514733.0] , [ 1335758400000 , 514733.0]]
+  } , 
+
+  { 
+    "key" : "Price" , 
+    "values" : [ [ 1136005200000 , 71.89] , [ 1138683600000 , 75.51] , [ 1141102800000 , 68.49] , [ 1143781200000 , 62.72] , [ 1146369600000 , 70.39] , [ 1149048000000 , 59.77] , [ 1151640000000 , 57.27] , [ 1154318400000 , 67.96] , [ 1156996800000 , 67.85] , [ 1159588800000 , 76.98] , [ 1162270800000 , 81.08] , [ 1164862800000 , 91.66] , [ 1167541200000 , 84.84] , [ 1170219600000 , 85.73] , [ 1172638800000 , 84.61] , [ 1175313600000 , 92.91] , [ 1177905600000 , 99.8] , [ 1180584000000 , 121.191] , [ 1183176000000 , 122.04] , [ 1185854400000 , 131.76] , [ 1188532800000 , 138.48] , [ 1191124800000 , 153.47] , [ 1193803200000 , 189.95] , [ 1196398800000 , 182.22] , [ 1199077200000 , 198.08] , [ 1201755600000 , 135.36] , [ 1204261200000 , 125.02] , [ 1206936000000 , 143.5] , [ 1209528000000 , 173.95] , [ 1212206400000 , 188.75] , [ 1214798400000 , 167.44] , [ 1217476800000 , 158.95] , [ 1220155200000 , 169.53] , [ 1222747200000 , 113.66] , [ 1225425600000 , 107.59] , [ 1228021200000 , 92.67] , [ 1230699600000 , 85.35] , [ 1233378000000 , 90.13] , [ 1235797200000 , 89.31] , [ 1238472000000 , 105.12] , [ 1241064000000 , 125.83] , [ 1243742400000 , 135.81] , [ 1246334400000 , 142.43] , [ 1249012800000 , 163.39] , [ 1251691200000 , 168.21] , [ 1254283200000 , 185.35] , [ 1256961600000 , 188.5] , [ 1259557200000 , 199.91] , [ 1262235600000 , 210.732] , [ 1264914000000 , 192.063] , [ 1267333200000 , 204.62] , [ 1270008000000 , 235.0] , [ 1272600000000 , 261.09] , [ 1275278400000 , 256.88] , [ 1277870400000 , 251.53] , [ 1280548800000 , 257.25] , [ 1283227200000 , 243.1] , [ 1285819200000 , 283.75] , [ 1288497600000 , 300.98] , [ 1291093200000 , 311.15] , [ 1293771600000 , 322.56] , [ 1296450000000 , 339.32] , [ 1298869200000 , 353.21] , [ 1301544000000 , 348.5075] , [ 1304136000000 , 350.13] , [ 1306814400000 , 347.83] , [ 1309406400000 , 335.67] , [ 1312084800000 , 390.48] , [ 1314763200000 , 384.83] , [ 1317355200000 , 381.32] , [ 1320033600000 , 404.78] , [ 1322629200000 , 382.2] , [ 1325307600000 , 405.0] , [ 1327986000000 , 456.48] , [ 1330491600000 , 542.44] , [ 1333166400000 , 599.55] , [ 1335758400000 , 583.98]]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
+  return series;
+}); 
+
+
+
+
+
+var selector = '#chart1',
+    chart = nv.models.linePlusBar(),
+    //data = sinAndCos(),
+    data = valueVsQuantity,
+    xTickFormat = d3.format(',r'),
+    y1TickFormat = d3.format(',f'),
+    y2TickFormat = function(d) { return '$' + d3.format(',f')(d) },
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg');
+
+    chart
+        .x(function(d,i) { return i })
+        .width(width)
+        .height(height)
+        .color(d3.scale.category10().range());
+
+    chart.xAxis.tickFormat(function(d) {
+      var dx = data[0].values[d] && data[0].values[d].x || 0;
+      return d3.time.format('%x')(new Date(dx))
+      //return d3.time.format('%x')(new Date(data[0].values[d].x))
+    });
+
+    chart.yAxis1
+        .tickFormat(y1TickFormat)
+    chart.yAxis2
+        .tickFormat(y2TickFormat)
+
+    chart.bars.forceY([0]);
+    //chart.lines.forceY([0]);
+
+    svg
+        .attr('width', width())
+        .attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function(e) {
+      var offsetElement = document.getElementById(selector.substr(1)),
+          left = e.pos[0] + offsetElement.offsetLeft,
+          top = e.pos[1] + offsetElement.offsetTop,
+          formatY1 = chart.yAxis1.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatY2 = chart.yAxis2.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatX = chart.xAxis.tickFormat(),
+          x = formatX(chart.x()(e, e.pointIndex)),
+          y = e.series.bar ? formatY1(chart.y()(e.point)) : formatY2(chart.y()(e.point));
+
+
+
+      // uses the chart's getX and getY, you may customize if x position is not the same as the value you want
+      //   ex. daily data without weekends, x is the index, while you want the date
+      var content = '<h3>' + e.series.key.replace(/\s*\(.*\)/, '') + '</h3>' + //removing the (left/right axis) note from series label in tooltip
+                    '<p>' +
+                    y + ' at ' + x +
+                    '</p>';
+
+                    nv.tooltip.show([left, top], content, chart.y()(e.point) < 0 ? 'n' : 's' );
+    };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize= function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+          .call(chart);
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10) + 1});
+    cos.push({x: i, y: .5 * Math.cos(i/10) + .5});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      bar: true
+    },
+    {
+      values: cos,
+      key: "Cosine Wave"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/linePlusBar.js b/deprecated/linePlusBar.js
new file mode 100644
index 0000000..c5c690a
--- /dev/null
+++ b/deprecated/linePlusBar.js
@@ -0,0 +1,250 @@
+
+nv.models.linePlusBar = function() {
+  var margin = {top: 30, right: 60, bottom: 50, left: 60},
+      getWidth = function() { return 960 },
+      getHeight = function() { return 500 },
+      dotRadius = function() { return 2.5 },
+      getX = function(d) { return d.x },
+      getY = function(d) { return d.y },
+      color = d3.scale.category20().range(),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  var x = d3.scale.linear(),
+      y1 = d3.scale.linear(),
+      y2 = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis1 = nv.models.axis().scale(y1).orient('left'),
+      yAxis2 = nv.models.axis().scale(y2).orient('right'),
+      legend = nv.models.legend().height(30),
+      lines = nv.models.line(),
+      bars = nv.models.historicalBar();
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var width = getWidth(),
+          height = getHeight(),
+          availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom;
+
+      var series1 = data.filter(function(d) { return !d.disabled && d.bar })
+            .map(function(d) { 
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i) }
+              })
+            });
+
+      var series2 = data.filter(function(d) { return !d.disabled && !d.bar })
+            .map(function(d) { 
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i) }
+              })
+            });
+
+      x   .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      y1  .domain(d3.extent(d3.merge(series1), function(d) { return d.y } ))
+          .range([availableHeight, 0]);
+
+      y2  .domain(d3.extent(d3.merge(series2), function(d) { return d.y } ))
+          .range([availableHeight, 0]);
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }))
+
+      bars
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }))
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.linePlusBar').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 linePlusBar').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y1 axis');
+      gEnter.append('g').attr('class', 'y2 axis');
+      gEnter.append('g').attr('class', 'barsWrap');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+
+      legend.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+
+      lines.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+      });
+
+      lines.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+
+
+      bars.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      bars.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height();
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      legend.width(width/2 - margin.right);
+
+      g.select('.legendWrap')
+          .datum(data.map(function(series) { 
+            series.key = series.key + (series.bar ? ' (left axis)' : ' (right axis)');
+            return series;
+          }))
+          .attr('transform', 'translate(' + (width/2 - margin.left) + ',' + (-margin.top) +')')
+          .call(legend);
+
+
+      var barsData = data.filter(function(d) { return !d.disabled && d.bar });
+
+      var barsWrap = g.select('.barsWrap')
+          .datum(barsData.length ? barsData : [{values:[]}])
+          //.datum(data.filter(function(d) { return !d.disabled && d.bar }))
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled && !d.bar }))
+
+
+      d3.transition(barsWrap).call(bars);
+      d3.transition(linesWrap).call(lines);
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y1.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis1
+        .domain(y1.domain())
+        .range(y1.range())
+        .ticks( height / 36 )
+        .tickSize(-availableWidth, 0);
+
+      d3.transition(g.select('.y1.axis'))
+          .call(yAxis1);
+
+      yAxis2
+        .domain(y2.domain())
+        .range(y2.range())
+        .ticks( height / 36 )
+        .tickSize(series1.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+      g.select('.y2.axis')
+          .attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+      d3.transition(g.select('.y2.axis'))
+          .call(yAxis2);
+
+    });
+
+    return chart;
+  }
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.bars = bars;
+  chart.xAxis = xAxis;
+  chart.yAxis1 = yAxis1;
+  chart.yAxis2 = yAxis2;
+
+  //d3.rebind(chart, lines, 'interactive');
+  //consider rebinding x and y as well
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    bars.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    bars.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return getWidth;
+    getWidth = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return getHeight;
+    getHeight = d3.functor(_);
+    return chart;
+  };
+
+  chart.dotRadius = function(_) {
+    if (!arguments.length) return dotRadius;
+    dotRadius = d3.functor(_);
+    lines.dotRadius = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  return chart;
+}
diff --git a/deprecated/lineWithFocus.html b/deprecated/lineWithFocus.html
new file mode 100644
index 0000000..c845bcf
--- /dev/null
+++ b/deprecated/lineWithFocus.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+  <div id="test1">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFocus.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+  var test_data = stream_layers(3,128,.1).map(function(data, i) {
+    return { 
+      key: 'Stream' + i,
+      values: data
+    };
+  });
+
+nv.addGraph({
+  generate: function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40;
+
+      var chart = nv.models.lineWithFocus()
+                .width(width)
+                .height(height)
+                .yTickFormat(d3.format('.2r'))
+                .xTickFormat(d3.format('.2r'))
+
+
+    var svg = d3.select('#test1 svg')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(test_data);
+
+    svg.transition().duration(500).call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+
+    graph.dispatch.on('tooltipShow', function(e) {
+        var offsetElement = document.getElementById("test1"),
+                left = e.pos[0] + offsetElement.offsetLeft,
+                top = e.pos[1] + offsetElement.offsetTop,
+                formatter = d3.format('.2r');
+
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatter(graph.y()(e.point)) + ', ' + formatter(graph.x()(e.point)) +
+                    '</p>';
+
+      nv.tooltip.show([left, top], content);
+    });
+
+    graph.dispatch.on('tooltipHide', function(e) {
+      nv.tooltip.cleanup();
+    });
+
+
+
+    window.onresize = function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40,
+        margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#test1 svg')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+
+      };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/lineWithFocus.js b/deprecated/lineWithFocus.js
new file mode 100644
index 0000000..e359fff
--- /dev/null
+++ b/deprecated/lineWithFocus.js
@@ -0,0 +1,354 @@
+
+nv.models.lineWithFocus = function() {
+  var margin  = {top: 30, right: 20, bottom: 30, left: 60},
+      margin2 = {top: 0, right: 20, bottom: 20, left: 60},
+      width = 960,
+      height = 500,
+      height1 = 400,
+      height2 = 100,
+      color = d3.scale.category20().range(),
+      getX = function(d) { return d.x },
+      getY = function(d) { return d.y },
+      id = Math.floor(Math.random() * 10000); //Create semi-unique ID incase user doesn't select one
+
+  var x = d3.scale.linear(),
+      y = d3.scale.linear(),
+      x2 = d3.scale.linear(),
+      y2 = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      xAxis2 = nv.models.axis().scale(x2).orient('bottom'),
+      yAxis2 = nv.models.axis().scale(y2).orient('left'),
+      legend = nv.models.legend().height(30),
+      focus = nv.models.line().clipEdge(true),
+      context = nv.models.line().interactive(false),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
+      brush = d3.svg.brush()
+            .x(x2);
+
+
+  //var wrap, gEnter, g, focus, focusLines, contextWrap, focusWrap, contextLines;  //brought all variables to this scope for use within brush function... is this a bad idea?
+
+  //var seriesData;  //Temporarily bringing this data to this scope.... may be bad idea (same with above).. may need to rethink brushing
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var seriesData = data.filter(function(d) { return !d.disabled })
+            .map(function(d) { return d.values }),
+          availableWidth = width - margin.left - margin.right,
+          availableHeight1 = height1 - margin.top - margin.bottom,
+          availableHeight2 = height2 - margin2.top - margin2.bottom;
+
+      x2  .domain(d3.extent(d3.merge(seriesData), getX ))
+          .range([0, availableWidth]);
+      y2  .domain(d3.extent(d3.merge(seriesData), getY ))
+          .range([availableHeight2, 0]);
+
+      x   .domain(brush.empty() ? x2.domain() : brush.extent())
+          .range([0, availableWidth]);
+      y   .domain(y2.domain())
+          .range([availableHeight1, 0]);
+
+      brush.on('brush', onBrush);
+
+      focus
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+      context
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      updateFocus();
+
+
+      var wrap = d3.select(this).selectAll('g.wrap').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 lineWithFocus').append('g');
+
+      gEnter.append('g').attr('class', 'focus');
+      gEnter.append('g').attr('class', 'context');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+
+
+      var g = wrap.select('g')
+          //.attr('transform', 'translate(0,0)');
+
+
+
+
+      // ********** LEGEND **********
+
+      legend.width(width/2 - margin.right);
+
+      g.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (availableWidth / 2) + ',0)')
+          .call(legend);
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height();
+
+
+
+
+      // ********** FOCUS **********
+
+      var focusWrap = g.select('.focus')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      gEnter.select('.focus').append('g').attr('class', 'x axis');
+      gEnter.select('.focus').append('g').attr('class', 'y axis');
+      gEnter.select('.focus').append('g').attr('class', 'focusLines');
+
+
+      var focusLines = focusWrap.select('.focusLines')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(focusLines).call(focus);
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-(availableHeight1), 0);
+
+      focusWrap.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( height / 36 )
+        .tickSize(-(availableWidth), 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+      // ********** CONTEXT **********
+
+      var contextWrap = g.select('.context')
+          .attr('transform', 'translate(' + margin2.left + ',' + height1 + ')');
+
+      gEnter.select('.context').append('g').attr('class', 'x2 axis');
+      gEnter.select('.context').append('g').attr('class', 'y2 axis');
+      gEnter.select('.context').append('g').attr('class', 'contextLines');
+      gEnter.select('.context').append('g').attr('class', 'x brush')
+          .attr('class', 'x brush')
+          .call(brush)
+        .selectAll('rect')
+          .attr('y', -5)
+          .attr('height', height2 + 4);
+
+      var contextLines = contextWrap.select('.contextLines')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(contextLines).call(context);
+
+
+      xAxis2
+        .domain(x2.domain())
+        .range(x2.range())
+        .ticks( width / 100 )
+        .tickSize(-(availableHeight2), 0);
+
+      contextWrap.select('.x2.axis')
+          .attr('transform', 'translate(0,' + y2.range()[0] + ')');
+      d3.transition(contextWrap.select('.x2.axis'))
+          .call(xAxis2);
+
+
+      yAxis2
+        .domain(y2.domain())
+        .range(y2.range())
+        .ticks( availableHeight2 / 24 )
+        .tickSize(-(availableWidth), 0);
+
+      contextWrap.select('.y2.axis');
+
+      d3.transition(contextWrap.select('.y2.axis'))
+          .call(yAxis2);
+
+
+
+
+
+
+      // ********** EVENT LISTENERS **********
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+/*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+*/
+
+      focus.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+      });
+      focus.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+
+
+
+
+      function onBrush() {
+        updateFocus();
+
+        focusLines.call(focus)
+        wrap.select('.x.axis').call(xAxis);
+        wrap.select('.y.axis').call(yAxis);
+      }
+
+      function updateFocus() {
+        var yDomain = brush.empty() ? y2.domain() : d3.extent(d3.merge(seriesData).filter(function(d) {
+          return getX(d) >= brush.extent()[0] && getX(d) <= brush.extent()[1];
+        }), getY);  //This doesn't account for the 1 point before and the 1 point after the domain.  Would fix, but likely need to change entire methodology here
+
+        if (typeof yDomain[0] == 'undefined') yDomain = y2.domain(); //incase the brush doesn't cover a single point
+
+
+        x.domain(brush.empty() ? x2.domain() : brush.extent());
+        y.domain(yDomain);
+
+        //TODO: Rethink this... performance is horrible, likely need to cut off focus data to within the range
+        //      If I limit the data for focusLines would want to include 1 point before and after the extent,
+        //      Need to figure out an optimized way to accomplish this.
+        //      ***One concern is to try not to make the assumption that all lines are of the same length, and
+        //         points with the same index have the same x value (while this is true in our test cases, may 
+        //         not always be)
+        
+        focus.xDomain(x.domain());
+        focus.yDomain(y.domain());
+      }
+
+
+    });
+
+    return chart;
+  }
+
+
+
+  // ********** FUNCTIONS **********
+
+
+
+
+  // ********** PUBLIC ACCESSORS **********
+
+  chart.dispatch = dispatch;
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    focus.x(_);
+    context.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    focus.y(_);
+    context.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    height1 =  _ - height2;
+    return chart;
+  };
+
+  chart.contextHeight = function(_) {
+    if (!arguments.length) return height2;
+    height2 = _;
+    height1 = height - _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+
+  // Chart has multiple similar Axes, to prevent code duplication, probably need to link all axis functions manually like below
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return x.tickFormat();
+    xAxis.tickFormat(_);
+    xAxis2.tickFormat(_);
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return y.tickFormat();
+    yAxis.tickFormat(_);
+    yAxis2.tickFormat(_);
+    return chart;
+  };
+
+
+
+  //TODO: allow for both focus and context axes to be linked
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+
+  return chart;
+}
diff --git a/deprecated/lineWithFourAxes.html b/deprecated/lineWithFourAxes.html
new file mode 100644
index 0000000..736b571
--- /dev/null
+++ b/deprecated/lineWithFourAxes.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFourAxes.js"></script>
+<script>
+
+/************
+ * Considering making an nv.charts object which will contain abstractions similar to the one below, 
+ *     but with the usual d3 reusable style.
+ * I could make this abstraction inside the layer above, but this layer incorporates some jQuery, so
+ *     thinking nv.charts can be the glue that's not 100% d3
+ ************/
+
+var selector = '#chart1',
+    chart = nv.models.lineWithLegend(),
+    data = sinAndCos(),
+    xTickFormat = d3.format(',r'),
+    yTickFormat = d3.format(',.2f'),
+    xAxisLabel = null,
+    yAxisLabel = 'Voltage (v)',
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg');
+
+    chart
+        .width(width)
+        .height(height)
+
+    chart.xAxis
+        .tickFormat(xTickFormat);
+
+    chart.yAxis
+        .tickFormat(yTickFormat)
+        .axisLabel(yAxisLabel);
+
+    svg
+        .attr('width', width())
+        .attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function(e) {
+          var offsetElement = document.getElementById(selector.substr(1)),
+              left = e.pos[0] + offsetElement.offsetLeft,
+              top = e.pos[1] + offsetElement.offsetTop,
+              formatY = chart.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+              formatX = chart.xAxis.tickFormat();
+
+          // uses the chart's getX and getY, you may customize if x position is not the same as the value you want 
+          //   ex. daily data without weekends, x is the index, while you want the date
+          var content = '<h3>' + e.series.key + '</h3>' +
+                        '<p>' +
+                        formatY(chart.y()(e.point)) + ' at ' + formatX(chart.x()(e.point)) +
+                        '</p>';
+
+          nv.tooltip.show([left, top], content);
+        };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize =
+    function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+          .call(chart);
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/lineWithFourAxes.js b/deprecated/lineWithFourAxes.js
new file mode 100644
index 0000000..f42c773
--- /dev/null
+++ b/deprecated/lineWithFourAxes.js
@@ -0,0 +1,218 @@
+
+nv.models.lineWithLegend = function() {
+  var margin = {top: 60, right: 60, bottom: 40, left: 60},
+      getWidth = function() { return 960 },
+      getHeight = function() { return 500 },
+      dotRadius = function() { return 2.5 },
+      getX = function(d) { return d.x },
+      getY = function(d) { return d.y },
+      color = d3.scale.category20().range(),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  var x = d3.scale.linear(),
+      y = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      x2Axis = nv.models.axis().scale(x).orient('top'),
+      y2Axis = nv.models.axis().scale(y).orient('right'),
+      legend = nv.models.legend().height(30),
+      lines = nv.models.line();
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var width = getWidth(),
+          height = getHeight(),
+          availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom;
+
+      var series = data.filter(function(d) { return !d.disabled })
+            .map(function(d) { 
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i) }
+              })
+            });
+
+      x   .domain(d3.extent(d3.merge(series), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      y   .domain(d3.extent(d3.merge(series), function(d) { return d.y } ))
+          .range([availableHeight, 0]);
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var wrap = d3.select(this).selectAll('g.wrap').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 lineWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'x2 axis');
+      gEnter.append('g').attr('class', 'y2 axis');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+
+      legend.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+/*
+      //
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+*/
+
+      lines.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+      });
+
+      lines.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height() + 20; // 20 is for the x2 axis...  this should be done in a better place, but just doing this to show the 4 axes in an example
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      legend.width(width/2 - margin.right);
+
+      g.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (width/2 - margin.left) + ',' + (-margin.top) +')')
+          .call(legend);
+
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(linesWrap).call(lines);
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( height / 36 )
+        .tickSize(-availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+      x2Axis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-availableHeight, 0);
+
+      d3.transition(g.select('.x2.axis'))
+          .call(x2Axis);
+
+      y2Axis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( height / 36 )
+        .tickSize(-availableWidth, 0);
+
+      g.select('.y2.axis')
+          .attr('transform', 'translate('+ x.range()[1] + ',0)');
+      d3.transition(g.select('.y2.axis'))
+          .call(y2Axis);
+    });
+
+    return chart;
+  }
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, lines, 'interactive');
+  //consider rebinding x and y as well
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return getWidth;
+    getWidth = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return getHeight;
+    getHeight = d3.functor(_);
+    return chart;
+  };
+
+  chart.dotRadius = function(_) {
+    if (!arguments.length) return dotRadius;
+    dotRadius = d3.functor(_);
+    lines.dotRadius = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/lineWithLegend.html b/deprecated/lineWithLegend.html
new file mode 100644
index 0000000..9aa9fab
--- /dev/null
+++ b/deprecated/lineWithLegend.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithLegend.js"></script>
+<script>
+
+
+var selector = '#chart1',
+    chart = nv.models.lineWithLegend(),
+    data = sinAndCos(),
+    xTickFormat = d3.format(',r'),
+    yTickFormat = d3.format(',.2f'),
+    xAxisLabel = null,
+    yAxisLabel = 'Voltage (v)',
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg').style('height', '500px');
+
+    chart
+        //.width(width)
+        //.height(height);
+
+    chart.xAxis
+        .tickFormat(xTickFormat);
+
+    chart.yAxis
+        .tickFormat(yTickFormat)
+        .axisLabel(yAxisLabel);
+
+    svg
+        //.attr('width', width())
+        //.attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function(e) {
+      var offsetElement = document.getElementById(selector.substr(1)),
+          left = e.pos[0] + offsetElement.offsetLeft,
+          top = e.pos[1] + offsetElement.offsetTop,
+          formatY = chart.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatX = chart.xAxis.tickFormat();
+
+      // uses the chart's getX and getY, you may customize if x position is not the same as the value you want
+      //   ex. daily data without weekends, x is the index, while you want the date
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatY(chart.y()(e.point)) + ' at ' + formatX(chart.x()(e.point)) +
+                    '</p>';
+
+      nv.tooltip.show([left, top], content);
+    };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize= function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+      d3.select('#chart1 svg')
+          //.attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          //.attr('height', chart.height()())
+          .call(chart);
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/lineWithLegend.js b/deprecated/lineWithLegend.js
new file mode 100644
index 0000000..edd5aef
--- /dev/null
+++ b/deprecated/lineWithLegend.js
@@ -0,0 +1,176 @@
+
+nv.models.lineWithLegend = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      color = d3.scale.category20().range(),
+      width, height;
+
+  var lines = nv.models.line(),
+      //x = d3.scale.linear(),
+      //y = d3.scale.linear(),
+      x = lines.xScale(),
+      y = lines.yScale(),
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      legend = nv.models.legend().height(30),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+
+      var availableWidth = (width  || parseInt(d3.select(this).style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(d3.select(this).style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+            return d.color || color[i % 10];
+          }).filter(function(d,i) { return !data[i].disabled }));
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.lineWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 lineWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height();
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+
+      legend.width(availableWidth / 2);
+
+      g.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')')
+          .call(legend);
+
+
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(linesWrap).call(lines);
+
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+      legend.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+/*
+      //
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+*/
+
+      lines.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+      });
+
+      lines.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+    });
+
+
+    // If the legend changed the margin's height, need to recalc positions... should think of a better way to prevent duplicate work
+    if (margin.top != legend.height())
+      chart(selection);
+ 
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, lines, 'x', 'y', 'size', 'xDomain', 'yDomain', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    //width = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    //height = d3.functor(_);
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/monthendAxis.html b/deprecated/monthendAxis.html
new file mode 100644
index 0000000..fafd702
--- /dev/null
+++ b/deprecated/monthendAxis.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+</style>
+
+<body>
+
+
+  <script src="../lib/d3.v2.js"></script>
+  <script src="../nv.d3.js"></script>
+  <script>
+
+    function ilog(text) {
+      console.log(text);
+      return text;
+    }
+
+
+  function daysInMonth(month,year) {
+    var m = [31,28,31,30,31,30,31,31,30,31,30,31];
+    if (month != 2) return m[month - 1];
+    if (year%4 != 0) return m[1];
+    if (year%100 == 0 && year%400 != 0) return m[1];
+    return m[1] + 1;
+  }
+
+
+  function d3_time_range(floor, step, number) {
+    return function(t0, t1, dt) {
+      var time = floor(t0), times = [];
+      if (time < t0) step(time);
+      if (dt > 1) {
+        while (time < t1) {
+          var date = new Date(+time);
+          if (!(number(date) % dt)) times.push(date);
+          step(time);
+        }
+      } else {
+        while (time < t1) times.push(new Date(+time)), step(time);
+      }
+      return times;
+    };
+  }
+
+
+  d3.time.monthEnd = function(date) {
+    return new Date(date.getFullYear(), date.getMonth(), 0);
+  };
+
+
+  d3.time.monthEnds = d3_time_range(d3.time.monthEnd, function(date) {
+      date.setUTCDate(date.getUTCDate() + 1);
+      date.setDate(daysInMonth(date.getMonth() + 1, date.getFullYear()));
+    }, function(date) {
+      return date.getMonth();
+    }
+  );
+
+
+
+
+  var margin = {top: 10, right: 40, bottom: 40, left: 40},
+      width = 960 - margin.left - margin.right,
+      height = 80 - margin.top - margin.bottom;
+
+  var x = d3.time.scale()
+      .domain([new Date(2010, 0, 1), new Date(2011, 0, 1)])
+      .range([0, width]);
+
+  var xAxis = d3.svg.axis()
+      .scale(x)
+      .orient("bottom")
+      //.ticks(d3.time.months)
+      .ticks(d3.time.monthEnds)
+      //.tickSubdivide(3)
+      .tickSize(8, 4, 0)
+      .tickFormat(d3.time.format("%x"));
+      //.tickFormat(d3.time.format("%B"));
+
+  var svg = d3.select("body").append("svg")
+      .attr("width", width + margin.left + margin.right)
+      .attr("height", height + margin.top + margin.bottom)
+    .append("g")
+      .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+  svg.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + height + ")")
+      .call(xAxis)
+
+    .selectAll("text")
+      .attr("text-anchor", "middle")
+      //.attr("text-anchor", "start")
+      .attr("x", 0)
+      .attr("y", 12);
+
+  </script>
diff --git a/deprecated/multiBarHorizontalWithLegend.html b/deprecated/multiBarHorizontalWithLegend.html
new file mode 100644
index 0000000..297244e
--- /dev/null
+++ b/deprecated/multiBarHorizontalWithLegend.html
@@ -0,0 +1,258 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBarHorizontal.js"></script>
+<script src="../src/models/multiBarHorizontalWithLegend.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+var test_data = stream_layers(3,12,.1).map(function(data, i) {
+  return {
+    key: 'Stream' + i,
+    values: data
+  };
+});
+
+
+
+long_short_data = [ 
+  {
+    key: 'Short',
+    color: '#d62728',
+    values: [
+      { 
+        "label" : "Information Technology" ,
+        "y" : -1.8746444827653
+      } , 
+      { 
+        "label" : "Consumer Discretionary" ,
+        "y" : -8.0961543492239
+      } , 
+      { 
+        "label" : "Health Care" ,
+        "y" : -0.57072943117674
+      } , 
+      { 
+        "label" : "Consumer Staples" ,
+        "y" : -2.4174010336624
+      } , 
+      {
+        "label" : "Financials" ,
+        "y" : -0.72009071426284
+      } , 
+      { 
+        "label" : "Industrials" ,
+        "y" : -0.77154485523777
+      } , 
+      { 
+        "label" : "Energy" ,
+        "y" : -0.90152097798131
+      } , 
+      {
+        "label" : "Materials" , 
+        "y" : -0.91445417330854
+      } , 
+      { 
+        "label" : "Telecommunication Services" , 
+        "y" : -0.055746319141851
+      }
+    ]
+  },
+  {
+    key: 'Long',
+    color: '#1f77b4',
+    values: [
+      { 
+        "label" : "Information Technology" ,
+        "y" : 25.307646510375
+      } , 
+      { 
+        "label" : "Consumer Discretionary" ,
+        "y" : 16.756779544553
+      } , 
+      { 
+        "label" : "Health Care" ,
+        "y" : 18.451534877007
+      } , 
+      { 
+        "label" : "Consumer Staples" ,
+        "y" : 8.6142352811805
+      } , 
+      {
+        "label" : "Financials" ,
+        "y" : 7.8082472075876
+      } , 
+      { 
+        "label" : "Industrials" ,
+        "y" : 5.259101026956
+      } , 
+      { 
+        "label" : "Energy" ,
+        "y" : 0.30947953487127
+      } , 
+      { 
+        "label" : "Materials" ,
+        "y" : 0
+      } , 
+      { 
+        "label" : "Telecommunication Services" ,
+        "y" : 0 
+      }
+    ]
+  }
+];
+
+
+
+  var selector = '#chart1',
+  chart = nv.models.multiBarHorizontalWithLegend()
+            .x(function(d) { return d.label })
+            .margin({top: 30, right: 20, bottom: 50, left: 160})
+            .showControls(false),
+      data = long_short_data,
+      //data = test_data,
+      xTickFormat = function(d) { return d },
+      //xTickFormat = d3.format(',r'),
+      yTickFormat = d3.format(',.2f'),
+      xAxisLabel = null,
+      yAxisLabel = null,
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg');
+
+    chart
+        .width(width)
+        .height(height);
+
+    chart.xAxis
+        .tickFormat(xTickFormat);
+
+    chart.yAxis
+        .tickFormat(yTickFormat)
+        .axisLabel(yAxisLabel);
+
+    svg
+        .attr('width', width())
+        .attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function showTooltip(e) {
+      var offsetElement = document.getElementById(selector.substr(1)),
+          left = e.pos[0] + offsetElement.offsetLeft,
+          top = e.pos[1] + offsetElement.offsetTop,
+          formatY = chart.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatX = chart.xAxis.tickFormat();
+
+      // uses the chart's getX and getY, you may customize if x position is not the same as the value you want
+      //   ex. daily data without weekends, x is the index, while you want the date
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatX(chart.x()(e.point)) + ': ' + formatY(chart.y()(e.point)) +
+                    //formatY(chart.y()(e.point)) + ' at ' + formatX(chart.x()(e.point)) +
+                    '</p>';
+
+      var tooltip = nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w');
+
+      /*
+      if (!arguments[1]) {
+        tooltip.onmouseenter = function() { showTooltip(e, 1) }; //working on geting tooltips to stay if mouse hovers over them
+        //tooltip.onmouseout = function() { console.log('mouseout'); };
+        tooltip.onmouseout = nv.tooltip.cleanup;
+      }
+      */
+    };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize= function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+        .transition().duration(duration)
+          .call(chart);
+
+/*
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+          .call(chart);
+*/
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/multiBarHorizontalWithLegend.js b/deprecated/multiBarHorizontalWithLegend.js
new file mode 100644
index 0000000..ab2087b
--- /dev/null
+++ b/deprecated/multiBarHorizontalWithLegend.js
@@ -0,0 +1,226 @@
+
+nv.models.multiBarHorizontalWithLegend = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = function() { return 960 },
+      height = function() { return 500 },
+      color = d3.scale.category20().range(),
+      showControls = true;
+
+  //var x = d3.scale.linear(),
+  var x = d3.scale.ordinal(),
+      y = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('left').highlightZero(false),
+      yAxis = nv.models.axis().scale(y).orient('bottom'),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30),
+      multibar = nv.models.multiBarHorizontal().stacked(false),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Grouped' },
+    { key: 'Stacked', disabled: true },
+  ];
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width() - margin.left - margin.right,
+          availableHeight = height() - margin.top - margin.bottom,
+          seriesData;
+
+      if (multibar.stacked()) {
+        seriesData = data.filter(function(d) { return !d.disabled })
+          .reduce(function(prev, curr, index) {  //sum up all the y's
+              curr.values.forEach(function(d,i) {
+                if (!index) prev[i] = {x: multibar.x()(d,i), y:0};
+                prev[i].y += multibar.y()(d,i);
+              });
+              return prev;
+            }, []);
+      } else {
+        seriesData = data.filter(function(d) { return !d.disabled })
+          .map(function(d) { 
+            return d.values.map(function(d,i) {
+              return { x: multibar.x()(d,i), y: multibar.y()(d,i) }
+            })
+          });
+      }
+
+
+      x   .domain(d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands([0, availableHeight], .1);
+
+      y   .domain(d3.extent(d3.merge(seriesData).map(function(d) { return d.y }).concat(multibar.forceY) ))
+          .range([0, availableWidth]);
+
+      multibar
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 10];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+
+      var wrap = d3.select(this).selectAll('g.wrap').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 multiBarHorizontalWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'controlsWrap');
+
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      margin.top = legend.height();
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      legend.width(availableWidth / 2);
+
+      g.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')')
+          .call(legend);
+
+      if (showControls) {
+        controls.width(180).color(['#444', '#444', '#444']);
+        g.select('.controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(linesWrap).call(multibar);
+
+
+      xAxis
+        .scale(x)
+        .ticks( availableHeight / 24 )
+        .tickSize(-availableWidth, 0);
+
+      //g.select('.x.axis')
+          //.attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      var xTicks = g.select('.x.axis').selectAll('g');
+
+      xTicks
+          .selectAll('line, text')
+          .style('opacity', 1)
+
+      xTicks.filter(function(d,i) {
+            return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+          })
+          .selectAll('line, text')
+          .style('opacity', 0)
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( availableWidth / 100 )
+        .tickSize( -availableHeight, 0);
+
+      g.select('.y.axis')
+          .attr('transform', 'translate(0,' + availableHeight + ')');
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        selection.transition().call(chart);
+      });
+
+
+      multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'forceX', 'forceY', 'clipEdge', 'id');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = d3.functor(_);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/multiBarWithLegend.html b/deprecated/multiBarWithLegend.html
new file mode 100644
index 0000000..2942b9f
--- /dev/null
+++ b/deprecated/multiBarWithLegend.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBar.js"></script>
+<script src="../src/models/multiBarWithLegend.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+var test_data = stream_layers(3,Math.random()*200,.1).map(function(data, i) {
+  return {
+    key: 'Stream' + i,
+    values: data
+  };
+});
+
+
+
+
+
+
+
+
+var selector = '#chart1',
+    chart = nv.models.multiBarWithLegend(),
+              //.x(function(d) { return d.label })
+              //.y(function(d) { return d.value })
+    data = test_data,
+    xTickFormat = d3.format(',f'),
+    yTickFormat = d3.format(',.2f'),
+    xAxisLabel = null,
+    yAxisLabel = null,
+    duration = 500;
+
+nv.addGraph({
+  generate: function() {
+    var container = d3.select(selector),
+        width = function() { return parseInt(container.style('width')) },
+        height = function() { return parseInt(container.style('height')) },
+        svg = container.append('svg');
+
+    chart
+        .width(width)
+        .height(height);
+
+    chart.xAxis
+        .tickFormat(xTickFormat);
+
+    chart.yAxis
+        .tickFormat(yTickFormat)
+        .axisLabel(yAxisLabel);
+
+    svg
+        .attr('width', width())
+        .attr('height', height())
+        .datum(data)
+      .transition().duration(duration).call(chart);
+
+    return chart;
+  },
+  callback: function(chart) {
+    var showTooltip = function(e) {
+      var offsetElement = document.getElementById(selector.substr(1)),
+          left = e.pos[0] + offsetElement.offsetLeft,
+          top = e.pos[1] + offsetElement.offsetTop,
+          formatY = chart.yAxis.tickFormat(), //Assumes using same format as axis, can customize to show higher precision, etc.
+          formatX = chart.xAxis.tickFormat();
+
+      // uses the chart's getX and getY, you may customize if x position is not the same as the value you want
+      //   ex. daily data without weekends, x is the index, while you want the date
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatY(chart.y()(e.point)) + ' at ' + formatX(chart.x()(e.point)) +
+                    '</p>';
+
+      nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+    };
+
+    chart.dispatch.on('tooltipShow', showTooltip);
+    chart.dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+    window.onresize= function() {
+      // now that width and height are functions, should be automatic..of course you can always override them
+
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+        .transition().duration(duration)
+          .call(chart);
+
+/*
+      d3.select('#chart1 svg')
+          .attr('width', chart.width()()) //need to set SVG dimensions, chart is not aware of the SVG component
+          .attr('height', chart.height()())
+          .call(chart);
+*/
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/deprecated/multiBarWithLegend.js b/deprecated/multiBarWithLegend.js
new file mode 100644
index 0000000..2d3d406
--- /dev/null
+++ b/deprecated/multiBarWithLegend.js
@@ -0,0 +1,249 @@
+
+nv.models.multiBarWithLegend = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = function() { return 960 },
+      height = function() { return 500 },
+      color = d3.scale.category20().range(),
+      showControls = true,
+      showLegend = true;
+
+  //var x = d3.scale.linear(),
+  var x = d3.scale.ordinal(),
+      y = d3.scale.linear(),
+      xAxis = nv.models.axis().scale(x).orient('bottom').highlightZero(false),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30),
+      multibar = nv.models.multiBar().stacked(false),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Grouped' },
+    { key: 'Stacked', disabled: true }
+  ];
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width() - margin.left - margin.right,
+          availableHeight = height() - margin.top - margin.bottom,
+          seriesData;
+
+      if (multibar.stacked()) {
+        seriesData = data.filter(function(d) { return !d.disabled })
+          .reduce(function(prev, curr, index) {  //sum up all the y's
+              curr.values.forEach(function(d,i) {
+                if (!index) prev[i] = {x: multibar.x()(d,i), y:0};
+                prev[i].y += multibar.y()(d,i);
+              });
+              return prev;
+            }, []);
+      } else {
+        seriesData = data.filter(function(d) { return !d.disabled })
+          .map(function(d) { 
+            return d.values.map(function(d,i) {
+              return { x: multibar.x()(d,i), y: multibar.y()(d,i) }
+            })
+          });
+      }
+
+
+      //x   .domain(d3.extent(d3.merge(seriesData).map(function(d) { return d.x }).concat(multibar.forceX) ))
+          //.range([0, availableWidth]);
+
+      x   .domain(d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands([0, availableWidth], .1);
+          //.rangeRoundBands([0, availableWidth], .1);
+
+      y   .domain(d3.extent(d3.merge(seriesData).map(function(d) { return d.y }).concat(multibar.forceY) ))
+          .range([availableHeight, 0]);
+
+      multibar
+        .width(availableWidth)
+        .height(availableHeight)
+        //.xDomain(x.domain())
+        //.yDomain(y.domain())
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 20];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.multiBarWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 multiBarWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'linesWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'controlsWrap');
+
+
+
+      var g = wrap.select('g');
+
+
+      if (showLegend) {
+        //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+        margin.top = legend.height();
+
+        legend.width(availableWidth / 2);
+
+        g.select('.legendWrap')
+            .datum(data)
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')')
+            .call(legend);
+      }
+
+      if (showControls) {
+        controls.width(180).color(['#444', '#444', '#444']);
+        g.select('.controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      var linesWrap = g.select('.linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+
+      d3.transition(linesWrap).call(multibar);
+
+
+      xAxis
+        .scale(x)
+        //.domain(x.domain())
+        //.range(x.range())
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      var xTicks = g.select('.x.axis').selectAll('g');
+
+      xTicks
+          .selectAll('line, text')
+          .style('opacity', 1)
+
+      xTicks.filter(function(d,i) {
+            return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+          })
+          .selectAll('line, text')
+          .style('opacity', 0)
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        selection.transition().call(chart);
+      });
+
+
+      multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'forceX', 'forceY', 'clipEdge', 'id', 'stacked');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = d3.functor(_);
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/pie.js b/deprecated/pie.js
new file mode 100644
index 0000000..7c2f785
--- /dev/null
+++ b/deprecated/pie.js
@@ -0,0 +1,263 @@
+
+nv.models.pie = function() {
+  var margin = {top: 20, right: 20, bottom: 20, left: 20},
+      width = 500,
+      height = 500,
+      animate = 2000,
+      radius = Math.min(width-(margin.right+margin.left), height-(margin.top+margin.bottom)) / 2,
+      label ='label',
+      field ='y',
+      id = Math.floor(Math.random() * 10000), //Create semi-unique ID in case user doesn't select one
+      color = d3.scale.category20(),
+      showLabels = true,
+      donut = false,
+      title = '';
+
+      var lastWidth = 0,
+      lastHeight = 0;
+
+
+  var  dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'tooltipShow', 'tooltipHide');
+
+  function chart(selection) {
+    selection.each(function(data) {
+
+      var svg = d3.select(this)
+          .on("click", function(d,i) {
+              dispatch.chartClick({
+                  data: d,
+                  index: i,
+                  pos: d3.event,
+                  id: id
+              });
+          });
+
+
+
+        var background = svg.selectAll('svg.margin').data([data]);
+        var parent = background.enter();
+        parent.append("text")
+            .attr("class", "title")
+            .attr("dy", ".91em")
+            .attr("text-anchor", "start")
+            .text(title);
+        parent.append('svg')
+            .attr('class','margin')
+            .attr('x', margin.left)
+            .attr('y', margin.top)
+            .style('overflow','visible');
+
+        var wrap = background.selectAll('g.wrap').data([data]);
+        wrap.exit().remove();
+        var wEnter = wrap.enter();
+
+        wEnter
+          .append('g')
+            .attr('class', 'wrap')
+            .attr('id','wrap-'+id)
+          .append('g')
+            .attr('class', 'pie');
+
+
+
+        wrap
+            .attr('width', width) //-(margin.left+margin.right))
+            .attr('height', height) //-(margin.top+margin.bottom))
+            .attr("transform", "translate(" + radius + "," + radius + ")");
+
+
+
+
+        var arc = d3.svg.arc()
+          .outerRadius((radius-(radius / 5)));
+
+        if (donut) arc.innerRadius(radius / 2);
+
+
+      // Setup the Pie chart and choose the data element
+      var pie = d3.layout.pie()
+         .value(function (d) { return d[field]; });
+
+      var slices = background.select('.pie').selectAll(".slice")
+            .data(pie);
+
+          slices.exit().remove();
+
+        var ae = slices.enter().append("svg:g")
+              .attr("class", "slice")
+              .on('mouseover', function(d,i){
+                        d3.select(this).classed('hover', true);
+                        dispatch.tooltipShow({
+                            label: d.data[label],
+                            value: d.data[field],
+                            data: d.data,
+                            index: i,
+                            pos: [d3.event.pageX, d3.event.pageY],
+                            id: id
+                        });
+
+              })
+              .on('mouseout', function(d,i){
+                        d3.select(this).classed('hover', false);
+                        dispatch.tooltipHide({
+                            label: d.data[label],
+                            value: d.data[field],
+                            data: d.data,
+                            index: i,
+                            id: id
+                        });
+              })
+              .on('click', function(d,i) {
+                    dispatch.elementClick({
+                        label: d.data[label],
+                        value: d.data[field],
+                        data: d.data,
+                        index: i,
+                        pos: d3.event,
+                        id: id
+                    });
+                    d3.event.stopPropagation();
+              })
+              .on('dblclick', function(d,i) {
+                dispatch.elementDblClick({
+                    label: d.data[label],
+                    value: d.data[field],
+                    data: d.data,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+                 d3.event.stopPropagation();
+              });
+
+        var paths = ae.append("svg:path")
+            .attr('class','path')
+            .attr("fill", function(d, i) { return color(i); });
+            //.attr('d', arc);
+
+        slices.select('.path')
+            .attr('d', arc)
+            .transition()
+            .ease("bounce")
+            .duration(animate)
+            .attrTween("d", tweenPie);
+
+        if (showLabels) {
+            // This does the normal label
+            ae.append("text");
+
+            slices.select("text")
+              .transition()
+              .duration(animate)
+              .ease('bounce')
+              .attr("transform", function(d) {
+                 d.outerRadius = radius + 10; // Set Outer Coordinate
+                 d.innerRadius = radius + 15; // Set Inner Coordinate
+                 return "translate(" + arc.centroid(d) + ")";
+              })
+              .attr("text-anchor", "middle") //center the text on it's origin
+              .style("font", "bold 12px Arial")
+              .text(function(d, i) {  return d.data[label]; });
+        }
+
+
+        // Computes the angle of an arc, converting from radians to degrees.
+        function angle(d) {
+            var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
+            return a > 90 ? a - 180 : a;
+        }
+
+
+
+
+
+        function tweenPie(b) {
+            b.innerRadius = 0;
+            var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
+            return function(t) {
+                return arc(i(t));
+            };
+        }
+
+
+    });
+
+    return chart;
+  }
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    if (margin.left + margin.right + 20 > _) {
+      width = margin.left + margin.right + 20; // Min width
+    } else {
+      width = _;
+    }
+    radius = Math.min(width-(margin.left+margin.right), height-(margin.top+margin.bottom)) / 2;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    if (margin.top + margin.bottom + 20 > _) {
+      height = margin.top + margin.bottom + 20; // Min height
+    } else {
+      height = _;
+    }
+    radius = Math.min(width-(margin.left+margin.right), height-(margin.top+margin.bottom)) / 2;
+    return chart;
+  };
+
+  chart.animate = function(_) {
+    if (!arguments.length) return animate;
+    animate = _;
+    return chart;
+  };
+
+  chart.labelField = function(_) {
+    if (!arguments.length) return (label);
+      label = _;
+      return chart;
+  };
+
+  chart.dataField = function(_) {
+    if (!arguments.length) return (field);
+    field = _;
+    return chart;
+  };
+
+  chart.showLabels = function(_) {
+      if (!arguments.length) return (showLabels);
+      showLabels = _;
+      return chart;
+  };
+
+  chart.donut = function(_) {
+        if (!arguments.length) return (donut);
+        donut = _;
+        return chart;
+  };
+
+  chart.title = function(_) {
+        if (!arguments.length) return (title);
+        title = _;
+        return chart;
+  };
+
+  chart.id = function(_) {
+        if (!arguments.length) return id;
+        id = _;
+        return chart;
+  };
+
+  chart.dispatch = dispatch;
+
+
+
+    return chart;
+}
diff --git a/deprecated/scatterChart.html b/deprecated/scatterChart.html
new file mode 100644
index 0000000..7bb78ae
--- /dev/null
+++ b/deprecated/scatterChart.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+  margin: 0;
+  padding: 0;
+}
+
+svg {
+  overflow: hidden;
+}
+
+div {
+  border: 0;
+  margin: 0;
+}
+
+/*
+#offsetDiv {
+  margin-left: 100px;
+  margin-top: 100px;
+}
+*/
+
+#test1 {
+  margin: 0;
+  height: 500px;
+}
+
+#test1 svg {
+  height: 500px;
+}
+
+</style>
+
+<body>
+
+<div id="offsetDiv">
+  <div id="test1" class="chartWrap">
+    <svg></svg>
+  </div>
+</div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../lib/fisheye.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/distribution.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/scatterChart.js"></script>
+<script>
+
+
+
+//Format A
+nv.addGraph(function() {
+  var chart = nv.models.scatterChart()
+                .showDistX(true)
+                .showDistY(true)
+                //.height(500)
+                .color(d3.scale.category10().range());
+
+  chart.xAxis.tickFormat(d3.format('.02f'))
+  chart.yAxis.tickFormat(d3.format('.02f'))
+
+  d3.select('#test1 svg')
+      .datum(randomData(4,40))
+    .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+function randomData(groups, points) { //# groups,# points per group
+  var data = [],
+      shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
+      random = d3.random.normal();
+
+  for (i = 0; i < groups; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: []
+    });
+
+    for (j = 0; j < points; j++) {
+      data[i].values.push({
+        x: random(), 
+        y: random(), 
+        size: Math.random(), 
+        shape: shapes[j % 6]
+      });
+    }
+  }
+
+  return data;
+}
+
+
+
+</script>
diff --git a/deprecated/scatterChart.js b/deprecated/scatterChart.js
new file mode 100644
index 0000000..224dee8
--- /dev/null
+++ b/deprecated/scatterChart.js
@@ -0,0 +1,293 @@
+nv.models.scatterChart = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = null,
+      height = null,
+      color = d3.scale.category20().range(),
+      showDistX = false,
+      showDistY = false,
+      showLegend = true,
+      tooltips = true,
+      tooltipX = function(key, x, y) { return '<strong>' + x + '</strong>' },
+      tooltipY = function(key, x, y) { return '<strong>' + y + '</strong>' },
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      };
+
+
+  var scatter = nv.models.scatter(),
+      x = scatter.xScale(),
+      y = scatter.yScale(),
+      xAxis = nv.models.axis().orient('bottom').scale(x).tickPadding(10),
+      yAxis = nv.models.axis().orient('left').scale(y).tickPadding(10),
+      legend = nv.models.legend().height(30),
+      distX = nv.models.distribution().axis('x').scale(x),
+      distY = nv.models.distribution().axis('y').scale(y),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
+      x0, y0; //TODO: abstract distribution component and have old scales stored there
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    //var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        //top = e.pos[1] + ( offsetElement.offsetTop || 0),
+    var leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point)),
+        contentX = tooltipX(e.series.key, xVal, yVal, e, chart),
+        contentY = tooltipY(e.series.key, xVal, yVal, e, chart);
+        //content = tooltip(e.series.key, xVal, yVal, e, chart);
+
+    nv.tooltip.show([leftX, topX], contentX, 'n', 1);
+    nv.tooltip.show([leftY, topY], contentY, 'e', 1);
+    //nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+  };
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      //TODO: decide if this makes sense to add into all the models for ease of updating (updating without needing the selection)
+      chart.update = function() { container.transition().call(chart) };
+
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+
+      x0 = x0 || scatter.xScale();
+      y0 = y0 || scatter.yScale();
+
+
+
+      var wrap = container.selectAll('g.wrap.scatterChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 scatterChart chart-' + scatter.id()).append('g');
+
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'scatterWrap');
+      gEnter.append('g').attr('class', 'distWrap');
+
+      var g = wrap.select('g')
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        wrap.select('.legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.legendWrap')
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')');
+      }
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var scatterWrap = wrap.select('.scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }));
+      d3.transition(scatterWrap).call(scatter);
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize( -availableHeight , 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+
+      yAxis
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+      distX
+        .width(availableWidth)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled }));
+      gEnter.select('.distWrap').append('g')
+          .attr('class', 'distributionX')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      g.select('.distributionX')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(distX);
+
+
+      distY
+        .width(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled }));
+      gEnter.select('.distWrap').append('g')
+          .attr('class', 'distributionY')
+          .attr('transform', 'translate(-' + distY.size() + ',0)');
+      g.select('.distributionY')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(distY);
+
+
+
+      legend.dispatch.on('legendClick', function(d,i, that) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+        
+        chart.update();
+      });
+
+      /*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+      */
+
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        d3.select('.chart-' + scatter.id() + ' .series-' + e.seriesIndex + ' .distx-' + e.pointIndex)
+            .attr('y1', e.pos[1] - availableHeight);
+        d3.select('.chart-' + scatter.id() + ' .series-' + e.seriesIndex + ' .disty-' + e.pointIndex)
+            .attr('x2', e.pos[0] + distX.size());
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+      if (tooltips) dispatch.on('tooltipShow', function(e) { showTooltip(e, that.parentNode) } ); // TODO: maybe merge with above?
+
+      scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+
+        d3.select('.chart-' + scatter.id() + ' .series-' + e.seriesIndex + ' .distx-' + e.pointIndex)
+            .attr('y1', 0);
+        d3.select('.chart-' + scatter.id() + ' .series-' + e.seriesIndex + ' .disty-' + e.pointIndex)
+            .attr('x2', distY.size());
+      });
+      if (tooltips) dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+      //store old scales for use in transitions on update, to animate from old to new positions, and sizes
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, scatter, 'interactive', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'fisheye', 'fisheyeRadius');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    distX.color(_);
+    distY.color(_);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/scatterFisheyeChart.js b/deprecated/scatterFisheyeChart.js
new file mode 100644
index 0000000..d996355
--- /dev/null
+++ b/deprecated/scatterFisheyeChart.js
@@ -0,0 +1,418 @@
+
+nv.models.scatterFisheyeChart = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = null,
+      height = null,
+      color = nv.utils.defaultColor(),
+      showDistX = false,
+      showDistY = false,
+      showLegend = true,
+      showControls = true,
+      fisheye = 0,
+      tooltips = true,
+      tooltipX = function(key, x, y) { return '<strong>' + x + '</strong>' },
+      tooltipY = function(key, x, y) { return '<strong>' + y + '</strong>' },
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      },
+      noData = "No Data Available."
+      ;
+
+  var x = d3.fisheye.scale(d3.scale.linear).distortion(0),
+      y = d3.fisheye.scale(d3.scale.linear).distortion(0);
+
+  var scatter = nv.models.scatter().xScale(x).yScale(y),
+      //x = scatter.xScale(),
+      //y = scatter.yScale(),
+      xAxis = nv.models.axis().orient('bottom').scale(x).tickPadding(10),
+      yAxis = nv.models.axis().orient('left').scale(y).tickPadding(10),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
+      x0, y0; //TODO: abstract distribution component and have old scales stored there
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    //var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        //top = e.pos[1] + ( offsetElement.offsetTop || 0),
+    var leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point, e.pointIndex)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point, e.pointIndex)),
+        contentX = tooltipX(e.series.key, xVal, yVal, e, chart),
+        contentY = tooltipY(e.series.key, xVal, yVal, e, chart);
+        //content = tooltip(e.series.key, xVal, yVal, e, chart);
+
+    nv.tooltip.show([leftX, topX], contentX, 'n', 1, offsetElement);
+    nv.tooltip.show([leftY, topY], contentY, 'e', 1, offsetElement);
+    //nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+  };
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      //TODO: decide if this makes sense to add into all the models for ease of updating (updating without needing the selection)
+      chart.update = function() { selection.transition().call(chart) };
+
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        container.append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('x', availableWidth / 2)
+          .attr('y', availableHeight / 2)
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle')
+          .text(noData);
+          return chart;
+      } else {
+        container.select('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+
+      x0 = x0 || scatter.xScale();
+      y0 = y0 || scatter.yScale();
+
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id()).append('g');
+
+
+      gEnter.append('rect')
+          .attr('class', 'nvd3 nv-background')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      //gEnter.append('g').attr('class', 'nv-distWrap');
+
+      var g = wrap.select('g')
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')');
+      }
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var scatterWrap = wrap.select('.nv-scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }));
+      d3.transition(scatterWrap).call(scatter);
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize( -availableHeight , 0);
+
+      g.select('.nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.nv-x.nv-axis'))
+          .call(xAxis);
+
+
+      yAxis
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.nv-y.nv-axis'))
+          .call(yAxis);
+
+
+
+
+      //TODO abstract Distribution into its own component
+      if ( showDistX || showDistY) {
+        var distWrap = scatterWrap.selectAll('g.nv-distribution')
+            .data(function(d) { return d }, function(d) { return d.key });
+
+        distWrap.enter().append('g').attr('class', function(d,i) { return 'nv-distribution nv-series-' + i })
+
+        distWrap.style('stroke', function(d,i) { return color.filter(function(d,i) { return data[i] && !data[i].disabled })[i % color.length] })
+      }
+
+      if (showDistX) {
+        var distX = distWrap.selectAll('line.nv-distX')
+              .data(function(d) { return d.values })
+        distX.enter().append('line')
+            .attr('x1', function(d,i) { return x0(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x0(scatter.x()(d,i)) })
+        //d3.transition(distX.exit())
+        d3.transition(distWrap.exit().selectAll('line.nv-distX'))
+            .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
+            .remove();
+        distX
+            .attr('class', function(d,i) { return 'nv-distX nv-distX-' + i })
+            .attr('y1', y.range()[0])
+            .attr('y2', y.range()[0] + 8);
+        d3.transition(distX)
+            .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
+      }
+
+
+      if (showDistY) {
+        var distY = distWrap.selectAll('line.nv-distY')
+            .data(function(d) { return d.values })
+        distY.enter().append('line')
+            .attr('y1', function(d,i) { return y0(scatter.y()(d,i)) })
+            .attr('y2', function(d,i) { return y0(scatter.y()(d,i)) });
+        //d3.transition(distY.exit())
+        d3.transition(distWrap.exit().selectAll('line.nv-distY'))
+            .attr('y1', function(d,i) { return y(scatter.y()(d,i)) })
+            .attr('y2', function(d,i) { return y(scatter.y()(d,i)) })
+            .remove();
+        distY
+            .attr('class', function(d,i) { return 'nv-distY nv-distY-' + i })
+            .attr('x1', x.range()[0])
+            .attr('x2', x.range()[0] - 8)
+        d3.transition(distY)
+            .attr('y1', function(d,i) { return y(scatter.y()(d,i)) })
+            .attr('y2', function(d,i) { return y(scatter.y()(d,i)) });
+      }
+
+
+
+
+      legend.dispatch.on('legendClick', function(d,i, that) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.nv-series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart)
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 2.5;
+        g.select('.nv-background').style('pointer-events', d.disabled ? 'none' : 'all');
+        scatter.interactive(d.disabled);
+        tooltips = d.disabled;
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+          y.distortion(fisheye).focus(0);
+
+          scatterWrap.call(scatter);
+          g.select('.nv-x.nv-axis').call(xAxis);
+          g.select('.nv-y.nv-axis').call(yAxis);
+        }
+
+        selection.transition().call(chart);
+      });
+
+      /*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+      */
+
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        //scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distX-' + e.pointIndex)
+            .attr('y1', e.pos[1]);
+        //scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distY-' + e.pointIndex)
+            .attr('x1', e.pos[0]);
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+      //if (tooltips) dispatch.on('tooltipShow', function(e) { showTooltip(e, container[0][0].parentNode) } ); // TODO: maybe merge with above?
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+
+        //scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distX-' + e.pointIndex)
+            .attr('y1', y.range()[0]);
+        //scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distY-' + e.pointIndex)
+            .attr('x1', x.range()[0]);
+      });
+      dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+
+
+      //TODO: get distributions to work with fisheye
+      g.select('.nv-background').on('mousemove', updateFisheye);
+      g.select('.nv-point-paths').on('mousemove', updateFisheye);
+
+      function updateFisheye() {
+        var mouse = d3.mouse(this);
+        x.distortion(fisheye).focus(mouse[0]);
+        y.distortion(fisheye).focus(mouse[1]);
+
+        scatterWrap.call(scatter);
+        g.select('.nv-x.nv-axis').call(xAxis);
+        g.select('.nv-y.nv-axis').call(yAxis);
+      }
+
+      //store old scales for use in transitions on update, to animate from old to new positions, and sizes
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, scatter, 'interactive', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'fisheye', 'fisheyeRadius');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.fisheye = function(_) {
+    if (!arguments.length) return fisheye;
+    fisheye = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/scatterWithLegend.html b/deprecated/scatterWithLegend.html
new file mode 100644
index 0000000..24cb22b
--- /dev/null
+++ b/deprecated/scatterWithLegend.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+  margin: 0;
+  padding: 0;
+}
+
+svg {
+  overflow: hidden;
+}
+
+div {
+  border: 0;
+  margin: 0;
+}
+
+
+#offsetDiv {
+}
+
+
+#test1 {
+  margin: 0;
+}
+
+
+</style>
+
+<body>
+
+<div id="offsetDiv">
+  <div id="test1" class="chartWrap">
+    <svg></svg>
+  </div>
+</div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/scatterWithLegend.js"></script>
+<script>
+
+
+
+//Format A
+nv.addGraph({
+  generate: function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40;
+
+      var chart = nv.models.scatterWithLegend()
+                .width(width)
+                .height(height)
+                .showDistX(true)
+                .showDistY(true)
+                .color(d3.scale.category10().range());
+                //.width(width)
+                //.height(height)
+                //.forceX([-4,4])
+                //.forceY([-4,4])
+                //.margin({top: 20, right: 10, bottom: 50, left: 80})
+
+
+    //chart.xaxis.tickFormat(d3.format(".02f"))
+
+    var svg =d3.select('#test1 svg')
+      .datum(randomData());
+
+
+    svg.transition().duration(500)
+      .attr('width', width)
+      .attr('height', height)
+      .call(chart)
+      //.attr('width', wid0th)
+      //.attr('height', height)
+
+    return chart;
+  },
+  callback: function(graph) {
+
+    graph.dispatch.on('tooltipShow', function(e) {
+        var offsetElement = document.getElementById("test1"),
+                left = e.pos[0] + offsetElement.offsetLeft,
+                top = e.pos[1] + offsetElement.offsetTop,
+                formatter = d3.format(".2f");
+
+
+      /*
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    '<span class="value"><span class="label">x:</span><span class="val">' + formatter(e.point.x) + '</span></span><br>' +
+                    '<s0pan class="value"><span class="label">y:</span><span class="val">' + formatter(e.point.y) + '</span></span>' +
+                    '</p>';
+
+      nvtooltip.show([left, top], content);
+      */
+
+      var contentX = '<strong>' + formatter(e.point.x) + '</strong>';
+      var contentY = '<strong>' + formatter(e.point.y) + '</strong>';
+      var height = nv.utils.windowSize().height - 40;
+
+      nv.tooltip.show([left, height - 50], contentX, 'n', 1);
+      nv.tooltip.show([5, top], contentY, 'w', 1);
+    });
+
+
+    graph.dispatch.on('tooltipHide', function(e) {
+      nv.tooltip.cleanup();
+    });
+
+    window.onresize = function() {
+     var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40,
+        margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+        .width(width)
+        .height(height);
+
+      d3.select('#test1 svg')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+
+      };
+  }
+});
+
+
+function randomData() {
+  var data = [],
+      random = d3.random.normal();
+
+  for (i = 0; i < 2; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: []
+    });
+
+    for (j = 0; j < 100; j++) {
+      data[i].values.push({x: random(), y: random(), size: Math.random()});
+    }
+  }
+
+  return data;
+}
+
+
+
+</script>
diff --git a/deprecated/scatterWithLegend.js b/deprecated/scatterWithLegend.js
new file mode 100644
index 0000000..8434523
--- /dev/null
+++ b/deprecated/scatterWithLegend.js
@@ -0,0 +1,261 @@
+
+nv.models.scatterWithLegend = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      width = function() { return 960 }, //TODO: should probably make this consistent... or maybe constant in the models, closure in the charts
+      height = function() { return 500 },
+      xAxisLabelText = false,
+      yAxisLabelText = false,
+      showDistX = false,
+      showDistY = false,
+      color = d3.scale.category20().range();
+
+  var xAxis = nv.models.axis().orient('bottom').tickPadding(10),
+      yAxis = nv.models.axis().orient('left').tickPadding(10),
+      legend = nv.models.legend().height(30),
+      scatter = nv.models.scatter(),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
+      x, y, x0, y0;
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width() - margin.left - margin.right,
+          availableHeight = height() - margin.top - margin.bottom;
+
+      x0 = x0 || scatter.xScale();
+      y0 = y0 || scatter.yScale();
+
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.scatterWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 scatterWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'scatterWrap');
+      //gEnter.append('g').attr('class', 'distWrap');
+
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+        //.xDomain(x.domain())
+        //.yDomain(y.domain())
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 20];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+      var scatterWrap = wrap.select('.scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }));
+
+      d3.transition(scatterWrap).call(scatter);
+
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      xAxis.scale(x);
+      yAxis.scale(y);
+
+
+      //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+      //TODO: Fix height issue on first render if legend height is larger than margin.top, NEED TO FIX EVERY MODEL WITH A LEGEND
+      margin.top = legend.height();
+
+      var g = wrap.select('g')
+          .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      legend.width(availableWidth / 2);
+
+      wrap.select('.legendWrap')
+          .datum(data)
+          .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')')
+          .call(legend);
+
+
+
+
+      if ( showDistX || showDistY) {
+        var distWrap = scatterWrap.selectAll('g.distribution')
+            .data(function(d) { return d }, function(d) { return d.key });
+
+        distWrap.enter().append('g').attr('class', function(d,i) { return 'distribution series-' + i })
+
+        distWrap.style('stroke', function(d,i) { return color.filter(function(d,i) { return data[i] && !data[i].disabled })[i % 10] })
+      }
+
+      if (showDistX) {
+        var distX = distWrap.selectAll('line.distX')
+              .data(function(d) { return d.values })
+        distX.enter().append('line')
+            .attr('x1', function(d,i) { return x0(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x0(scatter.x()(d,i)) })
+        //d3.transition(distX.exit())
+        d3.transition(distWrap.exit().selectAll('line.distX'))
+            .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
+            .remove();
+        distX
+            .attr('class', function(d,i) { return 'distX distX-' + i })
+            .attr('y1', y.range()[0])
+            .attr('y2', y.range()[0] + 8);
+        d3.transition(distX)
+            .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
+            .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
+      }
+
+
+      if (showDistY) {
+        var distY = distWrap.selectAll('line.distY')
+            .data(function(d) { return d.values })
+        distY.enter().append('line')
+            .attr('y1', function(d,i) { return y0(scatter.y()(d,i)) })
+            .attr('y2', function(d,i) { return y0(scatter.y()(d,i)) });
+        //d3.transition(distY.exit())
+        d3.transition(distWrap.exit().selectAll('line.distY'))
+            .attr('y1', function(d,i) { return y(scatter.y()(d,i)) })
+            .attr('y2', function(d,i) { return y(scatter.y()(d,i)) })
+            .remove();
+        distY
+            .attr('class', function(d,i) { return 'distY distY-' + i })
+            .attr('x1', x.range()[0])
+            .attr('x2', x.range()[0] - 8)
+        d3.transition(distY)
+            .attr('y1', function(d,i) { return y(scatter.y()(d,i)) }) .attr('y2', function(d,i) { return y(scatter.y()(d,i)) });
+      }
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize( -availableHeight , 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+
+      yAxis
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+
+      legend.dispatch.on('legendClick', function(d,i, that) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart)
+      });
+
+      /*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+      */
+
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        dispatch.tooltipShow({
+          point: e.point,
+          series: e.series,
+          pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
+          seriesIndex: e.seriesIndex,
+          pointIndex: e.pointIndex
+        });
+
+        scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
+            .attr('y1', e.pos[1]);
+        scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
+            .attr('x1', e.pos[0]);
+      });
+
+      scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+
+        scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
+            .attr('y1', y.range()[0]);
+        scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
+            .attr('x1', x.range()[0]);
+      });
+
+
+      //store old scales for use in transitions on update, to animate from old to new positions, and sizes
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius');
+
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = d3.functor(_);
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/deprecated/stackedArea.js b/deprecated/stackedArea.js
new file mode 100644
index 0000000..c5851cb
--- /dev/null
+++ b/deprecated/stackedArea.js
@@ -0,0 +1,286 @@
+
+nv.models.stackedArea = function() {
+  //Default Settings
+  var margin = {top: 0, right: 0, bottom: 0, left: 0},
+      width = 960,
+      height = 500,
+      color = d3.scale.category20().range(), // array of colors to be used in order
+      id = Math.floor(Math.random() * 100000), //Create semi-unique ID incase user doesn't selet one
+      getX = function(d) { return d.x }, // accessor to get the x value from a data point
+      getY = function(d) { return d.y }, // accessor to get the y value from a data point
+      style = 'stack',
+      offset = 'zero',
+      order = 'default',
+      clipEdge = false; // if true, masks lines within x and y scale
+
+/************************************
+ * offset:
+ *   'wiggle' (stream)
+ *   'zero' (stacked)
+ *   'expand' (normalize to 100%)
+ *   'silhouette' (simple centered)
+ *
+ * order:
+ *   'inside-out' (stream)
+ *   'default' (input order)
+ ************************************/
+
+  var scatter= nv.models.scatter()
+        .size(2.2) // default size
+        .sizeDomain([2.5]), //set to speed up calculation, needs to be unset if there is a cstom size accessor
+      x = scatter.xScale(),
+      y = scatter.yScale(),
+      dispatch =  d3.dispatch('tooltipShow', 'tooltipHide', 'areaClick', 'areaMouseover', 'areaMouseout');
+
+  function chart(selection) {
+    selection.each(function(data) {
+        // Need to leave data alone to switch between stacked, stream, and expanded
+        var dataCopy = JSON.parse(JSON.stringify(data)),
+            availableWidth = width - margin.left - margin.right,
+            availableHeight = height - margin.top - margin.bottom;
+
+        //TODO: try to get rid of the need for copying the data, and use the data directly
+
+        //console.log(dataCopy);
+        dataCopy = dataCopy.map(function(series,i) {
+          if (series.disabled)
+            series.values = series.values.map(function(d,i) {
+              d._y = d.y || d._y; 
+              d.y = 0;  //TODO: need to use value from getY, not always d.y
+              return d 
+            });
+          return series;
+        });
+
+
+        //TODO: deal with negative stacked charts
+
+        //compute the data based on offset and order (calc's y0 for every point)
+        dataCopy = d3.layout.stack()
+                     .offset(offset)
+                     .order(order)
+                     .values(function(d){ return d.values })
+                     .y(getY)
+                     (dataCopy);
+
+
+
+        var wrap = d3.select(this).selectAll('g.wrap.stackedarea').data([dataCopy]);
+        var wrapEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 stackedarea');
+        var defsEnter = wrapEnter.append('defs');
+        var gEnter = wrapEnter.append('g');
+        var g = wrap.select('g');
+
+        gEnter.append('g').attr('class', 'areaWrap');
+
+
+        scatter
+          .width(availableWidth)
+          .height(availableHeight)
+          //.x(getX)
+          .y(function(d) { return d.y + d.y0 }) // TODO: allow for getY to be other than d.y
+          .forceY([0])
+          .color(dataCopy.map(function(d,i) {
+            return d.color || color[i % color.length];
+          }).filter(function(d,i) { return !dataCopy[i].disabled }));
+
+        gEnter.append('g').attr('class', 'scatterWrap');
+        var scatterWrap= g.select('.scatterWrap')
+            .datum(dataCopy.filter(function(d) { return !d.disabled }))
+
+        d3.transition(scatterWrap).call(scatter);
+
+
+
+
+        wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+        defsEnter.append('clipPath')
+            .attr('id', 'edge-clip-' + id)
+          .append('rect');
+
+        wrap.select('#edge-clip-' + id + ' rect')
+            .attr('width', availableWidth)
+            .attr('height', availableHeight);
+
+        g   .attr('clip-path', clipEdge ? 'url(#edge-clip-' + id + ')' : '');
+
+
+
+
+        var area = d3.svg.area()
+            .x(function(d,i) { return x(scatter.x()(d,i)) })
+            .y0(function(d) { return y(d.y0) })
+            .y1(function(d) { return y(d.y + d.y0) });
+
+        var zeroArea = d3.svg.area()
+            .x(function(d,i) { return x(scatter.x()(d,i)) })
+            .y0(function(d) { return y(d.y0) })
+            .y1(function(d) { return y(d.y0) });
+
+
+        var path = g.select('.areaWrap').selectAll('path.area')
+            .data(function(d) { return d });
+            //.data(function(d) { return d }, function(d) { return d.key });
+        path.enter().append('path').attr('class', function(d,i) { return 'area area-' + i })
+            .on('mouseover', function(d,i) {
+              d3.select(this).classed('hover', true);
+              dispatch.areaMouseover({
+                point: d,
+                series: d.key,
+                //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
+                pos: [d3.event.pageX, d3.event.pageY],
+                seriesIndex: i
+                //pointIndex: d.point
+              });
+            })
+            .on('mouseout', function(d,i) {
+              d3.select(this).classed('hover', false);
+              dispatch.areaMouseout({
+                point: d,
+                series: d.key,
+                //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
+                pos: [d3.event.pageX, d3.event.pageY],
+                seriesIndex: i
+                //pointIndex: d.point
+              });
+            })
+            .on('click', function(d,i) {
+              d3.select(this).classed('hover', false);
+              dispatch.areaClick({
+                point: d,
+                series: d.key,
+                //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
+                pos: [d3.event.pageX, d3.event.pageY],
+                seriesIndex: i
+                //pointIndex: d.point
+              });
+            })
+        d3.transition(path.exit())
+            .attr('d', function(d,i) { return zeroArea(d.values,i) }) // TODO: fix this so transition is still fluid
+            .remove();
+        path
+            .style('fill', function(d,i){ return d.color || color[i % color.length] })
+            .style('stroke', function(d,i){ return d.color || color[i % color.length] });
+        d3.transition(path)
+            .attr('d', function(d,i) { return area(d.values,i) })
+
+
+        scatter.dispatch.on('elementClick.area', function(e) {
+          dispatch.areaClick(e);
+        })
+        scatter.dispatch.on('elementMouseover.area', function(e) {
+          g.select('.area-' + e.seriesIndex).classed('hover', true);
+        });
+        scatter.dispatch.on('elementMouseout.area', function(e) {
+          g.select('.area-' + e.seriesIndex).classed('hover', false);
+        });
+
+    });
+
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+
+  d3.rebind(chart, scatter, 'x', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius');
+
+  /*
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    scatter.x(_);
+    return chart;
+  };
+  */
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    //scatter.y(_);
+    return chart;
+  }
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    return chart;
+  };
+
+  chart.offset = function(_) {
+    if (!arguments.length) return offset;
+    offset = _;
+    return chart;
+  };
+
+  chart.order = function(_) {
+    if (!arguments.length) return order;
+    order = _;
+    return chart;
+  };
+
+  //shortcut for offset + order
+  chart.style = function(_) {
+    if (!arguments.length) return style;
+    style = _;
+
+    switch (style) {
+      case 'stack':
+        offset = 'zero';
+        order = 'default';
+        break;
+      case 'stream':
+        offset = 'wiggle';
+        order = 'inside-out';
+        break;
+      case 'expand':
+        offset = 'expand';
+        order = 'default';
+        break;
+    }
+
+    return chart;
+  };
+
+
+
+  scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+        dispatch.tooltipShow(e);
+  });
+
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+  });
+
+
+  return chart;
+}
diff --git a/deprecated/stackedAreaChart.html b/deprecated/stackedAreaChart.html
new file mode 100644
index 0000000..340d742
--- /dev/null
+++ b/deprecated/stackedAreaChart.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1, #chart2 {
+  height: 500px;
+}
+
+</style>
+<body>
+
+  <div>
+    <svg id="chart1"></svg>
+  </div>
+
+  <div>
+    <svg id="chart2"></svg>
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script src="../src/models/stackedAreaChart.js"></script>
+<script>
+
+
+var histcatexplong = [ 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218208] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957521] , [ 1149048000000 , 26.823411519395] , [ 1151640000000 , 23.850443591584] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393694] , [ 1159588800000 , 27.977128511299] , [ 1162270800000 , 29.073672469721] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687638] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271051] , [ 1175313600000 , 17.558388444186] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201302] , [ 1183176000000 , 18.729632971228] , [ 1185854400000 , 18.814523318848] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575715] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 17.175388025298] , [ 1201755600000 , 17.286592443521] , [ 1204261200000 , 16.323141626569] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391094] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.539366475979] , [ 1217476800000 , 15.255131790216] , [ 1220155200000 , 15.660963922593] , [ 1222747200000 , 13.254482273697] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090925] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672229] , [ 1241064000000 , 14.6314458648] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367016] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.75602606542] , [ 1259557200000 , 19.385804443147] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793023] , [ 1280548800000 , 29.46138169384] , [ 1283227200000 , 27.357322961862] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379723] , [ 1293771600000 , 29.449241421597] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449189] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.079662545409] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.41800274293] , [ 1312084800000 , 23.243644138871] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.672380820431] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213899] , [ 1330491600000 , 20.366462219462] , [ 1333166400000 , 17.429019937289] , [ 1335758400000 , 16.75543633539] , [ 1338436800000 , 16.182906906042]]
+  } , 
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220792] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 8.5658461590953] , [ 1335758400000 , 8.6135447714243] , [ 1338436800000 , 8.0231460925212]]
+  } , 
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1138683600000 , 1.544303464167] , [ 1141102800000 , 1.4387289432421] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 1.328626801128] , [ 1154318400000 , 1.2874050802627] , [ 1156996800000 , 1.0872743105593] , [ 1159588800000 , 0.96042562635813] , [ 1162270800000 , 0.93139372870616] , [ 1164862800000 , 0.94432167305385] , [ 1167541200000 , 1.277750166208] , [ 1170219600000 , 1.2204893886811] , [ 1172638800000 , 1.207489123122] , [ 1175313600000 , 1.2490651414113] , [ 1177905600000 , 1.2593129913052] , [ 1180584000000 , 1.373329808388] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 1.4516108933695] , [ 1225425600000 , 1.1856025268225] , [ 1228021200000 , 1.3430470355439] , [ 1230699600000 , 2.2752595354509] , [ 1233378000000 , 2.4031560010523] , [ 1235797200000 , 2.0822430731926] , [ 1238472000000 , 1.5640902826938] , [ 1241064000000 , 1.5812873972356] , [ 1243742400000 , 1.9462448548894] , [ 1246334400000 , 2.9464870223957] , [ 1249012800000 , 3.0744699383222] , [ 1251691200000 , 2.9422304628446] , [ 1254283200000 , 2.7503075599999] , [ 1256961600000 , 2.6506701800427] , [ 1259557200000 , 2.8005425319977] , [ 1262235600000 , 2.6816184971185] , [ 1264914000000 , 2.681206271327] , [ 1267333200000 , 2.8195488011259] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 1.0687057346382] , [ 1280548800000 , 1.2539400544134] , [ 1283227200000 , 1.1862969445955] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 1.941972859484] , [ 1298869200000 , 2.1142247697552] , [ 1301544000000 , 2.3788590206824] , [ 1304136000000 , 2.5337302877545] , [ 1306814400000 , 2.3163370395199] , [ 1309406400000 , 2.0645451843195] , [ 1312084800000 , 2.1004446672411] , [ 1314763200000 , 3.6301875804303] , [ 1317355200000 , 2.454204664652] , [ 1320033600000 , 2.196082370894] , [ 1322629200000 , 2.3358418255202] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0.39001201038526] , [ 1335758400000 , 0.30945472725559] , [ 1338436800000 , 0.31062439305591]]
+  } , 
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1138683600000 , 13.356778764352] , [ 1141102800000 , 13.611196863271] , [ 1143781200000 , 6.895903006119] , [ 1146369600000 , 6.9939633271352] , [ 1149048000000 , 6.7241510257675] , [ 1151640000000 , 5.5611293669516] , [ 1154318400000 , 5.6086488714041] , [ 1156996800000 , 5.4962849907033] , [ 1159588800000 , 6.9193153169279] , [ 1162270800000 , 7.0016334389777] , [ 1164862800000 , 6.7865422443273] , [ 1167541200000 , 9.0006454225383] , [ 1170219600000 , 9.2233916171431] , [ 1172638800000 , 8.8929316009479] , [ 1175313600000 , 10.345937520404] , [ 1177905600000 , 10.075914677026] , [ 1180584000000 , 10.089006188111] , [ 1183176000000 , 10.598330295008] , [ 1185854400000 , 9.968954653301] , [ 1188532800000 , 9.7740580198146] , [ 1191124800000 , 10.558483060626] , [ 1193803200000 , 9.9314651823603] , [ 1196398800000 , 9.3997715873769] , [ 1199077200000 , 8.4086493387262] , [ 1201755600000 , 8.9698309085926] , [ 1204261200000 , 8.2778357995396] , [ 1206936000000 , 8.8585045600123] , [ 1209528000000 , 8.7013756413322] , [ 1212206400000 , 7.7933605469443] , [ 1214798400000 , 7.0236183483064] , [ 1217476800000 , 6.9873088186829] , [ 1220155200000 , 6.8031713070097] , [ 1222747200000 , 6.6869531315723] , [ 1225425600000 , 6.138256993963] , [ 1228021200000 , 5.6434994016354] , [ 1230699600000 , 5.495220262512] , [ 1233378000000 , 4.6885326869846] , [ 1235797200000 , 4.4524349883438] , [ 1238472000000 , 5.6766520778185] , [ 1241064000000 , 5.7675774480752] , [ 1243742400000 , 5.7882863168337] , [ 1246334400000 , 7.2666010034924] , [ 1249012800000 , 7.519182132226] , [ 1251691200000 , 7.849651451445] , [ 1254283200000 , 10.383992037985] , [ 1256961600000 , 9.0653691861818] , [ 1259557200000 , 9.6705248324159] , [ 1262235600000 , 10.856380561349] , [ 1264914000000 , 11.27452370892] , [ 1267333200000 , 11.754156529088] , [ 1270008000000 , 8.2870811422456] , [ 1272600000000 , 8.0210264360699] , [ 1275278400000 , 7.5375074474865] , [ 1277870400000 , 8.3419527338039] , [ 1280548800000 , 9.4197471818443] , [ 1283227200000 , 8.7321733185797] , [ 1285819200000 , 9.6627062648126] , [ 1288497600000 , 10.187962234549] , [ 1291093200000 , 9.8144201733476] , [ 1293771600000 , 10.275723361713] , [ 1296450000000 , 16.796066079353] , [ 1298869200000 , 17.543254984075] , [ 1301544000000 , 16.673660675084] , [ 1304136000000 , 17.963944353609] , [ 1306814400000 , 16.637740867211] , [ 1309406400000 , 15.84857094609] , [ 1312084800000 , 14.767303362182] , [ 1314763200000 , 24.778452182432] , [ 1317355200000 , 18.370353229999] , [ 1320033600000 , 15.2531374291] , [ 1322629200000 , 14.989600840649] , [ 1325307600000 , 16.052539160125] , [ 1327986000000 , 16.424390322793] , [ 1330491600000 , 17.884020741105] , [ 1333166400000 , 7.1424929577921] , [ 1335758400000 , 7.8076213051482] , [ 1338436800000 , 7.2462684949232]]
+  } , 
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1138683600000 , 14.212410956029] , [ 1141102800000 , 13.973193618249] , [ 1143781200000 , 15.218233920665] , [ 1146369600000 , 14.38210972745] , [ 1149048000000 , 13.894310878491] , [ 1151640000000 , 15.593086090032] , [ 1154318400000 , 16.244839695188] , [ 1156996800000 , 16.017088850646] , [ 1159588800000 , 14.183951830055] , [ 1162270800000 , 14.148523245697] , [ 1164862800000 , 13.424326059972] , [ 1167541200000 , 12.974450435753] , [ 1170219600000 , 13.23247041802] , [ 1172638800000 , 13.318762655574] , [ 1175313600000 , 15.961407746104] , [ 1177905600000 , 16.287714639805] , [ 1180584000000 , 16.246590583889] , [ 1183176000000 , 17.564505594809] , [ 1185854400000 , 17.872725373165] , [ 1188532800000 , 18.018998508757] , [ 1191124800000 , 15.584518016603] , [ 1193803200000 , 15.480850647181] , [ 1196398800000 , 15.699120036984] , [ 1199077200000 , 19.184281817226] , [ 1201755600000 , 19.691226605207] , [ 1204261200000 , 18.982314051295] , [ 1206936000000 , 18.707820309008] , [ 1209528000000 , 17.459630929761] , [ 1212206400000 , 16.500616076782] , [ 1214798400000 , 18.086324003979] , [ 1217476800000 , 18.929464156258] , [ 1220155200000 , 18.233728682084] , [ 1222747200000 , 16.315776297325] , [ 1225425600000 , 14.63289219025] , [ 1228021200000 , 14.667835024478] , [ 1230699600000 , 13.946993947308] , [ 1233378000000 , 14.394304684397] , [ 1235797200000 , 13.724462792967] , [ 1238472000000 , 10.930879035806] , [ 1241064000000 , 9.8339915513708] , [ 1243742400000 , 10.053858541872] , [ 1246334400000 , 11.786998438287] , [ 1249012800000 , 11.780994901769] , [ 1251691200000 , 11.305889670276] , [ 1254283200000 , 10.918452290083] , [ 1256961600000 , 9.6811395055706] , [ 1259557200000 , 10.971529744038] , [ 1262235600000 , 13.330210480209] , [ 1264914000000 , 14.592637568961] , [ 1267333200000 , 14.605329141157] , [ 1270008000000 , 13.936853794037] , [ 1272600000000 , 12.189480759072] , [ 1275278400000 , 11.676151385046] , [ 1277870400000 , 13.058852800017] , [ 1280548800000 , 13.62891543203] , [ 1283227200000 , 13.811107569918] , [ 1285819200000 , 13.786494560787] , [ 1288497600000 , 14.04516285753] , [ 1291093200000 , 13.697412447288] , [ 1293771600000 , 13.677681376221] , [ 1296450000000 , 19.961511864531] , [ 1298869200000 , 21.049198298158] , [ 1301544000000 , 22.687631094008] , [ 1304136000000 , 25.469010617433] , [ 1306814400000 , 24.883799437121] , [ 1309406400000 , 24.203843814248] , [ 1312084800000 , 22.138760964038] , [ 1314763200000 , 16.034636966228] , [ 1317355200000 , 15.394958944556] , [ 1320033600000 , 12.625642461969] , [ 1322629200000 , 12.973735699739] , [ 1325307600000 , 15.786018336149] , [ 1327986000000 , 15.227368020134] , [ 1330491600000 , 15.899752650734] , [ 1333166400000 , 18.994731295388] , [ 1335758400000 , 18.450055817702] , [ 1338436800000 , 17.863719889669]]
+  } , 
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1138683600000 , 7.1590087090398] , [ 1141102800000 , 7.1297210970108] , [ 1143781200000 , 5.5774588290586] , [ 1146369600000 , 5.4977254491156] , [ 1149048000000 , 5.5138153113634] , [ 1151640000000 , 4.3198084032122] , [ 1154318400000 , 3.9179295839125] , [ 1156996800000 , 3.8110093051479] , [ 1159588800000 , 5.5629020916939] , [ 1162270800000 , 5.7241673711336] , [ 1164862800000 , 5.4715049695004] , [ 1167541200000 , 4.9193763571618] , [ 1170219600000 , 5.136053947247] , [ 1172638800000 , 5.1327258759766] , [ 1175313600000 , 5.1888943925082] , [ 1177905600000 , 5.5191481293345] , [ 1180584000000 , 5.6093625614921] , [ 1183176000000 , 4.2706312987397] , [ 1185854400000 , 4.4453235132117] , [ 1188532800000 , 4.6228003109761] , [ 1191124800000 , 5.0645764756954] , [ 1193803200000 , 5.0723447230959] , [ 1196398800000 , 5.1457765818846] , [ 1199077200000 , 5.4067851597282] , [ 1201755600000 , 5.472241916816] , [ 1204261200000 , 5.3742740389688] , [ 1206936000000 , 6.251751933664] , [ 1209528000000 , 6.1406852153472] , [ 1212206400000 , 5.8164385627465] , [ 1214798400000 , 5.4255846656171] , [ 1217476800000 , 5.3738499417204] , [ 1220155200000 , 5.1815627753979] , [ 1222747200000 , 5.0305983235349] , [ 1225425600000 , 4.6823058607165] , [ 1228021200000 , 4.5941481589093] , [ 1230699600000 , 5.4669598474575] , [ 1233378000000 , 5.1249037357] , [ 1235797200000 , 4.3504421250742] , [ 1238472000000 , 4.6260881026002] , [ 1241064000000 , 5.0140402458946] , [ 1243742400000 , 4.7458462454774] , [ 1246334400000 , 6.0437019654564] , [ 1249012800000 , 6.4595216249754] , [ 1251691200000 , 6.6420468254155] , [ 1254283200000 , 5.8927271960913] , [ 1256961600000 , 5.4712108838003] , [ 1259557200000 , 6.1220254207747] , [ 1262235600000 , 5.5385935169255] , [ 1264914000000 , 5.7383377612639] , [ 1267333200000 , 6.1715976730415] , [ 1270008000000 , 4.0102262681174] , [ 1272600000000 , 3.769389679692] , [ 1275278400000 , 3.5301571031152] , [ 1277870400000 , 2.7660252652526] , [ 1280548800000 , 3.1409983385775] , [ 1283227200000 , 3.0528024863055] , [ 1285819200000 , 4.3126123157971] , [ 1288497600000 , 4.594654041683] , [ 1291093200000 , 4.5424126126793] , [ 1293771600000 , 4.7790043987302] , [ 1296450000000 , 7.4969154058289] , [ 1298869200000 , 7.9424751557821] , [ 1301544000000 , 7.1560736250547] , [ 1304136000000 , 7.9478117337855] , [ 1306814400000 , 7.4109214848895] , [ 1309406400000 , 7.5966457641101] , [ 1312084800000 , 7.165754444071] , [ 1314763200000 , 5.4816702524302] , [ 1317355200000 , 4.9893656089584] , [ 1320033600000 , 4.498385105327] , [ 1322629200000 , 4.6776090358151] , [ 1325307600000 , 8.1350814368063] , [ 1327986000000 , 8.0732769990652] , [ 1330491600000 , 8.5602340387277] , [ 1333166400000 , 5.1293714074325] , [ 1335758400000 , 5.2586794619016] , [ 1338436800000 , 5.1100853569977]]
+  } , 
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1138683600000 , 13.242301508051] , [ 1141102800000 , 12.863536342042] , [ 1143781200000 , 21.034044171629] , [ 1146369600000 , 21.419084618803] , [ 1149048000000 , 21.142678863691] , [ 1151640000000 , 26.568489677529] , [ 1154318400000 , 24.839144939905] , [ 1156996800000 , 25.456187462167] , [ 1159588800000 , 26.350164502826] , [ 1162270800000 , 26.47833320519] , [ 1164862800000 , 26.425979547847] , [ 1167541200000 , 28.191461582256] , [ 1170219600000 , 28.930307448808] , [ 1172638800000 , 29.521413891117] , [ 1175313600000 , 28.188285966466] , [ 1177905600000 , 27.704619625832] , [ 1180584000000 , 27.490862424829] , [ 1183176000000 , 28.770679721286] , [ 1185854400000 , 29.060480671449] , [ 1188532800000 , 28.240998844973] , [ 1191124800000 , 33.004893194127] , [ 1193803200000 , 34.075180359928] , [ 1196398800000 , 32.548560664833] , [ 1199077200000 , 30.629727432728] , [ 1201755600000 , 28.642858788159] , [ 1204261200000 , 27.973575227842] , [ 1206936000000 , 27.393351882726] , [ 1209528000000 , 28.476095288523] , [ 1212206400000 , 29.29667866426] , [ 1214798400000 , 29.222333802896] , [ 1217476800000 , 28.092966093843] , [ 1220155200000 , 28.107159262922] , [ 1222747200000 , 25.482974832098] , [ 1225425600000 , 21.208115993834] , [ 1228021200000 , 20.295043095268] , [ 1230699600000 , 15.925754618401] , [ 1233378000000 , 17.162864628346] , [ 1235797200000 , 17.084345773174] , [ 1238472000000 , 22.246007102281] , [ 1241064000000 , 24.530543998509] , [ 1243742400000 , 25.084184918242] , [ 1246334400000 , 16.606166527358] , [ 1249012800000 , 17.239620011628] , [ 1251691200000 , 17.336739127379] , [ 1254283200000 , 25.478492475753] , [ 1256961600000 , 23.017152085245] , [ 1259557200000 , 25.617745423683] , [ 1262235600000 , 24.061133998642] , [ 1264914000000 , 23.223933318644] , [ 1267333200000 , 24.425887263937] , [ 1270008000000 , 35.501471156693] , [ 1272600000000 , 33.775013878676] , [ 1275278400000 , 30.417993630285] , [ 1277870400000 , 30.023598978467] , [ 1280548800000 , 33.327519522436] , [ 1283227200000 , 31.963388450371] , [ 1285819200000 , 30.498967232092] , [ 1288497600000 , 32.403696817912] , [ 1291093200000 , 31.47736071922] , [ 1293771600000 , 31.53259666241] , [ 1296450000000 , 41.760282761548] , [ 1298869200000 , 45.605771243237] , [ 1301544000000 , 39.986557966215] , [ 1304136000000 , 43.846330510051] , [ 1306814400000 , 39.857316881857] , [ 1309406400000 , 37.675127768208] , [ 1312084800000 , 35.775077970313] , [ 1314763200000 , 48.631009702577] , [ 1317355200000 , 42.830831754505] , [ 1320033600000 , 35.611502589362] , [ 1322629200000 , 35.320136981738] , [ 1325307600000 , 31.564136901516] , [ 1327986000000 , 32.074407502433] , [ 1330491600000 , 35.053013769976] , [ 1333166400000 , 26.434568573937] , [ 1335758400000 , 25.305617871002] , [ 1338436800000 , 24.520919418236]]
+  } , 
+  { 
+    "key" : "Materials" , 
+    "values" : [ [ 1138683600000 , 5.5806167415681] , [ 1141102800000 , 5.4539047069985] , [ 1143781200000 , 7.6728842432362] , [ 1146369600000 , 7.719946716654] , [ 1149048000000 , 8.0144619912942] , [ 1151640000000 , 7.942223133434] , [ 1154318400000 , 8.3998279827444] , [ 1156996800000 , 8.532324572605] , [ 1159588800000 , 4.7324285199763] , [ 1162270800000 , 4.7402397487697] , [ 1164862800000 , 4.9042069355168] , [ 1167541200000 , 5.9583963430882] , [ 1170219600000 , 6.3693899239171] , [ 1172638800000 , 6.261153903813] , [ 1175313600000 , 5.3443942184584] , [ 1177905600000 , 5.4932111235361] , [ 1180584000000 , 5.5747393101109] , [ 1183176000000 , 5.3833633060013] , [ 1185854400000 , 5.5125898831832] , [ 1188532800000 , 5.8116112661327] , [ 1191124800000 , 4.3962296939996] , [ 1193803200000 , 4.6967663605521] , [ 1196398800000 , 4.7963004350914] , [ 1199077200000 , 4.1817985183351] , [ 1201755600000 , 4.3797643870182] , [ 1204261200000 , 4.6966642197965] , [ 1206936000000 , 4.3609995132565] , [ 1209528000000 , 4.4736290996496] , [ 1212206400000 , 4.3749762738128] , [ 1214798400000 , 3.3274661194507] , [ 1217476800000 , 3.0316184691337] , [ 1220155200000 , 2.5718140204728] , [ 1222747200000 , 2.7034994044603] , [ 1225425600000 , 2.2033786591364] , [ 1228021200000 , 1.9850621240805] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0.44495950017788] , [ 1256961600000 , 0.33945469262483] , [ 1259557200000 , 0.38348269455195] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0.52216435716176] , [ 1298869200000 , 0.59275786698454] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } , 
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1138683600000 , 3.7056975170243] , [ 1141102800000 , 3.7561118692318] , [ 1143781200000 , 2.861913700854] , [ 1146369600000 , 2.9933744103381] , [ 1149048000000 , 2.7127537218463] , [ 1151640000000 , 3.1195497076283] , [ 1154318400000 , 3.4066964004508] , [ 1156996800000 , 3.3754571113569] , [ 1159588800000 , 2.2965579982924] , [ 1162270800000 , 2.4486818633018] , [ 1164862800000 , 2.4002308848517] , [ 1167541200000 , 1.9649579750349] , [ 1170219600000 , 1.9385263638056] , [ 1172638800000 , 1.9128975336387] , [ 1175313600000 , 2.3412869836298] , [ 1177905600000 , 2.4337870351445] , [ 1180584000000 , 2.62179703171] , [ 1183176000000 , 3.2642864957929] , [ 1185854400000 , 3.3200396223709] , [ 1188532800000 , 3.3934212707572] , [ 1191124800000 , 4.2822327088179] , [ 1193803200000 , 4.1474964228541] , [ 1196398800000 , 4.1477082879801] , [ 1199077200000 , 5.2947122916128] , [ 1201755600000 , 5.2919843508028] , [ 1204261200000 , 5.1989783050309] , [ 1206936000000 , 3.5603057673513] , [ 1209528000000 , 3.3009087690692] , [ 1212206400000 , 3.1784852603792] , [ 1214798400000 , 4.5889503538868] , [ 1217476800000 , 4.401779617494] , [ 1220155200000 , 4.2208301828278] , [ 1222747200000 , 3.89396671475] , [ 1225425600000 , 3.0423832241354] , [ 1228021200000 , 3.135520611578] , [ 1230699600000 , 1.9631418164089] , [ 1233378000000 , 1.8963543874958] , [ 1235797200000 , 1.8266636017025] , [ 1238472000000 , 0.93136635895188] , [ 1241064000000 , 0.92737801918888] , [ 1243742400000 , 0.97591889805002] , [ 1246334400000 , 2.6841193805515] , [ 1249012800000 , 2.5664341140531] , [ 1251691200000 , 2.3887523699873] , [ 1254283200000 , 1.1737801663681] , [ 1256961600000 , 1.0953582317281] , [ 1259557200000 , 1.2495674976653] , [ 1262235600000 , 0.36607452464754] , [ 1264914000000 , 0.3548719047291] , [ 1267333200000 , 0.36769242398939] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0.85450741275337] , [ 1288497600000 , 0.91360317921637] , [ 1291093200000 , 0.89647678692269] , [ 1293771600000 , 0.87800687192639] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0.43668720882994] , [ 1304136000000 , 0.4756523602692] , [ 1306814400000 , 0.46947368328469] , [ 1309406400000 , 0.45138896152316] , [ 1312084800000 , 0.43828726648117] , [ 1314763200000 , 2.0820861395316] , [ 1317355200000 , 0.9364411075395] , [ 1320033600000 , 0.60583907839773] , [ 1322629200000 , 0.61096950747437] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } , 
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 0] , [ 1225425600000 , 0] , [ 1228021200000 , 0] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } 
+].map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+
+
+
+var histcatexpshort = [ 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1138683600000 , -0.62238434102863] , [ 1141102800000 , -0.61484565039024] , [ 1143781200000 , -1.0769367918668] , [ 1146369600000 , -1.2221156604129] , [ 1149048000000 , -1.2434858263377] , [ 1151640000000 , -0.58606435489597] , [ 1154318400000 , -0.61478911495141] , [ 1156996800000 , -0.61429362688591] , [ 1159588800000 , -1.1168614112788] , [ 1162270800000 , -1.1510268716612] , [ 1164862800000 , -1.1104724164222] , [ 1167541200000 , -1.2298338563471] , [ 1170219600000 , -1.5053664389104] , [ 1172638800000 , -1.5535266372193] , [ 1175313600000 , -3.1690472535854] , [ 1177905600000 , -3.1273013967041] , [ 1180584000000 , -3.155466271777] , [ 1183176000000 , -3.7158562579437] , [ 1185854400000 , -3.8244546635586] , [ 1188532800000 , -3.5524464859972] , [ 1191124800000 , -3.0472339109128] , [ 1193803200000 , -3.064978140815] , [ 1196398800000 , -3.0818130124986] , [ 1199077200000 , -2.9806791138312] , [ 1201755600000 , -3.7360958775824] , [ 1204261200000 , -3.4687841733263] , [ 1206936000000 , -3.3702018615806] , [ 1209528000000 , -3.1982756208679] , [ 1212206400000 , -3.0489433155104] , [ 1214798400000 , -3.7008275605963] , [ 1217476800000 , -3.8980507260892] , [ 1220155200000 , -3.7680083260241] , [ 1222747200000 , -3.2061890012391] , [ 1225425600000 , -2.6727551440484] , [ 1228021200000 , -2.4469327462935] , [ 1230699600000 , -3.0192419668784] , [ 1233378000000 , -2.892958553476] , [ 1235797200000 , -3.1153570053479] , [ 1238472000000 , -2.9927580570711] , [ 1241064000000 , -3.5061796706294] , [ 1243742400000 , -3.2944159516725] , [ 1246334400000 , -3.4154213240617] , [ 1249012800000 , -3.6492125438171] , [ 1251691200000 , -3.6674164998394] , [ 1254283200000 , -4.6271484977727] , [ 1256961600000 , -4.2433407292676] , [ 1259557200000 , -4.4742625247274] , [ 1262235600000 , -5.2078214612359] , [ 1264914000000 , -5.2209579214469] , [ 1267333200000 , -5.4596395756061] , [ 1270008000000 , -5.6906459276584] , [ 1272600000000 , -6.4981737808665] , [ 1275278400000 , -6.2563044048578] , [ 1277870400000 , -6.175479487959] , [ 1280548800000 , -6.6641002427295] , [ 1283227200000 , -6.3648667745556] , [ 1285819200000 , -5.0270168607884] , [ 1288497600000 , -5.1186072976233] , [ 1291093200000 , -5.1127601587872] , [ 1293771600000 , -5.3015262972641] , [ 1296450000000 , -4.4295728671596] , [ 1298869200000 , -4.5488139745696] , [ 1301544000000 , -2.9021260315957] , [ 1304136000000 , -3.1482096241139] , [ 1306814400000 , -2.8648831814763] , [ 1309406400000 , -2.8149423433441] , [ 1312084800000 , -2.6350669145713] , [ 1314763200000 , -5.9871754759038] , [ 1317355200000 , -8.6127555816399] , [ 1320033600000 , -7.0712887348892] , [ 1322629200000 , -7.3930257999857] , [ 1325307600000 , -6.5183071556304] , [ 1327986000000 , -7.4388913793503] , [ 1330491600000 , -8.2134465182649] , [ 1333166400000 , -7.7836036697105] , [ 1335758400000 , -8.0955053683936] , [ 1338436800000 , -8.0981845818893]]
+  } , 
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , -0.24102139376003] , [ 1170219600000 , -0.69960584365035] , [ 1172638800000 , -0.67365051426185] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.31429312464988] , [ 1185854400000 , -0.90018700397153] , [ 1188532800000 , -0.96926214328714] , [ 1191124800000 , -1.1343386468131] , [ 1193803200000 , -1.1335426595455] , [ 1196398800000 , -1.2327663032424] , [ 1199077200000 , -0.41027135492155] , [ 1201755600000 , -0.41779167524802] , [ 1204261200000 , -0.38133883625885] , [ 1206936000000 , 0] , [ 1209528000000 , -0.32550520320253] , [ 1212206400000 , -0.33185144615505] , [ 1214798400000 , -0.68609668877894] , [ 1217476800000 , -0.70001207744308] , [ 1220155200000 , -0.68378680840919] , [ 1222747200000 , -0.40908783182034] , [ 1225425600000 , -0.39074266525646] , [ 1228021200000 , -0.40358490474562] , [ 1230699600000 , -0.85752207262267] , [ 1233378000000 , -0.74395750438805] , [ 1235797200000 , -0.70718832429489] , [ 1238472000000 , -0.76244465406965] , [ 1241064000000 , -0.67618572591984] , [ 1243742400000 , -0.67649596761402] , [ 1246334400000 , -0.94618002703247] , [ 1249012800000 , -0.95408485581014] , [ 1251691200000 , -0.96272139504276] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , -0.25516420149471] , [ 1272600000000 , -0.24106264576017] , [ 1275278400000 , -0.22802547751448] , [ 1277870400000 , -0.62187524046697] , [ 1280548800000 , -0.72155608677106] , [ 1283227200000 , -0.70221659944774] , [ 1285819200000 , -1.1117002584543] , [ 1288497600000 , -1.190911001336] , [ 1291093200000 , -1.1781082003972] , [ 1293771600000 , -1.2125860264875] , [ 1296450000000 , -1.7748010365657] , [ 1298869200000 , -1.8919594178596] , [ 1301544000000 , -1.7077946421533] , [ 1304136000000 , -2.024238803094] , [ 1306814400000 , -1.9769844081819] , [ 1309406400000 , -2.0730275464065] , [ 1312084800000 , -1.9690128240888] , [ 1314763200000 , -5.5557852269348] , [ 1317355200000 , -7.2527933190641] , [ 1320033600000 , -5.7367677053109] , [ 1322629200000 , -6.0409316206662] , [ 1325307600000 , -4.6511525539195] , [ 1327986000000 , -4.526116059083] , [ 1330491600000 , -4.846292325197] , [ 1333166400000 , -2.2663198779425] , [ 1335758400000 , -2.4172072568564] , [ 1338436800000 , -2.3204729601189]]
+  } , 
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1138683600000 , -0.95707527558303] , [ 1141102800000 , -0.78324346694487] , [ 1143781200000 , -1.2905241058019] , [ 1146369600000 , -1.3880880486779] , [ 1149048000000 , -1.3337247185993] , [ 1151640000000 , -1.0342112071924] , [ 1154318400000 , -1.1264764100183] , [ 1156996800000 , -1.0001002640852] , [ 1159588800000 , -0.85341153093953] , [ 1162270800000 , -0.88452017844596] , [ 1164862800000 , -0.84305725300642] , [ 1167541200000 , -1.0874455682301] , [ 1170219600000 , -1.1714969043168] , [ 1172638800000 , -1.1445856467934] , [ 1175313600000 , -1.1928513334073] , [ 1177905600000 , -1.2365691634265] , [ 1180584000000 , -1.2690940962478] , [ 1183176000000 , -1.662233774695] , [ 1185854400000 , -1.745760538781] , [ 1188532800000 , -1.5209200931271] , [ 1191124800000 , -1.7874791820886] , [ 1193803200000 , -1.7755668105117] , [ 1196398800000 , -1.5456069064618] , [ 1199077200000 , -1.7077541586335] , [ 1201755600000 , -1.6462081650757] , [ 1204261200000 , -1.8624735339628] , [ 1206936000000 , -0.71073453533048] , [ 1209528000000 , -0.75380709640219] , [ 1212206400000 , -0.71020554911716] , [ 1214798400000 , -1.2077850914504] , [ 1217476800000 , -1.0505576787644] , [ 1220155200000 , -0.97804595164878] , [ 1222747200000 , -0.34591294663671] , [ 1225425600000 , -0.19958331514025] , [ 1228021200000 , -0.17599782216296] , [ 1230699600000 , -0.49577714121027] , [ 1233378000000 , -0.51644059173978] , [ 1235797200000 , -0.48576859637083] , [ 1238472000000 , -0.75596531126452] , [ 1241064000000 , -0.72073358315801] , [ 1243742400000 , -0.82125996732294] , [ 1246334400000 , -1.4933216860121] , [ 1249012800000 , -1.5003760525933] , [ 1251691200000 , -1.4744921420596] , [ 1254283200000 , -1.8197844060652] , [ 1256961600000 , -1.6558574419626] , [ 1259557200000 , -1.7256149254159] , [ 1262235600000 , -2.7667194124217] , [ 1264914000000 , -2.9113351806903] , [ 1267333200000 , -3.0172806042796] , [ 1270008000000 , -2.8607175559701] , [ 1272600000000 , -2.629226972169] , [ 1275278400000 , -2.1855196883832] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -1.3788733828844] , [ 1288497600000 , -1.4136792139765] , [ 1291093200000 , -1.5176522942901] , [ 1293771600000 , -1.5776651933208] , [ 1296450000000 , -1.7171675182182] , [ 1298869200000 , -1.8121885250566] , [ 1301544000000 , -1.2221934283206] , [ 1304136000000 , -1.2910715239439] , [ 1306814400000 , -1.1492301612576] , [ 1309406400000 , -1.0613891302841] , [ 1312084800000 , -0.99605193205308] , [ 1314763200000 , -1.7324212072278] , [ 1317355200000 , -1.5226856867477] , [ 1320033600000 , -1.3159138896549] , [ 1322629200000 , -1.3925952659299] , [ 1325307600000 , -1.59624913621] , [ 1327986000000 , -1.5235879880296] , [ 1330491600000 , -1.7315573519279] , [ 1333166400000 , -0.86883431220926] , [ 1335758400000 , -0.90144871282829] , [ 1338436800000 , -0.7010492182517]]
+  } , 
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1138683600000 , -0.56797103580254] , [ 1141102800000 , -0.57324319174933] , [ 1143781200000 , -1.1014818753272] , [ 1146369600000 , -1.1480256918118] , [ 1149048000000 , -1.0709335336775] , [ 1151640000000 , -0.84876993929658] , [ 1154318400000 , -0.88122638919979] , [ 1156996800000 , -0.86421146074279] , [ 1159588800000 , -0.95093689377974] , [ 1162270800000 , -0.96646862382248] , [ 1164862800000 , -0.96726919442167] , [ 1167541200000 , -0.99874655234936] , [ 1170219600000 , -1.0004843898938] , [ 1172638800000 , -0.9925349676815] , [ 1175313600000 , -1.1888941931287] , [ 1177905600000 , -1.9402228220929] , [ 1180584000000 , -2.03915987194] , [ 1183176000000 , -2.4620526931074] , [ 1185854400000 , -2.2423544651877] , [ 1188532800000 , -1.8790998536037] , [ 1191124800000 , -0.43246873489492] , [ 1193803200000 , -0.40142684216371] , [ 1196398800000 , -0.35646635110466] , [ 1199077200000 , -0.90385702817642] , [ 1201755600000 , -0.86997575249605] , [ 1204261200000 , -0.80101406775415] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.31816167663298] , [ 1217476800000 , -0.309250081849] , [ 1220155200000 , -0.27723698582762] , [ 1222747200000 , -0.32001379372079] , [ 1225425600000 , -0.1940212908561] , [ 1228021200000 , -0.051964569203423] , [ 1230699600000 , -0.68342686502452] , [ 1233378000000 , -0.57645644730726] , [ 1235797200000 , -0.50860972184555] , [ 1238472000000 , -0.44405217759605] , [ 1241064000000 , -0.45224333626901] , [ 1243742400000 , -0.41691818252313] , [ 1246334400000 , -2.4654561579904] , [ 1249012800000 , -2.5473566378551] , [ 1251691200000 , -2.8340604021307] , [ 1254283200000 , -1.8452445924041] , [ 1256961600000 , -1.5626544265386] , [ 1259557200000 , -1.707842764916] , [ 1262235600000 , -1.2237258567344] , [ 1264914000000 , -1.9756896168227] , [ 1267333200000 , -2.0920321696833] , [ 1270008000000 , -1.9782327706952] , [ 1272600000000 , -2.0416328165753] , [ 1275278400000 , -1.7816736134798] , [ 1277870400000 , -0.66092275437689] , [ 1280548800000 , -0.73608099025756] , [ 1283227200000 , -0.63686713461189] , [ 1285819200000 , -0.0024159482973197] , [ 1288497600000 , -0.0023052643588188] , [ 1291093200000 , -0.0023008251965446] , [ 1293771600000 , -0.002247807834351] , [ 1296450000000 , -0.62004345920743] , [ 1298869200000 , -0.69634926653235] , [ 1301544000000 , -0.76013525555354] , [ 1304136000000 , -1.505368495849] , [ 1306814400000 , -1.3456949237707] , [ 1309406400000 , -1.3013934898695] , [ 1312084800000 , -1.183199519395] , [ 1314763200000 , -0.0074317809719494] , [ 1317355200000 , -0.019430458325379] , [ 1320033600000 , -0.015777413509084] , [ 1322629200000 , -0.016463879837718] , [ 1325307600000 , -0.0031338919976225] , [ 1327986000000 , -0.0029770278967514] , [ 1330491600000 , -0.003048902987439] , [ 1333166400000 , -0.71171545945298] , [ 1335758400000 , -0.72003299240508] , [ 1338436800000 , -0.72961974845039]]
+  } , 
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16816074963595] , [ 1185854400000 , -0.19318598121302] , [ 1188532800000 , -0.20130864403797] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.30476443991021] , [ 1217476800000 , -0.31836730824777] , [ 1220155200000 , -0.30797427879366] , [ 1222747200000 , -0.48318623977865] , [ 1225425600000 , -0.50834562674351] , [ 1228021200000 , -0.47936068182503] , [ 1230699600000 , -0.61753010081956] , [ 1233378000000 , -0.59493587396819] , [ 1235797200000 , -0.62664324339064] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -1.3076157801726] , [ 1256961600000 , -1.2306204787628] , [ 1259557200000 , -1.4728435992801] , [ 1262235600000 , -1.7729831226837] , [ 1264914000000 , -1.7711733839842] , [ 1267333200000 , -1.8233584472099] , [ 1270008000000 , -1.8505979461969] , [ 1272600000000 , -1.5989071613823] , [ 1275278400000 , -1.6636770720413] , [ 1277870400000 , -1.4523909758725] , [ 1280548800000 , -1.503771584105] , [ 1283227200000 , -1.5458561450475] , [ 1285819200000 , -1.457331837483] , [ 1288497600000 , -1.4217332434071] , [ 1291093200000 , -1.4687927303394] , [ 1293771600000 , -1.437223057967] , [ 1296450000000 , -0.72221871524334] , [ 1298869200000 , -0.7399575414588] , [ 1301544000000 , -1.9712239746745] , [ 1304136000000 , -2.2360949351942] , [ 1306814400000 , -2.2147572530541] , [ 1309406400000 , -2.0440932285023] , [ 1312084800000 , -1.9438209561938] , [ 1314763200000 , -4.9035620630386] , [ 1317355200000 , -4.9036674804213] , [ 1320033600000 , -4.1900706458801] , [ 1322629200000 , -4.5602615827955] , [ 1325307600000 , -1.9194421885814] , [ 1327986000000 , -1.8854470816382] , [ 1330491600000 , -1.9514785018245] , [ 1333166400000 , -0.65282205870454] , [ 1335758400000 , -0.57068368199209] , [ 1338436800000 , -0.55902563384907]]
+  } , 
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1138683600000 , -0.390983707093] , [ 1141102800000 , -0.38471122730537] , [ 1143781200000 , -0.22897173467143] , [ 1146369600000 , -0.23798946472286] , [ 1149048000000 , -0.20721233428173] , [ 1151640000000 , -0.54577697700394] , [ 1154318400000 , -0.50300252995937] , [ 1156996800000 , -0.49609518628103] , [ 1159588800000 , -0.19582276889273] , [ 1162270800000 , -0.60399139945108] , [ 1164862800000 , -0.61477368082886] , [ 1167541200000 , -0.13665869881705] , [ 1170219600000 , -0.13147565243332] , [ 1172638800000 , -0.11819441593356] , [ 1175313600000 , -0.41610825689528] , [ 1177905600000 , -0.38815419659358] , [ 1180584000000 , -0.3703838943035] , [ 1183176000000 , -1.6193903804534] , [ 1185854400000 , -1.6502660417328] , [ 1188532800000 , -1.481875010149] , [ 1191124800000 , -0.96180099322536] , [ 1193803200000 , -0.97017301394967] , [ 1196398800000 , -0.97432971260093] , [ 1199077200000 , -0.36071934518387] , [ 1201755600000 , -0.42150070991777] , [ 1204261200000 , -0.41784042793202] , [ 1206936000000 , -0.70494708349169] , [ 1209528000000 , -0.73449590911984] , [ 1212206400000 , -0.7400163600788] , [ 1214798400000 , -0.52584502195668] , [ 1217476800000 , -0.56224806965368] , [ 1220155200000 , -0.50830855192741] , [ 1222747200000 , -0.79494637898049] , [ 1225425600000 , -0.70391433947286] , [ 1228021200000 , -0.61420660317009] , [ 1230699600000 , -0.41699636242004] , [ 1233378000000 , -0.3779041158185] , [ 1235797200000 , -0.34282498854047] , [ 1238472000000 , -0.83845630450592] , [ 1241064000000 , -0.85937944918912] , [ 1243742400000 , -0.85530287999615] , [ 1246334400000 , -1.2819866264007] , [ 1249012800000 , -1.4598491663715] , [ 1251691200000 , -1.5261472177779] , [ 1254283200000 , -1.2503948993549] , [ 1256961600000 , -1.1767079775724] , [ 1259557200000 , -1.2585538260386] , [ 1262235600000 , -3.420972598165] , [ 1264914000000 , -3.3381337072954] , [ 1267333200000 , -3.7043129330694] , [ 1270008000000 , -4.6924500756609] , [ 1272600000000 , -4.6880683704908] , [ 1275278400000 , -4.3335249071719] , [ 1277870400000 , -3.6545810416445] , [ 1280548800000 , -4.1639787701262] , [ 1283227200000 , -3.8249597612047] , [ 1285819200000 , -0.33221815335641] , [ 1288497600000 , -0.33346468179047] , [ 1291093200000 , -0.34546911228789] , [ 1293771600000 , -0.36609971997147] , [ 1296450000000 , -0.42502545672607] , [ 1298869200000 , -0.38192733348507] , [ 1301544000000 , -0.01991033447621] , [ 1304136000000 , -0.020319195299659] , [ 1306814400000 , -0.018147820835144] , [ 1309406400000 , -0.017923186209383] , [ 1312084800000 , -0.016133999253684] , [ 1314763200000 , -0.72058656278977] , [ 1317355200000 , -0.42812646564889] , [ 1320033600000 , -0.35896134792589] , [ 1322629200000 , -0.38637896444549] , [ 1325307600000 , -0.31794663984021] , [ 1327986000000 , -0.32220831831888] , [ 1330491600000 , -0.37107872672214] , [ 1333166400000 , -0.81968633933695] , [ 1335758400000 , -0.77148300885994] , [ 1338436800000 , -0.77392261735539]]
+  } , 
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1138683600000 , -0.86346955704548] , [ 1141102800000 , -0.88352373534584] , [ 1143781200000 , -1.2630802711685] , [ 1146369600000 , -1.2352593999242] , [ 1149048000000 , -1.2086379045093] , [ 1151640000000 , -1.0416778473647] , [ 1154318400000 , -0.99326278105154] , [ 1156996800000 , -1.0095045907007] , [ 1159588800000 , -2.0762515478576] , [ 1162270800000 , -2.13066829429] , [ 1164862800000 , -2.2458400474235] , [ 1167541200000 , -2.1315262677135] , [ 1170219600000 , -2.4063108252146] , [ 1172638800000 , -2.3753290631454] , [ 1175313600000 , -2.1119577565913] , [ 1177905600000 , -2.1546804750397] , [ 1180584000000 , -2.3768374034303] , [ 1183176000000 , -1.244878330098] , [ 1185854400000 , -1.2233210265236] , [ 1188532800000 , -1.1715073644317] , [ 1191124800000 , -1.0036136395928] , [ 1193803200000 , -0.9510676777939] , [ 1196398800000 , -0.97553526602196] , [ 1199077200000 , -1.9083849411912] , [ 1201755600000 , -1.855965027796] , [ 1204261200000 , -1.7343633512402] , [ 1206936000000 , -2.1847032903649] , [ 1209528000000 , -2.2095446284368] , [ 1212206400000 , -2.2060678671735] , [ 1214798400000 , -1.0941627910924] , [ 1217476800000 , -1.0004352405294] , [ 1220155200000 , -0.93563501378075] , [ 1222747200000 , 0] , [ 1225425600000 , -0.65155092645953] , [ 1228021200000 , -0.66021585164047] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -0.29297573068109] , [ 1256961600000 , -0.75043756379084] , [ 1259557200000 , -0.85690846482745] , [ 1262235600000 , -0.21937480770873] , [ 1264914000000 , -0.93232569935343] , [ 1267333200000 , -0.94180327525084] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -0.21253553193891] , [ 1288497600000 , -0.23178244747722] , [ 1291093200000 , -0.21481706129968] , [ 1293771600000 , -0.23306463011242] , [ 1296450000000 , -0.90244048159158] , [ 1298869200000 , -1.0410052083529] , [ 1301544000000 , -2.209350937089] , [ 1304136000000 , -2.6540796712932] , [ 1306814400000 , -3.2481210590957] , [ 1309406400000 , -3.0717986354635] , [ 1312084800000 , -2.7493296528921] , [ 1314763200000 , -2.1973991293256] , [ 1317355200000 , -0.86403111842659] , [ 1320033600000 , -0.87824756160219] , [ 1322629200000 , -0.80812571482871] , [ 1325307600000 , -1.6419820357151] , [ 1327986000000 , -1.6893790342619] , [ 1330491600000 , -1.8614499455474] , [ 1333166400000 , -1.814727017516] , [ 1335758400000 , -1.8744942128618] , [ 1338436800000 , -1.7880124850882]]
+  } , 
+  { 
+    "key" : "Materials" , 
+    "values" : [ [ 1138683600000 , -0.26079769654951] , [ 1141102800000 , -0.23368425410881] , [ 1143781200000 , -0.46285283466193] , [ 1146369600000 , -0.4588429059205] , [ 1149048000000 , -0.43055120080853] , [ 1151640000000 , -0.26428963363642] , [ 1154318400000 , -0.26203611963364] , [ 1156996800000 , -0.26706156717825] , [ 1159588800000 , -0.024613610779192] , [ 1162270800000 , -0.024351047945929] , [ 1164862800000 , -0.031497065480344] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , -0.83875613435932] , [ 1209528000000 , -0.84367445572656] , [ 1212206400000 , -0.78928126005463] , [ 1214798400000 , -1.1075954825404] , [ 1217476800000 , -1.2704836497926] , [ 1220155200000 , -1.307504052056] , [ 1222747200000 , -0.70440409992826] , [ 1225425600000 , -0.74122140007729] , [ 1228021200000 , -0.82224393045109] , [ 1230699600000 , -1.8719055314571] , [ 1233378000000 , -1.5200311233975] , [ 1235797200000 , -1.5552386899059] , [ 1238472000000 , -1.1576593040773] , [ 1241064000000 , -1.0757811060575] , [ 1243742400000 , -1.0250125722511] , [ 1246334400000 , -2.2747597224127] , [ 1249012800000 , -2.3125499227974] , [ 1251691200000 , -2.2784386530745] , [ 1254283200000 , -1.1518806233757] , [ 1256961600000 , -1.0075503399018] , [ 1259557200000 , -1.1400577929481] , [ 1262235600000 , -0.50677891891165] , [ 1264914000000 , -0.54332908490051] , [ 1267333200000 , -0.55473181189807] , [ 1270008000000 , -0.3633796157757] , [ 1272600000000 , -0.30361861470847] , [ 1275278400000 , -0.24614951229153] , [ 1277870400000 , -1.0959443687647] , [ 1280548800000 , -1.1881529264637] , [ 1283227200000 , -1.1835349242596] , [ 1285819200000 , -0.92507477884561] , [ 1288497600000 , -0.94531016133473] , [ 1291093200000 , -0.93519433603434] , [ 1293771600000 , -1.009221344252] , [ 1296450000000 , -2.3640716285835] , [ 1298869200000 , -2.4914494188556] , [ 1301544000000 , -1.7979456141716] , [ 1304136000000 , -2.1389760840247] , [ 1306814400000 , -1.9721362241269] , [ 1309406400000 , -1.9170229522382] , [ 1312084800000 , -1.8076246545605] , [ 1314763200000 , -2.1010686108381] , [ 1317355200000 , -2.2396373791195] , [ 1320033600000 , -1.8469012813015] , [ 1322629200000 , -2.0079125997321] , [ 1325307600000 , -1.9170007806182] , [ 1327986000000 , -1.9239118384243] , [ 1330491600000 , -2.0649464738798] , [ 1333166400000 , -0.88385747789351] , [ 1335758400000 , -0.91438087144161] , [ 1338436800000 , -0.96513752020965]]
+  } , 
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.077395192503573] , [ 1146369600000 , -0.079342784160835] , [ 1149048000000 , -0.07376956808809] , [ 1151640000000 , -0.041850521681201] , [ 1154318400000 , -0.037598545052499] , [ 1156996800000 , -0.040984079427717] , [ 1159588800000 , -0.19335817797448] , [ 1162270800000 , -0.18578493919925] , [ 1164862800000 , -0.1769473933101] , [ 1167541200000 , -0.57245352054975] , [ 1170219600000 , -0.61554187332911] , [ 1172638800000 , -0.63016714701151] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.12118014109021] , [ 1185854400000 , -0.11085831487208] , [ 1188532800000 , -0.10901265358445] , [ 1191124800000 , -0.17205583275088] , [ 1193803200000 , -0.16573676303991] , [ 1196398800000 , -0.17954841680392] , [ 1199077200000 , -0.82703336198161] , [ 1201755600000 , -0.76741763304227] , [ 1204261200000 , -0.79430844816827] , [ 1206936000000 , -1.0279404050708] , [ 1209528000000 , -1.0342425093761] , [ 1212206400000 , -1.0903083860383] , [ 1214798400000 , -1.0895432841007] , [ 1217476800000 , -1.1392703218146] , [ 1220155200000 , -0.98872086340391] , [ 1222747200000 , -1.227654651568] , [ 1225425600000 , -1.0527419580394] , [ 1228021200000 , -0.84338280322309] , [ 1230699600000 , -0.5982617279246] , [ 1233378000000 , -0.74123723862634] , [ 1235797200000 , -0.81665712408277] , [ 1238472000000 , -0.89868760705228] , [ 1241064000000 , -0.86338472153689] , [ 1243742400000 , -0.85040889603889] , [ 1246334400000 , -0.82872733882926] , [ 1249012800000 , -1.2797824676355] , [ 1251691200000 , -1.152043882336] , [ 1254283200000 , -0.70125890680538] , [ 1256961600000 , -0.69496338525418] , [ 1259557200000 , -0.81982038022784] , [ 1262235600000 , -0.42841700219624] , [ 1264914000000 , -0.43298861575253] , [ 1267333200000 , -0.46951194437705] , [ 1270008000000 , -0.46723980191721] , [ 1272600000000 , -0.43139262322841] , [ 1275278400000 , -0.4052075794202] , [ 1277870400000 , -0.45399431179247] , [ 1280548800000 , -0.50492374473014] , [ 1283227200000 , -0.49032976375464] , [ 1285819200000 , -0.95769381063728] , [ 1288497600000 , -0.92968381683254] , [ 1291093200000 , -0.90984207437415] , [ 1293771600000 , -0.91448295661871] , [ 1296450000000 , -1.3204103334172] , [ 1298869200000 , -1.3896989018] , [ 1301544000000 , -1.8536993972883] , [ 1304136000000 , -1.9901582471947] , [ 1306814400000 , -1.8731097808809] , [ 1309406400000 , -1.8109819859122] , [ 1312084800000 , -1.7946593386661] , [ 1314763200000 , -1.6002716669781] , [ 1317355200000 , -0.056479286204019] , [ 1320033600000 , -0.046232413998891] , [ 1322629200000 , -0.051182355563531] , [ 1325307600000 , -0.032858749040145] , [ 1327986000000 , -0.032326418106178] , [ 1330491600000 , -0.033980477379241] , [ 1333166400000 , -0.053069550536519] , [ 1335758400000 , -0.055741850564434] , [ 1338436800000 , -0.055851808568252]]
+  } , 
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.073769471773675] , [ 1146369600000 , -0.077824496315782] , [ 1149048000000 , -0.080696288096361] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16073291656515] , [ 1185854400000 , -0.1646253606633] , [ 1188532800000 , -0.1655815581449] , [ 1191124800000 , -0.74417496631713] , [ 1193803200000 , -0.76230340423681] , [ 1196398800000 , -0.73882938190048] , [ 1199077200000 , -0.3820573391806] , [ 1201755600000 , -0.360757285179] , [ 1204261200000 , -0.38081058463615] , [ 1206936000000 , -0.92767439811083] , [ 1209528000000 , -0.92774728028789] , [ 1212206400000 , -0.85273481694714] , [ 1214798400000 , -1.69407085613] , [ 1217476800000 , -1.5179726219101] , [ 1220155200000 , -1.3576700600738] , [ 1222747200000 , -1.0404839864076] , [ 1225425600000 , -0.95251478838915] , [ 1228021200000 , -1.0610509118017] , [ 1230699600000 , -0.3316792294278] , [ 1233378000000 , -0.33745002288524] , [ 1235797200000 , -0.28806366796683] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , -0.6338555382785] , [ 1249012800000 , -0.62797265130959] , [ 1251691200000 , -0.60264057253794] , [ 1254283200000 , -0.28687231077181] , [ 1256961600000 , -0.22215649778327] , [ 1259557200000 , -0.24027664555676] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } 
+].map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+
+
+
+nv.addGraph(function() {
+  var chart = nv.models.stackedAreaChart()
+                .clipEdge(true);
+
+  chart.xAxis
+      .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart1')
+    .datum(histcatexplong)
+      .transition().duration(500).call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+nv.addGraph(function() {
+  var chart = nv.models.stackedAreaChart()
+                .clipEdge(true);
+
+  chart.xAxis
+      .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart2')
+    .datum(histcatexpshort)
+      .transition().duration(500).call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+
+</script>
diff --git a/deprecated/stackedAreaChart_old.html b/deprecated/stackedAreaChart_old.html
new file mode 100644
index 0000000..e344992
--- /dev/null
+++ b/deprecated/stackedAreaChart_old.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<!-- including all the components so I don't have to minify every time I test in development -->
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script src="../src/models/stackedAreaWithLegend.js"></script>
+<script src="../src/charts/stackedAreaChart.js"></script>
+<script>
+
+
+
+
+var histcatexplong = [ 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1025409600000 , 23.041422681023] , [ 1028088000000 , 19.854291255832] , [ 1030766400000 , 21.02286281168] , [ 1033358400000 , 22.093608385173] , [ 1036040400000 , 25.108079299458] , [ 1038632400000 , 26.982389242348] , [ 1041310800000 , 19.828984957662] , [ 1043989200000 , 19.914055036294] , [ 1046408400000 , 19.436150539916] , [ 1049086800000 , 21.558650338602] , [ 1051675200000 , 24.395594061773] , [ 1054353600000 , 24.747089309384] , [ 1056945600000 , 23.491755498807] , [ 1059624000000 , 23.376634878164] , [ 1062302400000 , 24.581223154533] , [ 1064894400000 , 24.922476843538] , [ 1067576400000 , 27.357712939042] , [ 1070168400000 , 26.503020572593] , [ 1072846800000 , 26.658901244878] , [ 1075525200000 , 27.065704156445] , [ 1078030800000 , 28.735320452588] , [ 1080709200000 , 31.572277846319] , [ 1083297600000 , 30.932161503638] , [ 1085976000000 , 31.627029785554] , [ 1088568000000 , 28.728743674232] , [ 1091246400000 , 26.858365172675] , [ 1093924800000 , 27.279922830032] , [ 1096516800000 , 34.408301211324] , [ 1099195200000 , 34.794362930439] , [ 1101790800000 , 35.609978198951] , [ 1104469200000 , 33.574394968037] , [ 1107147600000 , 31.979405070598] , [ 1109566800000 , 31.19009040297] , [ 1112245200000 , 31.083933968994] , [ 1114833600000 , 29.668971113185] , [ 1117512000000 , 31.490638014379] , [ 1120104000000 , 31.818617451128] , [ 1122782400000 , 32.960314008183] , [ 1125460800000 , 31.313383196209] , [ 1128052800000 , 33.125486081852] , [ 1130734800000 , 32.791805509149] , [ 1133326800000 , 33.506038030366] , [ 1136005200000 , 26.96501697216] , [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218209] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957518] , [ 1149048000000 , 26.823411519396] , [ 1151640000000 , 23.850443591587] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393695] , [ 1159588800000 , 27.9771285113] , [ 1162270800000 , 29.073672469719] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687637] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271052] , [ 1175313600000 , 17.558388444187] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201301] , [ 1183176000000 , 18.729632971229] , [ 1185854400000 , 18.814523318847] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575716] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 17.175388025297] , [ 1201755600000 , 17.286592443522] , [ 1204261200000 , 16.323141626568] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391095] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.53936647598] , [ 1217476800000 , 15.255131790217] , [ 1220155200000 , 15.660963922592] , [ 1222747200000 , 13.254482273698] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090924] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672228] , [ 1241064000000 , 14.631445864799] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367017] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.756026065421] , [ 1259557200000 , 19.385804443146] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793024] , [ 1280548800000 , 29.461381693838] , [ 1283227200000 , 27.357322961861] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379724] , [ 1293771600000 , 29.449241421598] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449188] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.07966254541] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.418002742929] , [ 1312084800000 , 23.24364413887] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.67238082043] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213898] , [ 1330491600000 , 20.366462219461] , [ 1333166400000 , 19.284784434185] , [ 1335758400000 , 19.157810257624]]
+  }, 
+
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1025409600000 , 7.9356392949025] , [ 1028088000000 , 7.4514668527298] , [ 1030766400000 , 7.9085410566608] , [ 1033358400000 , 5.8996782364764] , [ 1036040400000 , 6.0591869346923] , [ 1038632400000 , 5.9667815800451] , [ 1041310800000 , 8.65528925664] , [ 1043989200000 , 8.7690763386254] , [ 1046408400000 , 8.6386160387453] , [ 1049086800000 , 5.9895557449743] , [ 1051675200000 , 6.3840324338159] , [ 1054353600000 , 6.5196511461441] , [ 1056945600000 , 7.0738618553114] , [ 1059624000000 , 6.5745957367133] , [ 1062302400000 , 6.4658359184444] , [ 1064894400000 , 2.7622758754954] , [ 1067576400000 , 2.9794782986241] , [ 1070168400000 , 2.8735432712019] , [ 1072846800000 , 1.6344817513645] , [ 1075525200000 , 1.5869248754883] , [ 1078030800000 , 1.7172279157246] , [ 1080709200000 , 1.9649927409867] , [ 1083297600000 , 2.0261695079196] , [ 1085976000000 , 2.0541261923929] , [ 1088568000000 , 3.9466318927569] , [ 1091246400000 , 3.7826770946089] , [ 1093924800000 , 3.9543021004028] , [ 1096516800000 , 3.8309891064711] , [ 1099195200000 , 3.6340958946166] , [ 1101790800000 , 3.5289755762525] , [ 1104469200000 , 5.702378559857] , [ 1107147600000 , 5.6539569019223] , [ 1109566800000 , 5.5449506370392] , [ 1112245200000 , 4.7579993280677] , [ 1114833600000 , 4.4816139372906] , [ 1117512000000 , 4.5965558568606] , [ 1120104000000 , 4.3747066116976] , [ 1122782400000 , 4.4588822917087] , [ 1125460800000 , 4.4460351848286] , [ 1128052800000 , 3.7989113035136] , [ 1130734800000 , 3.7743883140088] , [ 1133326800000 , 3.7727852823828] , [ 1136005200000 , 7.2968111448895] , [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220791] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 5.5611890039181] , [ 1335758400000 , 5.5979368839939]]
+  }, 
+
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1025409600000 , 1.4646843173806] , [ 1028088000000 , 1.2255947178893] , [ 1030766400000 , 1.4158447149914] , [ 1033358400000 , 1.0079176473732] , [ 1036040400000 , 1.30237558984] , [ 1038632400000 , 1.688609181773] , [ 1041310800000 , 2.084300956831] , [ 1043989200000 , 2.1374370551873] , [ 1046408400000 , 2.3282783517776] , [ 1049086800000 , 2.1973076058812] , [ 1051675200000 , 2.157261693164] , [ 1054353600000 , 2.2517863434814] , [ 1056945600000 , 1.2228256346504] , [ 1059624000000 , 1.1440109589209] , [ 1062302400000 , 1.2064470359759] , [ 1064894400000 , 2.500656510238] , [ 1067576400000 , 2.5387208947759] , [ 1070168400000 , 2.4603613044678] , [ 1072846800000 , 3.0150440824201] , [ 1075525200000 , 3.0543883162347] , [ 1078030800000 , 3.2706600781893] , [ 1080709200000 , 3.6312746608013] , [ 1083297600000 , 3.7328532659082] , [ 1085976000000 , 3.766358446065] , [ 1088568000000 , 2.6344481471685] , [ 1091246400000 , 2.763489510345] , [ 1093924800000 , 2.8565862394721] , [ 1096516800000 , 3.8555975117279] , [ 1099195200000 , 3.7062421881707] , [ 1101790800000 , 3.8020128704686] , [ 1104469200000 , 4.309131851142] , [ 1107147600000 , 4.3553997741931] , [ 1109566800000 , 4.8208488504576] , [ 1112245200000 , 4.1337237657138] , [ 1114833600000 , 3.8976502361354] , [ 1117512000000 , 4.0038454785722] , [ 1120104000000 , 3.6457285169699] , [ 1122782400000 , 3.7645930389974] , [ 1125460800000 , 3.9638322190019] , [ 1128052800000 , 4.2470697064323] , [ 1130734800000 , 3.9259866763827] , [ 1133326800000 , 3.8872767584613] , [ 1136005200000 , 1.4275237035221] , [ 1138683600000 , 1.544303464167] , [ 1141102800000 , 1.4387289432421] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 1.328626801128] , [ 1154318400000 , 1.2874050802627] , [ 1156996800000 , 1.0872743105593] , [ 1159588800000 , 0.96042562635813] , [ 1162270800000 , 0.93139372870616] , [ 1164862800000 , 0.94432167305385] , [ 1167541200000 , 1.277750166208] , [ 1170219600000 , 1.2204893886811] , [ 1172638800000 , 1.207489123122] , [ 1175313600000 , 1.2490651414113] , [ 1177905600000 , 1.2593129913052] , [ 1180584000000 , 1.373329808388] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 1.4516108933695] , [ 1225425600000 , 1.1856025268225] , [ 1228021200000 , 1.3430470355439] , [ 1230699600000 , 2.2752595354509] , [ 1233378000000 , 2.4031560010523] , [ 1235797200000 , 2.0822430731926] , [ 1238472000000 , 1.5640902826938] , [ 1241064000000 , 1.5812873972356] , [ 1243742400000 , 1.9462448548894] , [ 1246334400000 , 2.9464870223957] , [ 1249012800000 , 3.0744699383222] , [ 1251691200000 , 2.9422304628446] , [ 1254283200000 , 2.7503075599999] , [ 1256961600000 , 2.6506701800427] , [ 1259557200000 , 2.8005425319977] , [ 1262235600000 , 2.6816184971185] , [ 1264914000000 , 2.681206271327] , [ 1267333200000 , 2.8195488011259] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 1.0687057346382] , [ 1280548800000 , 1.2539400544134] , [ 1283227200000 , 1.1862969445955] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 1.941972859484] , [ 1298869200000 , 2.1142247697552] , [ 1301544000000 , 2.3788590206824] , [ 1304136000000 , 2.5337302877545] , [ 1306814400000 , 2.3163370395199] , [ 1309406400000 , 2.0645451843195] , [ 1312084800000 , 2.1004446672411] , [ 1314763200000 , 3.6301875804303] , [ 1317355200000 , 2.454204664652] , [ 1320033600000 , 2.196082370894] , [ 1322629200000 , 2.3358418255202] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  }, 
+
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1025409600000 , 7.9149900245423] , [ 1028088000000 , 7.0899888751059] , [ 1030766400000 , 7.5996132380614] , [ 1033358400000 , 8.2741174301034] , [ 1036040400000 , 9.3564460833513] , [ 1038632400000 , 9.7066786059904] , [ 1041310800000 , 10.213363052343] , [ 1043989200000 , 10.285809585273] , [ 1046408400000 , 10.222053149228] , [ 1049086800000 , 8.6188592137975] , [ 1051675200000 , 9.3335447543566] , [ 1054353600000 , 8.9312402186628] , [ 1056945600000 , 8.1895089343658] , [ 1059624000000 , 8.260622135079] , [ 1062302400000 , 7.7700786851364] , [ 1064894400000 , 7.9907428771318] , [ 1067576400000 , 8.7769091865606] , [ 1070168400000 , 8.4855077060661] , [ 1072846800000 , 9.6277203033655] , [ 1075525200000 , 9.9685913452624] , [ 1078030800000 , 10.615085181759] , [ 1080709200000 , 9.2902488079646] , [ 1083297600000 , 8.8610439830061] , [ 1085976000000 , 9.1075344931229] , [ 1088568000000 , 9.9156737639203] , [ 1091246400000 , 9.7826003238782] , [ 1093924800000 , 10.55403610555] , [ 1096516800000 , 10.926900264097] , [ 1099195200000 , 10.903144818736] , [ 1101790800000 , 10.862890389067] , [ 1104469200000 , 10.64604998964] , [ 1107147600000 , 10.042790814087] , [ 1109566800000 , 9.7173391591038] , [ 1112245200000 , 9.6122415755443] , [ 1114833600000 , 9.4337921146562] , [ 1117512000000 , 9.814827171183] , [ 1120104000000 , 12.059260396788] , [ 1122782400000 , 12.139649903873] , [ 1125460800000 , 12.281290663822] , [ 1128052800000 , 8.8037085409056] , [ 1130734800000 , 8.6300618239176] , [ 1133326800000 , 9.1225708491432] , [ 1136005200000 , 12.988124170836] , [ 1138683600000 , 13.356778764353] , [ 1141102800000 , 13.611196863271] , [ 1143781200000 , 6.8959030061189] , [ 1146369600000 , 6.9939633271353] , [ 1149048000000 , 6.7241510257676] , [ 1151640000000 , 5.5611293669517] , [ 1154318400000 , 5.6086488714041] , [ 1156996800000 , 5.4962849907033] , [ 1159588800000 , 6.9193153169278] , [ 1162270800000 , 7.0016334389778] , [ 1164862800000 , 6.7865422443273] , [ 1167541200000 , 9.0006454225383] , [ 1170219600000 , 9.2233916171431] , [ 1172638800000 , 8.8929316009479] , [ 1175313600000 , 10.345937520404] , [ 1177905600000 , 10.075914677026] , [ 1180584000000 , 10.089006188111] , [ 1183176000000 , 10.598330295008] , [ 1185854400000 , 9.9689546533009] , [ 1188532800000 , 9.7740580198146] , [ 1191124800000 , 10.558483060626] , [ 1193803200000 , 9.9314651823603] , [ 1196398800000 , 9.3997715873769] , [ 1199077200000 , 8.4086493387262] , [ 1201755600000 , 8.9698309085926] , [ 1204261200000 , 8.2778357995396] , [ 1206936000000 , 8.8585045600123] , [ 1209528000000 , 8.7013756413322] , [ 1212206400000 , 7.7933605469443] , [ 1214798400000 , 7.0236183483064] , [ 1217476800000 , 6.9873088186829] , [ 1220155200000 , 6.8031713070097] , [ 1222747200000 , 6.6869531315723] , [ 1225425600000 , 6.138256993963] , [ 1228021200000 , 5.6434994016354] , [ 1230699600000 , 5.495220262512] , [ 1233378000000 , 4.6885326869846] , [ 1235797200000 , 4.4524349883438] , [ 1238472000000 , 5.6766520778185] , [ 1241064000000 , 5.7675774480752] , [ 1243742400000 , 5.7882863168337] , [ 1246334400000 , 7.2666010034924] , [ 1249012800000 , 7.5191821322261] , [ 1251691200000 , 7.849651451445] , [ 1254283200000 , 10.383992037985] , [ 1256961600000 , 9.0653691861818] , [ 1259557200000 , 9.6705248324159] , [ 1262235600000 , 10.856380561349] , [ 1264914000000 , 11.27452370892] , [ 1267333200000 , 11.754156529088] , [ 1270008000000 , 8.2870811422455] , [ 1272600000000 , 8.0210264360699] , [ 1275278400000 , 7.5375074474865] , [ 1277870400000 , 8.3419527338039] , [ 1280548800000 , 9.4197471818443] , [ 1283227200000 , 8.7321733185797] , [ 1285819200000 , 9.6627062648126] , [ 1288497600000 , 10.187962234548] , [ 1291093200000 , 9.8144201733476] , [ 1293771600000 , 10.275723361712] , [ 1296450000000 , 16.796066079353] , [ 1298869200000 , 17.543254984075] , [ 1301544000000 , 16.673660675083] , [ 1304136000000 , 17.963944353609] , [ 1306814400000 , 16.63774086721] , [ 1309406400000 , 15.84857094609] , [ 1312084800000 , 14.767303362181] , [ 1314763200000 , 24.778452182433] , [ 1317355200000 , 18.370353229999] , [ 1320033600000 , 15.253137429099] , [ 1322629200000 , 14.989600840649] , [ 1325307600000 , 16.052539160125] , [ 1327986000000 , 16.424390322793] , [ 1330491600000 , 17.884020741104] , [ 1333166400000 , 18.372698836036] , [ 1335758400000 , 18.315881576096]]
+  },
+
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1025409600000 , 13.153938631352] , [ 1028088000000 , 12.456410521864] , [ 1030766400000 , 12.537048663919] , [ 1033358400000 , 13.947386398309] , [ 1036040400000 , 14.421680682568] , [ 1038632400000 , 14.143238262286] , [ 1041310800000 , 12.229635347478] , [ 1043989200000 , 12.508479916948] , [ 1046408400000 , 12.155368409526] , [ 1049086800000 , 13.335455563994] , [ 1051675200000 , 12.888210138167] , [ 1054353600000 , 12.842092790511] , [ 1056945600000 , 12.513816474199] , [ 1059624000000 , 12.21453674494] , [ 1062302400000 , 11.750848343935] , [ 1064894400000 , 10.526579636787] , [ 1067576400000 , 10.873596086087] , [ 1070168400000 , 11.019967131519] , [ 1072846800000 , 11.235789380602] , [ 1075525200000 , 11.859910850657] , [ 1078030800000 , 12.531031616536] , [ 1080709200000 , 11.360451067019] , [ 1083297600000 , 11.456244780202] , [ 1085976000000 , 11.436991407309] , [ 1088568000000 , 11.638595744327] , [ 1091246400000 , 11.190418301469] , [ 1093924800000 , 11.835608007589] , [ 1096516800000 , 11.540980244475] , [ 1099195200000 , 10.958762325687] , [ 1101790800000 , 10.885791159509] , [ 1104469200000 , 13.605810720109] , [ 1107147600000 , 13.128978067437] , [ 1109566800000 , 13.119012086882] , [ 1112245200000 , 13.003706129783] , [ 1114833600000 , 13.326996807689] , [ 1117512000000 , 13.547947991743] , [ 1120104000000 , 12.807959646616] , [ 1122782400000 , 12.931763821068] , [ 1125460800000 , 12.795359993008] , [ 1128052800000 , 9.6998935538319] , [ 1130734800000 , 9.3473740089131] , [ 1133326800000 , 9.36902067716] , [ 1136005200000 , 14.258619539875] , [ 1138683600000 , 14.21241095603] , [ 1141102800000 , 13.973193618249] , [ 1143781200000 , 15.218233920664] , [ 1146369600000 , 14.382109727451] , [ 1149048000000 , 13.894310878491] , [ 1151640000000 , 15.593086090031] , [ 1154318400000 , 16.244839695189] , [ 1156996800000 , 16.017088850647] , [ 1159588800000 , 14.183951830057] , [ 1162270800000 , 14.148523245696] , [ 1164862800000 , 13.424326059971] , [ 1167541200000 , 12.974450435754] , [ 1170219600000 , 13.232470418021] , [ 1172638800000 , 13.318762655574] , [ 1175313600000 , 15.961407746104] , [ 1177905600000 , 16.287714639805] , [ 1180584000000 , 16.24659058389] , [ 1183176000000 , 17.564505594808] , [ 1185854400000 , 17.872725373164] , [ 1188532800000 , 18.018998508756] , [ 1191124800000 , 15.584518016602] , [ 1193803200000 , 15.480850647182] , [ 1196398800000 , 15.699120036985] , [ 1199077200000 , 19.184281817226] , [ 1201755600000 , 19.691226605205] , [ 1204261200000 , 18.982314051293] , [ 1206936000000 , 18.707820309008] , [ 1209528000000 , 17.459630929759] , [ 1212206400000 , 16.500616076782] , [ 1214798400000 , 18.086324003978] , [ 1217476800000 , 18.929464156259] , [ 1220155200000 , 18.233728682084] , [ 1222747200000 , 16.315776297325] , [ 1225425600000 , 14.632892190251] , [ 1228021200000 , 14.667835024479] , [ 1230699600000 , 13.946993947309] , [ 1233378000000 , 14.394304684398] , [ 1235797200000 , 13.724462792967] , [ 1238472000000 , 10.930879035807] , [ 1241064000000 , 9.8339915513708] , [ 1243742400000 , 10.053858541872] , [ 1246334400000 , 11.786998438286] , [ 1249012800000 , 11.780994901769] , [ 1251691200000 , 11.305889670277] , [ 1254283200000 , 10.918452290083] , [ 1256961600000 , 9.6811395055706] , [ 1259557200000 , 10.971529744038] , [ 1262235600000 , 13.330210480209] , [ 1264914000000 , 14.592637568961] , [ 1267333200000 , 14.605329141157] , [ 1270008000000 , 13.936853794037] , [ 1272600000000 , 12.189480759072] , [ 1275278400000 , 11.676151385046] , [ 1277870400000 , 13.058852800018] , [ 1280548800000 , 13.62891543203] , [ 1283227200000 , 13.811107569918] , [ 1285819200000 , 13.786494560786] , [ 1288497600000 , 14.045162857531] , [ 1291093200000 , 13.697412447286] , [ 1293771600000 , 13.677681376221] , [ 1296450000000 , 19.96151186453] , [ 1298869200000 , 21.049198298156] , [ 1301544000000 , 22.687631094009] , [ 1304136000000 , 25.469010617433] , [ 1306814400000 , 24.88379943712] , [ 1309406400000 , 24.203843814249] , [ 1312084800000 , 22.138760964036] , [ 1314763200000 , 16.034636966228] , [ 1317355200000 , 15.394958944555] , [ 1320033600000 , 12.62564246197] , [ 1322629200000 , 12.973735699739] , [ 1325307600000 , 15.78601833615] , [ 1327986000000 , 15.227368020134] , [ 1330491600000 , 15.899752650733] , [ 1333166400000 , 15.661317319168] , [ 1335758400000 , 15.359891177281]]
+  } , 
+
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1025409600000 , 3.9133244953315] , [ 1028088000000 , 3.518489051173] , [ 1030766400000 , 3.7355675327774] , [ 1033358400000 , 2.6282873198607] , [ 1036040400000 , 2.8090400696474] , [ 1038632400000 , 3.0820718825965] , [ 1041310800000 , 4.2312761636941] , [ 1043989200000 , 4.2510922012943] , [ 1046408400000 , 4.07193350752] , [ 1049086800000 , 4.4040931689245] , [ 1051675200000 , 4.9759379689913] , [ 1054353600000 , 5.0856875680608] , [ 1056945600000 , 4.2233639497997] , [ 1059624000000 , 4.1845715132052] , [ 1062302400000 , 4.3055194312575] , [ 1064894400000 , 3.349297776236] , [ 1067576400000 , 3.7023871871544] , [ 1070168400000 , 3.7170568683668] , [ 1072846800000 , 3.9155694541972] , [ 1075525200000 , 3.9774182471036] , [ 1078030800000 , 4.1580444091887] , [ 1080709200000 , 4.5495573666535] , [ 1083297600000 , 4.5050302469253] , [ 1085976000000 , 4.7094278163836] , [ 1088568000000 , 6.1937658979517] , [ 1091246400000 , 6.0412923676877] , [ 1093924800000 , 6.1747253413885] , [ 1096516800000 , 6.0800072674329] , [ 1099195200000 , 5.7092602419448] , [ 1101790800000 , 6.092841893499] , [ 1104469200000 , 5.7466125264224] , [ 1107147600000 , 5.5824356250394] , [ 1109566800000 , 5.5727222001361] , [ 1112245200000 , 6.2116832774493] , [ 1114833600000 , 5.8847941423832] , [ 1117512000000 , 5.8120124594798] , [ 1120104000000 , 5.9445727342442] , [ 1122782400000 , 6.1631035517269] , [ 1125460800000 , 5.8577541392534] , [ 1128052800000 , 4.6507957123369] , [ 1130734800000 , 4.4741764311828] , [ 1133326800000 , 4.7062417975264] , [ 1136005200000 , 7.2759032827647] , [ 1138683600000 , 7.1590087090399] , [ 1141102800000 , 7.1297210970108] , [ 1143781200000 , 5.5774588290586] , [ 1146369600000 , 5.4977254491156] , [ 1149048000000 , 5.5138153113634] , [ 1151640000000 , 4.3198084032122] , [ 1154318400000 , 3.9179295839125] , [ 1156996800000 , 3.8110093051479] , [ 1159588800000 , 5.5629020916939] , [ 1162270800000 , 5.7241673711336] , [ 1164862800000 , 5.4715049695004] , [ 1167541200000 , 4.9193763571618] , [ 1170219600000 , 5.1360539472469] , [ 1172638800000 , 5.1327258759766] , [ 1175313600000 , 5.1888943925083] , [ 1177905600000 , 5.5191481293346] , [ 1180584000000 , 5.6093625614921] , [ 1183176000000 , 4.2706312987397] , [ 1185854400000 , 4.4453235132117] , [ 1188532800000 , 4.6228003109761] , [ 1191124800000 , 5.0645764756954] , [ 1193803200000 , 5.0723447230959] , [ 1196398800000 , 5.1457765818846] , [ 1199077200000 , 5.4067851597282] , [ 1201755600000 , 5.472241916816] , [ 1204261200000 , 5.3742740389688] , [ 1206936000000 , 6.251751933664] , [ 1209528000000 , 6.1406852153472] , [ 1212206400000 , 5.8164385627465] , [ 1214798400000 , 5.4255846656171] , [ 1217476800000 , 5.3738499417204] , [ 1220155200000 , 5.1815627753979] , [ 1222747200000 , 5.0305983235349] , [ 1225425600000 , 4.6823058607165] , [ 1228021200000 , 4.5941481589093] , [ 1230699600000 , 5.4669598474574] , [ 1233378000000 , 5.1249037357] , [ 1235797200000 , 4.3504421250742] , [ 1238472000000 , 4.6260881026002] , [ 1241064000000 , 5.0140402458945] , [ 1243742400000 , 4.7458462454773] , [ 1246334400000 , 6.0437019654564] , [ 1249012800000 , 6.4595216249754] , [ 1251691200000 , 6.6420468254156] , [ 1254283200000 , 5.8927271960913] , [ 1256961600000 , 5.4712108838002] , [ 1259557200000 , 6.1220254207747] , [ 1262235600000 , 5.5385935169255] , [ 1264914000000 , 5.7383377612639] , [ 1267333200000 , 6.1715976730415] , [ 1270008000000 , 4.0102262681174] , [ 1272600000000 , 3.769389679692] , [ 1275278400000 , 3.5301571031152] , [ 1277870400000 , 2.7660252652526] , [ 1280548800000 , 3.1409983385775] , [ 1283227200000 , 3.0528024863055] , [ 1285819200000 , 4.3126123157971] , [ 1288497600000 , 4.594654041683] , [ 1291093200000 , 4.5424126126793] , [ 1293771600000 , 4.7790043987302] , [ 1296450000000 , 7.4969154058289] , [ 1298869200000 , 7.9424751557821] , [ 1301544000000 , 7.1560736250547] , [ 1304136000000 , 7.9478117337855] , [ 1306814400000 , 7.4109214848895] , [ 1309406400000 , 7.5966457641101] , [ 1312084800000 , 7.165754444071] , [ 1314763200000 , 5.4816702524302] , [ 1317355200000 , 4.9893656089584] , [ 1320033600000 , 4.498385105327] , [ 1322629200000 , 4.6776090358151] , [ 1325307600000 , 8.1350814368063] , [ 1327986000000 , 8.0732769990652] , [ 1330491600000 , 8.5602340387277] , [ 1333166400000 , 8.5387619987197] , [ 1335758400000 , 8.5984656985168]]
+  } , 
+
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1025409600000 , 9.3433263069351] , [ 1028088000000 , 8.4583069475546] , [ 1030766400000 , 8.0342398154196] , [ 1033358400000 , 8.1538966876572] , [ 1036040400000 , 10.743604786849] , [ 1038632400000 , 12.349366155851] , [ 1041310800000 , 10.742682503899] , [ 1043989200000 , 11.360983869935] , [ 1046408400000 , 11.441336039535] , [ 1049086800000 , 10.897508791837] , [ 1051675200000 , 11.469101547709] , [ 1054353600000 , 12.086311476742] , [ 1056945600000 , 8.0697180773504] , [ 1059624000000 , 8.2004392233445] , [ 1062302400000 , 8.4566434900643] , [ 1064894400000 , 7.9565760979059] , [ 1067576400000 , 9.3764619255827] , [ 1070168400000 , 9.0747664160538] , [ 1072846800000 , 10.508939004673] , [ 1075525200000 , 10.69936754483] , [ 1078030800000 , 10.681562399145] , [ 1080709200000 , 13.184786109406] , [ 1083297600000 , 12.668213052351] , [ 1085976000000 , 13.430509403986] , [ 1088568000000 , 12.393086349213] , [ 1091246400000 , 11.942374044842] , [ 1093924800000 , 12.062227685742] , [ 1096516800000 , 11.969974363623] , [ 1099195200000 , 12.14374574055] , [ 1101790800000 , 12.69422821995] , [ 1104469200000 , 9.1235211044692] , [ 1107147600000 , 8.758211757584] , [ 1109566800000 , 8.8072309258443] , [ 1112245200000 , 11.687595946835] , [ 1114833600000 , 11.079723082664] , [ 1117512000000 , 12.049712896076] , [ 1120104000000 , 10.725319428684] , [ 1122782400000 , 10.844849996286] , [ 1125460800000 , 10.833535488461] , [ 1128052800000 , 17.180932407865] , [ 1130734800000 , 15.894764896516] , [ 1133326800000 , 16.412751299498] , [ 1136005200000 , 12.573569093402] , [ 1138683600000 , 13.242301508051] , [ 1141102800000 , 12.863536342041] , [ 1143781200000 , 21.034044171629] , [ 1146369600000 , 21.419084618802] , [ 1149048000000 , 21.142678863692] , [ 1151640000000 , 26.56848967753] , [ 1154318400000 , 24.839144939906] , [ 1156996800000 , 25.456187462166] , [ 1159588800000 , 26.350164502825] , [ 1162270800000 , 26.478333205189] , [ 1164862800000 , 26.425979547846] , [ 1167541200000 , 28.191461582256] , [ 1170219600000 , 28.930307448808] , [ 1172638800000 , 29.521413891117] , [ 1175313600000 , 28.188285966466] , [ 1177905600000 , 27.704619625831] , [ 1180584000000 , 27.49086242483] , [ 1183176000000 , 28.770679721286] , [ 1185854400000 , 29.06048067145] , [ 1188532800000 , 28.240998844973] , [ 1191124800000 , 33.004893194128] , [ 1193803200000 , 34.075180359928] , [ 1196398800000 , 32.548560664834] , [ 1199077200000 , 30.629727432729] , [ 1201755600000 , 28.642858788159] , [ 1204261200000 , 27.973575227843] , [ 1206936000000 , 27.393351882726] , [ 1209528000000 , 28.476095288522] , [ 1212206400000 , 29.29667866426] , [ 1214798400000 , 29.222333802896] , [ 1217476800000 , 28.092966093842] , [ 1220155200000 , 28.107159262922] , [ 1222747200000 , 25.482974832099] , [ 1225425600000 , 21.208115993834] , [ 1228021200000 , 20.295043095268] , [ 1230699600000 , 15.925754618402] , [ 1233378000000 , 17.162864628346] , [ 1235797200000 , 17.084345773174] , [ 1238472000000 , 22.24600710228] , [ 1241064000000 , 24.530543998508] , [ 1243742400000 , 25.084184918241] , [ 1246334400000 , 16.606166527359] , [ 1249012800000 , 17.239620011628] , [ 1251691200000 , 17.336739127379] , [ 1254283200000 , 25.478492475754] , [ 1256961600000 , 23.017152085244] , [ 1259557200000 , 25.617745423684] , [ 1262235600000 , 24.061133998641] , [ 1264914000000 , 23.223933318646] , [ 1267333200000 , 24.425887263936] , [ 1270008000000 , 35.501471156693] , [ 1272600000000 , 33.775013878675] , [ 1275278400000 , 30.417993630285] , [ 1277870400000 , 30.023598978467] , [ 1280548800000 , 33.327519522436] , [ 1283227200000 , 31.963388450372] , [ 1285819200000 , 30.49896723209] , [ 1288497600000 , 32.403696817913] , [ 1291093200000 , 31.47736071922] , [ 1293771600000 , 31.53259666241] , [ 1296450000000 , 41.760282761548] , [ 1298869200000 , 45.605771243237] , [ 1301544000000 , 39.986557966215] , [ 1304136000000 , 43.84633051005] , [ 1306814400000 , 39.857316881858] , [ 1309406400000 , 37.675127768207] , [ 1312084800000 , 35.775077970313] , [ 1314763200000 , 48.631009702578] , [ 1317355200000 , 42.830831754505] , [ 1320033600000 , 35.611502589362] , [ 1322629200000 , 35.320136981738] , [ 1325307600000 , 31.564136901516] , [ 1327986000000 , 32.074407502433] , [ 1330491600000 , 35.053013769977] , [ 1333166400000 , 33.873085184128] , [ 1335758400000 , 32.321039427046]]
+  } , 
+
+  {
+    "key" : "Materials" , 
+    "values" : [ [ 1025409600000 , 5.1162447683392] , [ 1028088000000 , 4.2022848306513] , [ 1030766400000 , 4.3543715758736] , [ 1033358400000 , 5.4641223667245] , [ 1036040400000 , 6.0041275884577] , [ 1038632400000 , 6.6050520064486] , [ 1041310800000 , 5.0154059912793] , [ 1043989200000 , 5.1835708554647] , [ 1046408400000 , 5.1142682006164] , [ 1049086800000 , 5.0271381717695] , [ 1051675200000 , 5.3437782653456] , [ 1054353600000 , 5.2105844515767] , [ 1056945600000 , 6.552565997799] , [ 1059624000000 , 6.9873363581831] , [ 1062302400000 , 7.010986789097] , [ 1064894400000 , 4.4254242025515] , [ 1067576400000 , 4.9613848042174] , [ 1070168400000 , 4.8854920484764] , [ 1072846800000 , 4.0441111794228] , [ 1075525200000 , 4.0219596813179] , [ 1078030800000 , 4.3065749225355] , [ 1080709200000 , 3.9148434915404] , [ 1083297600000 , 3.8659430654512] , [ 1085976000000 , 3.9572824600686] , [ 1088568000000 , 4.7372190641522] , [ 1091246400000 , 4.6871476374455] , [ 1093924800000 , 5.0398702564196] , [ 1096516800000 , 5.5221787544964] , [ 1099195200000 , 5.424646299798] , [ 1101790800000 , 5.9240223067349] , [ 1104469200000 , 5.9936860983601] , [ 1107147600000 , 5.8499523215019] , [ 1109566800000 , 6.4149040329325] , [ 1112245200000 , 6.4547895561969] , [ 1114833600000 , 5.9385382611161] , [ 1117512000000 , 6.0486751030592] , [ 1120104000000 , 5.23108613838] , [ 1122782400000 , 5.5857797121029] , [ 1125460800000 , 5.3454665096987] , [ 1128052800000 , 5.0439154120119] , [ 1130734800000 , 5.054634702913] , [ 1133326800000 , 5.3819451380848] , [ 1136005200000 , 5.2638869269803] , [ 1138683600000 , 5.5806167415681] , [ 1141102800000 , 5.4539047069985] , [ 1143781200000 , 7.6728842432362] , [ 1146369600000 , 7.719946716654] , [ 1149048000000 , 8.0144619912942] , [ 1151640000000 , 7.942223133434] , [ 1154318400000 , 8.3998279827444] , [ 1156996800000 , 8.532324572605] , [ 1159588800000 , 4.7324285199763] , [ 1162270800000 , 4.7402397487697] , [ 1164862800000 , 4.9042069355168] , [ 1167541200000 , 5.9583963430882] , [ 1170219600000 , 6.3693899239171] , [ 1172638800000 , 6.261153903813] , [ 1175313600000 , 5.3443942184584] , [ 1177905600000 , 5.4932111235361] , [ 1180584000000 , 5.5747393101109] , [ 1183176000000 , 5.3833633060013] , [ 1185854400000 , 5.5125898831832] , [ 1188532800000 , 5.8116112661327] , [ 1191124800000 , 4.3962296939996] , [ 1193803200000 , 4.6967663605521] , [ 1196398800000 , 4.7963004350914] , [ 1199077200000 , 4.1817985183351] , [ 1201755600000 , 4.3797643870182] , [ 1204261200000 , 4.6966642197965] , [ 1206936000000 , 4.3609995132565] , [ 1209528000000 , 4.4736290996496] , [ 1212206400000 , 4.3749762738128] , [ 1214798400000 , 3.3274661194507] , [ 1217476800000 , 3.0316184691337] , [ 1220155200000 , 2.5718140204728] , [ 1222747200000 , 2.7034994044603] , [ 1225425600000 , 2.2033786591364] , [ 1228021200000 , 1.9850621240805] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0.44495950017788] , [ 1256961600000 , 0.33945469262483] , [ 1259557200000 , 0.38348269455195] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0.52216435716176] , [ 1298869200000 , 0.59275786698454] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1025409600000 , 1.3503144674343] , [ 1028088000000 , 1.2232741112434] , [ 1030766400000 , 1.3930470790784] , [ 1033358400000 , 1.2631275030593] , [ 1036040400000 , 1.5842699103708] , [ 1038632400000 , 1.9546996043116] , [ 1041310800000 , 0.8504048300986] , [ 1043989200000 , 0.85340686311353] , [ 1046408400000 , 0.843061357391] , [ 1049086800000 , 2.119846992476] , [ 1051675200000 , 2.5285382124858] , [ 1054353600000 , 2.5056570712835] , [ 1056945600000 , 2.5212789901005] , [ 1059624000000 , 2.6192011642534] , [ 1062302400000 , 2.5382187823805] , [ 1064894400000 , 2.3393223047168] , [ 1067576400000 , 2.491219888698] , [ 1070168400000 , 2.497555874906] , [ 1072846800000 , 1.734018115546] , [ 1075525200000 , 1.9307268299646] , [ 1078030800000 , 2.2261679836799] , [ 1080709200000 , 1.7608893704206] , [ 1083297600000 , 1.6242690616808] , [ 1085976000000 , 1.7161663801295] , [ 1088568000000 , 1.7183554537038] , [ 1091246400000 , 1.7179780759145] , [ 1093924800000 , 1.7314274801784] , [ 1096516800000 , 1.2596883356752] , [ 1099195200000 , 1.381177053009] , [ 1101790800000 , 1.4408819615814] , [ 1104469200000 , 3.4743581836444] , [ 1107147600000 , 3.3603749903192] , [ 1109566800000 , 3.5350883257893] , [ 1112245200000 , 3.0949644237828] , [ 1114833600000 , 3.0796455899995] , [ 1117512000000 , 3.3441247640644] , [ 1120104000000 , 4.0947643978168] , [ 1122782400000 , 4.4072631274052] , [ 1125460800000 , 4.4870979780825] , [ 1128052800000 , 4.8404549457934] , [ 1130734800000 , 4.8293016233697] , [ 1133326800000 , 5.2238093263952] , [ 1136005200000 , 3.382306337815] , [ 1138683600000 , 3.7056975170243] , [ 1141102800000 , 3.7561118692318] , [ 1143781200000 , 2.861913700854] , [ 1146369600000 , 2.9933744103381] , [ 1149048000000 , 2.7127537218463] , [ 1151640000000 , 3.1195497076283] , [ 1154318400000 , 3.4066964004508] , [ 1156996800000 , 3.3754571113569] , [ 1159588800000 , 2.2965579982924] , [ 1162270800000 , 2.4486818633018] , [ 1164862800000 , 2.4002308848517] , [ 1167541200000 , 1.9649579750349] , [ 1170219600000 , 1.9385263638056] , [ 1172638800000 , 1.9128975336387] , [ 1175313600000 , 2.3412869836298] , [ 1177905600000 , 2.4337870351445] , [ 1180584000000 , 2.62179703171] , [ 1183176000000 , 3.2642864957929] , [ 1185854400000 , 3.3200396223709] , [ 1188532800000 , 3.3934212707572] , [ 1191124800000 , 4.2822327088179] , [ 1193803200000 , 4.1474964228541] , [ 1196398800000 , 4.1477082879801] , [ 1199077200000 , 5.2947122916128] , [ 1201755600000 , 5.2919843508028] , [ 1204261200000 , 5.198978305031] , [ 1206936000000 , 3.5603057673513] , [ 1209528000000 , 3.3009087690692] , [ 1212206400000 , 3.1784852603792] , [ 1214798400000 , 4.5889503538868] , [ 1217476800000 , 4.401779617494] , [ 1220155200000 , 4.2208301828278] , [ 1222747200000 , 3.89396671475] , [ 1225425600000 , 3.0423832241354] , [ 1228021200000 , 3.135520611578] , [ 1230699600000 , 1.9631418164089] , [ 1233378000000 , 1.8963543874958] , [ 1235797200000 , 1.8266636017025] , [ 1238472000000 , 0.93136635895188] , [ 1241064000000 , 0.92737801918888] , [ 1243742400000 , 0.97591889805002] , [ 1246334400000 , 2.6841193805515] , [ 1249012800000 , 2.5664341140531] , [ 1251691200000 , 2.3887523699873] , [ 1254283200000 , 1.1737801663681] , [ 1256961600000 , 1.0953582317281] , [ 1259557200000 , 1.2495674976653] , [ 1262235600000 , 0.36607452464754] , [ 1264914000000 , 0.3548719047291] , [ 1267333200000 , 0.36769242398939] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0.85450741275337] , [ 1288497600000 , 0.91360317921637] , [ 1291093200000 , 0.89647678692269] , [ 1293771600000 , 0.87800687192639] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0.43668720882994] , [ 1304136000000 , 0.4756523602692] , [ 1306814400000 , 0.46947368328469] , [ 1309406400000 , 0.45138896152316] , [ 1312084800000 , 0.43828726648117] , [ 1314763200000 , 2.0820861395316] , [ 1317355200000 , 0.9364411075395] , [ 1320033600000 , 0.60583907839773] , [ 1322629200000 , 0.61096950747437] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0.17112421375328] , [ 1036040400000 , 0.16363405009242] , [ 1038632400000 , 0.21933570171591] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , 0] , [ 1078030800000 , 0] , [ 1080709200000 , 0] , [ 1083297600000 , 0] , [ 1085976000000 , 0] , [ 1088568000000 , 0] , [ 1091246400000 , 0] , [ 1093924800000 , 0] , [ 1096516800000 , 0] , [ 1099195200000 , 0] , [ 1101790800000 , 0] , [ 1104469200000 , 0] , [ 1107147600000 , 0] , [ 1109566800000 , 0] , [ 1112245200000 , 0] , [ 1114833600000 , 0] , [ 1117512000000 , 0] , [ 1120104000000 , 0] , [ 1122782400000 , 0] , [ 1125460800000 , 0] , [ 1128052800000 , 0] , [ 1130734800000 , 0] , [ 1133326800000 , 0] , [ 1136005200000 , 0] , [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 0] , [ 1225425600000 , 0] , [ 1228021200000 , 0] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+  { 
+    "key" : "Not Available" , 
+    "values" : [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0] , [ 1036040400000 , 0] , [ 1038632400000 , 0] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , 0] , [ 1078030800000 , 0] , [ 1080709200000 , 0] , [ 1083297600000 , 0] , [ 1085976000000 , 0] , [ 1088568000000 , 0] , [ 1091246400000 , 0] , [ 1093924800000 , 0] , [ 1096516800000 , 0] , [ 1099195200000 , 0] , [ 1101790800000 , 0] , [ 1104469200000 , 0] , [ 1107147600000 , 0] , [ 1109566800000 , 0] , [ 1112245200000 , 0] , [ 1114833600000 , 0] , [ 1117512000000 , 0] , [ 1120104000000 , 0] , [ 1122782400000 , 0] , [ 1125460800000 , 0] , [ 1128052800000 , 0] , [ 1130734800000 , 0] , [ 1133326800000 , 0] , [ 1136005200000 , 0] , [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0.050172677311163] , [ 1170219600000 , 0.05010459739003] , [ 1172638800000 , 0.050681828777765] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0.18678212114368] , [ 1209528000000 , 0.17442959307088] , [ 1212206400000 , 0.16359572139598] , [ 1214798400000 , 0.15837381236842] , [ 1217476800000 , 0.15577933366753] , [ 1220155200000 , 0.14891802647046] , [ 1222747200000 , 0.1770757948046] , [ 1225425600000 , 0.18278762496453] , [ 1228021200000 , 0.19687349078343] , [ 1230699600000 , 0.23551013647077] , [ 1233378000000 , 0.25042391829233] , [ 1235797200000 , 0.26937282915476] , [ 1238472000000 , 0.23271248456665] , [ 1241064000000 , 0.20745841982123] , [ 1243742400000 , 0.2011712690448] , [ 1246334400000 , 0.21168244254666] , [ 1249012800000 , 0.20333696030696] , [ 1251691200000 , 0.19775078467844] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 1.3103821402664] , [ 1317355200000 , 1.0444700235618] , [ 1320033600000 , 0.81900499903221] , [ 1322629200000 , 0.81445352296526] , [ 1325307600000 , 0.27519092496306] , [ 1327986000000 , 0.28953340933973] , [ 1330491600000 , 0.31305944539777] , [ 1333166400000 , 0.28710464914403] , [ 1335758400000 , 0.27229889783707]]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+
+
+
+
+//10 years of daily data may be too much
+var histcatexplongDaily = [ { "key" : "Mega Cap (>50B)" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 13.642805422451] , [ 1028174400000 , 11.875679731479] , [ 1028260800000 , 11.421399549073] , [ 1028520000000 , 10.733251897009] , [ 1028606400000 , 11.661530061211] , [ 1028692800000 , 11.7112917692] , [ 1028779200000 , 14.103819662727] , [ 1028865600000 , 14.082769347465] , [ 1029124800000 , 11.740860483129] , [ 1029211200000 , 11.860424786601] , [ 1029297600000 , 14.634217807063] , [ 1029384000000 , 14.849983335535] , [ 1029470400000 , 14.617469163739] , [ 1029729600000 , 16.134528802301] , [ 1029816000000 , 16.001785130598] , [ 1029902400000 , 16.289976697577] , [ 1029988800000 , 16.345547017617] , [ 1030075200000 , 15.016771768137] , [ 1030334400000 , 16.514428994396] , [ 1030420800000 , 14.718654428932] , [ 1030507200000 , 14.659657936075] , [ 1030593600000 , 14.845581798872] , [ 1030680000000 , 14.425886992903] , [ 1031025600000 , 13.063561294758] , [ 1031112000000 , 13.932122906329] , [ 1031198400000 , 13.476416945626] , [ 1031284800000 , 13.756946025748] , [ 1031544000000 , 13.666796050119] , [ 1031630400000 , 14.526688014728] , [ 1031716800000 , 13.968113142817] , [ 1031803200000 , 13.387419611065] , [ 1031889600000 , 14.17368612619] , [ 1032148800000 , 14.224580841348] , [ 1032235200000 , 13.09290735702] , [ 1032321600000 , 13.056668289673] , [ 1032408000000 , 12.53361020337] , [ 1032494400000 , 11.662262454349] , [ 1032753600000 , 11.501669840888] , [ 1032840000000 , 11.226801655125] , [ 1032926400000 , 11.284497082087] , [ 1033012800000 , 13.129946485984] , [ 1033099200000 , 11.420661775583] , [ 1033358400000 , 12.764104543578] , [ 1033444800000 , 14.37974813639] , [ 1033531200000 , 14.319534627705] , [ 1033617600000 , 14.431969665087] , [ 1033704000000 , 14.535355684779] , [ 1033963200000 , 11.845381966522] , [ 1034049600000 , 11.906971573215] , [ 1034136000000 , 11.816803497933] , [ 1034222400000 , 14.636112555474] , [ 1034308800000 , 14.401140047604] , [ 1034568000000 , 14.4383532965] , [ 1034654400000 , 15.315563063954] , [ 1034740800000 , 14.878971028191] , [ 1034827200000 , 15.208585835815] , [ 1034913600000 , 15.693137174719] , [ 1035172800000 , 15.034598277674] , [ 1035259200000 , 15.023394017354] , [ 1035345600000 , 14.965539966377] , [ 1035432000000 , 15.068204517412] , [ 1035518400000 , 15.496372824134] , [ 1035781200000 , 15.026019327515] , [ 1035867600000 , 15.789780199601] , [ 1035954000000 , 15.420988765552] , [ 1036040400000 , 15.19068428749] , [ 1036126800000 , 15.98425855061] , [ 1036386000000 , 16.064783253946] , [ 1036472400000 , 16.966824273022] , [ 1036558800000 , 17.45596964696] , [ 1036645200000 , 16.916788666137] , [ 1036731600000 , 17.102426108455] , [ 1036990800000 , 17.34028845108] , [ 1037077200000 , 16.539143629842] , [ 1037163600000 , 15.80939735903] , [ 1037250000000 , 15.855111176764] , [ 1037336400000 , 15.734618234129] , [ 1037595600000 , 15.892924558938] , [ 1037682000000 , 15.545253114352] , [ 1037768400000 , 15.359085649129] , [ 1037854800000 , 16.072238596472] , [ 1037941200000 , 16.365375421162] , [ 1038200400000 , 16.438801060852] , [ 1038286800000 , 16.422576783929] , [ 1038373200000 , 16.541782274988] , [ 1038546000000 , 16.207167343549] , [ 1038805200000 , 15.665677501251] , [ 1038891600000 , 15.138537937859] , [ 1038978000000 , 15.331036283493] , [ 1039064400000 , 15.596673890063] , [ 1039150800000 , 15.398694716648] , [ 1039410000000 , 15.598158295174] , [ 1039496400000 , 15.558200031584] , [ 1039582800000 , 15.599933124483] , [ 1039669200000 , 15.112047186248] , [ 1039755600000 , 14.880637017925] , [ 1040014800000 , 14.630613583715] , [ 1040101200000 , 14.82218746051] , [ 1040187600000 , 14.801519512875] , [ 1040274000000 , 14.842062090649] , [ 1040360400000 , 14.510085979012] , [ 1040619600000 , 14.554647932203] , [ 1040706000000 , 14.497183052048] , [ 1040878800000 , 14.51456751301] , [ 1040965200000 , 14.747037948545] , [ 1041224400000 , 14.692528022465] , [ 1041310800000 , 10.392519679861] , [ 1041483600000 , 11.141137461306] , [ 1041570000000 , 11.206272326815] , [ 1041829200000 , 10.85789519811] , [ 1041915600000 , 11.311933609858] , [ 1042002000000 , 11.380161044131] , [ 1042088400000 , 11.717784290934] , [ 1042174800000 , 12.028210339248] , [ 1042434000000 , 12.276472894786] , [ 1042520400000 , 12.116208904131] , [ 1042606800000 , 11.689835194616] , [ 1042693200000 , 11.368457891523] , [ 1042779600000 , 11.051942634899] , [ 1043125200000 , 11.458426582014] , [ 1043211600000 , 10.950568262598] , [ 1043298000000 , 11.10679225975] , [ 1043384400000 , 11.203723777266] , [ 1043643600000 , 10.658424091851] , [ 1043730000000 , 10.871300642742] , [ 1043816400000 , 10.988239003581] , [ 1043902800000 , 10.358133215817] , [ 1043989200000 , 10.940753926428] , [ 1044248400000 , 11.14568006166] , [ 1044334800000 , 8.9585208923151] , [ 1044421200000 , 8.7817744346045] , [ 1044507600000 , 8.6129438711747] , [ 1044594000000 , 8.8633555330641] , [ 1044853200000 , 8.8343864359275] , [ 1044939600000 , 8.9465395795616] , [ 1045026000000 , 8.7634195320425] , [ 1045112400000 , 8.8871361315497] , [ 1045198800000 , 9.0291418122569] , [ 1045544400000 , 9.1237102415204] , [ 1045630800000 , 8.9858137336982] , [ 1045717200000 , 8.742546099706] , [ 1045803600000 , 8.9344443211012] , [ 1046062800000 , 9.0829293925095] , [ 1046149200000 , 8.8989225778379] , [ 1046235600000 , 8.1117656346095] , [ 1046322000000 , 8.3742305185827] , [ 1046408400000 , 10.727262439505] , [ 1046667600000 , 7.9188332277937] , [ 1046754000000 , 7.9146112750991] , [ 1046840400000 , 7.8459787036756] , [ 1046926800000 , 7.8420047254525] , [ 1047013200000 , 9.9371886629479] , [ 1047272400000 , 9.8240393297163] , [ 1047358800000 , 7.8413860601701] , [ 1047445200000 , 7.9650084142396] , [ 1047531600000 , 7.8786797985204] , [ 1047618000000 , 8.2055012905663] , [ 1047877200000 , 10.601478390204] , [ 1047963600000 , 10.398902029867] , [ 1048050000000 , 10.627615775823] , [ 1048136400000 , 10.762012027294] , [ 1048222800000 , 10.614053354236] , [ 1048482000000 , 8.5741879317356] , [ 1048568400000 , 10.54633171406] , [ 1048654800000 , 10.480316498744] , [ 1048741200000 , 10.41622472039] , [ 1048827600000 , 9.6987100256535] , [ 1049086800000 , 12.885147762294] , [ 1049173200000 , 13.600005371931] , [ 1049259600000 , 15.346046890346] , [ 1049346000000 , 15.804959425555] , [ 1049432400000 , 15.351618676967] , [ 1049688000000 , 15.860383742938] , [ 1049774400000 , 16.328614913588] , [ 1049860800000 , 16.046403127886] , [ 1049947200000 , 15.516364809914] , [ 1050033600000 , 15.355850037441] , [ 1050292800000 , 16.247978845396] , [ 1050379200000 , 15.701258642673] , [ 1050465600000 , 14.959206508197] , [ 1050552000000 , 15.209934799192] , [ 1050897600000 , 15.187040797633] , [ 1050984000000 , 15.310717394893] , [ 1051070400000 , 15.069678308094] , [ 1051156800000 , 15.186547639857] , [ 1051243200000 , 15.401844311752] , [ 1051502400000 , 14.965182242755] , [ 1051588800000 , 15.218815048588] , [ 1051675200000 , 15.044080101465] , [ 1051761600000 , 14.765024470894] , [ 1051848000000 , 14.894364306767] , [ 1052107200000 , 15.041520717597] , [ 1052193600000 , 14.679874556597] , [ 1052280000000 , 14.474117898334] , [ 1052366400000 , 14.875142665563] , [ 1052452800000 , 14.985666574026] , [ 1052712000000 , 15.083672916948] , [ 1052798400000 , 15.251333976098] , [ 1052884800000 , 14.488853489281] , [ 1052971200000 , 14.808389069554] , [ 1053057600000 , 14.615289253814] , [ 1053316800000 , 14.285356974173] , [ 1053403200000 , 15.08853169358] , [ 1053489600000 , 14.791686647147] , [ 1053576000000 , 15.494360129981] , [ 1053662400000 , 16.177500930842] , [ 1054008000000 , 16.305832521808] , [ 1054094400000 , 15.188433161517] , [ 1054180800000 , 14.948735463896] , [ 1054267200000 , 15.355674341407] , [ 1054526400000 , 15.264621469184] , [ 1054612800000 , 15.629277028235] , [ 1054699200000 , 16.955159834879] , [ 1054785600000 , 17.170978563286] , [ 1054872000000 , 17.087791328279] , [ 1055131200000 , 15.514289662549] , [ 1055217600000 , 15.748133673022] , [ 1055304000000 , 15.342799611773] , [ 1055390400000 , 16.616357713953] , [ 1055476800000 , 15.923041806377] , [ 1055736000000 , 15.732325502646] , [ 1055822400000 , 16.048370788878] , [ 1055908800000 , 15.618822159283] , [ 1055995200000 , 15.667291211562] , [ 1056081600000 , 16.761828187852] , [ 1056340800000 , 17.004445546769] , [ 1056427200000 , 17.306815913129] , [ 1056513600000 , 16.623094943016] , [ 1056600000000 , 16.897845029001] , [ 1056686400000 , 17.069588755468] , [ 1056945600000 , 14.757520989809] , [ 1057032000000 , 14.425659827603] , [ 1057118400000 , 14.44363775387] , [ 1057204800000 , 14.494591369121] , [ 1057550400000 , 15.012695798485] , [ 1057636800000 , 14.67349624342] , [ 1057723200000 , 14.418032233926] , [ 1057809600000 , 14.345910201699] , [ 1057896000000 , 14.056283240203] , [ 1058155200000 , 14.51821296933] , [ 1058241600000 , 14.145380868777] , [ 1058328000000 , 14.190701738129] , [ 1058414400000 , 13.129214389333] , [ 1058500800000 , 13.80206240454] , [ 1058760000000 , 13.568708520953] , [ 1058846400000 , 14.206671663782] , [ 1058932800000 , 13.093978065096] , [ 1059019200000 , 13.125162062641] , [ 1059105600000 , 13.109987856564] , [ 1059364800000 , 13.021345728351] , [ 1059451200000 , 13.329027948944] , [ 1059537600000 , 13.477784993802] , [ 1059624000000 , 12.734291817889] , [ 1059710400000 , 13.010113797305] , [ 1059969600000 , 13.017475752135] , [ 1060056000000 , 13.182601569482] , [ 1060142400000 , 13.047852582519] , [ 1060228800000 , 13.03708153917] , [ 1060315200000 , 13.045203429325] , [ 1060574400000 , 13.014488305995] , [ 1060660800000 , 13.030372596575] , [ 1060747200000 , 12.822027505415] , [ 1060833600000 , 12.930627114618] , [ 1060920000000 , 13.046547621206] , [ 1061179200000 , 12.944810608192] , [ 1061265600000 , 12.808411539645] , [ 1061352000000 , 12.947018675176] , [ 1061438400000 , 13.048692063836] , [ 1061524800000 , 12.586172295027] , [ 1061784000000 , 13.327695547504] , [ 1061870400000 , 13.297675405593] , [ 1061956800000 , 12.940141294158] , [ 1062043200000 , 13.209094653523] , [ 1062129600000 , 13.297359958206] , [ 1062475200000 , 13.159985269884] , [ 1062561600000 , 13.114684186086] , [ 1062648000000 , 13.245856819083] , [ 1062734400000 , 12.977072683393] , [ 1062993600000 , 13.394814823289] , [ 1063080000000 , 13.212225945919] , [ 1063166400000 , 13.435464107877] , [ 1063252800000 , 12.98756152002] , [ 1063339200000 , 13.203589274977] , [ 1063598400000 , 13.265765654294] , [ 1063684800000 , 13.383166202067] , [ 1063771200000 , 13.416947848623] , [ 1063857600000 , 13.633832246794] , [ 1063944000000 , 13.218462211004] , [ 1064203200000 , 13.19676330301] , [ 1064289600000 , 13.752487198232] , [ 1064376000000 , 13.443831315224] , [ 1064462400000 , 13.138291171685] , [ 1064548800000 , 13.352279539814] , [ 1064808000000 , 13.215754544261] , [ 1064894400000 , 10.592808398291] , [ 1064980800000 , 11.584316660978] , [ 1065067200000 , 11.592860206884] , [ 1065153600000 , 11.67357840872] , [ 1065412800000 , 11.618432522208] , [ 1065499200000 , 11.62460513772] , [ 1065585600000 , 11.419449828613] , [ 1065672000000 , 11.369890322531] , [ 1065758400000 , 11.426658907868] , [ 1066017600000 , 11.551454757181] , [ 1066104000000 , 11.174308388585] , [ 1066190400000 , 11.430070167733] , [ 1066276800000 , 11.610321240776] , [ 1066363200000 , 11.911265707813] , [ 1066622400000 , 11.628635363612] , [ 1066708800000 , 11.490094710753] , [ 1066795200000 , 11.37777392182] , [ 1066881600000 , 11.287595621855] , [ 1066968000000 , 11.660852133475] , [ 1067230800000 , 11.404622674833] , [ 1067317200000 , 11.620454905862] , [ 1067403600000 , 11.233217971118] , [ 1067490000000 , 11.554977553954] , [ 1067576400000 , 11.562633227696] , [ 1067835600000 , 11.236870599706] , [ 1067922000000 , 11.174994107749] , [ 1068008400000 , 10.985573678768] , [ 1068094800000 , 10.971711382603] , [ 1068181200000 , 11.228481720983] , [ 1068440400000 , 11.173321488567] , [ 1068526800000 , 11.160687490218] , [ 1068613200000 , 10.958180611759] , [ 1068699600000 , 11.215246697489] , [ 1068786000000 , 11.003353777202] , [ 1069045200000 , 11.118979809353] , [ 1069131600000 , 11.351024430878] , [ 1069218000000 , 11.22386406551] , [ 1069304400000 , 11.234282691785] , [ 1069390800000 , 11.182994371566] , [ 1069650000000 , 11.073089635305] , [ 1069736400000 , 11.261198025458] , [ 1069822800000 , 11.297554650262] , [ 1069995600000 , 11.259109011658] , [ 1070254800000 , 11.710803411353] , [ 1070341200000 , 11.766425730406] , [ 1070427600000 , 13.796050893655] , [ 1070514000000 , 14.006188181326] , [ 1070600400000 , 11.950626949166] , [ 1070859600000 , 13.798685011172] , [ 1070946000000 , 11.983535857453] , [ 1071032400000 , 12.051234620267] , [ 1071118800000 , 11.929515424882] , [ 1071205200000 , 14.190401017053] , [ 1071464400000 , 14.024013929524] , [ 1071550800000 , 14.183457200954] , [ 1071637200000 , 14.266961776334] , [ 1071723600000 , 14.430128319216] , [ 1071810000000 , 16.080375421735] , [ 1072069200000 , 16.103353017977] , [ 1072155600000 , 16.279199588854] , [ 1072242000000 , 16.478764873731] , [ 1072414800000 , 16.207205065304] , [ 1072674000000 , 16.39838899585] , [ 1072760400000 , 16.12908590395] , [ 1072846800000 , 15.698379778345] , [ 1073019600000 , 16.020791556937] , [ 1073278800000 , 16.953664091607] , [ 1073365200000 , 16.546879877942] , [ 1073451600000 , 16.380875635123] , [ 1073538000000 , 16.6222746874] , [ 1073624400000 , 16.571366479677] , [ 1073883600000 , 16.503192742954] , [ 1073970000000 , 16.230087714326] , [ 1074056400000 , 16.441952205705] , [ 1074142800000 , 16.467902285953] , [ 1074229200000 , 16.419146113837] , [ 1074574800000 , 16.423642095641] , [ 1074661200000 , 16.315847871454] , [ 1074747600000 , 16.480925866583] , [ 1074834000000 , 16.494885756585] , [ 1075093200000 , 16.451962488884] , [ 1075179600000 , 16.693217958733] , [ 1075266000000 , 15.993935310967] , [ 1075352400000 , 16.445424514045] , [ 1075438800000 , 16.233245530602] , [ 1075698000000 , 16.770975957267] , [ 1075784400000 , 16.637095267862] , [ 1075870800000 , 16.398496990066] , [ 1075957200000 , 16.636433656028] , [ 1076043600000 , 16.741241709345] , [ 1076302800000 , 16.358863820936] , [ 1076389200000 , 16.804453904285] , [ 1076475600000 , 17.122769194349] , [ 1076562000000 , 16.843936830372] , [ 1076648400000 , 17.204663287995] , [ 1076994000000 , 16.861333045809] , [ 1077080400000 , 16.689613022807] , [ 1077166800000 , 17.069156733239] , [ 1077253200000 , 17.161781983051] , [ 1077512400000 , 16.937063286204] , [ 1077598800000 , 16.948634220352] , [ 1077685200000 , 16.805364901553] , [ 1077771600000 , 16.916473084864] , [ 1077858000000 , 16.777305107502] , [ 1078117200000 , 17.195747006378] , [ 1078203600000 , 17.260214849649] , [ 1078290000000 , 17.088976632499] , [ 1078376400000 , 16.815022141032] , [ 1078462800000 , 16.918967781785] , [ 1078722000000 , 17.095709840362] , [ 1078808400000 , 16.836646934174] , [ 1078894800000 , 17.018821619004] , [ 1078981200000 , 16.816361729484] , [ 1079067600000 , 17.289801592392] , [ 1079326800000 , 16.815813656255] , [ 1079413200000 , 17.098047668609] , [ 1079499600000 , 16.914468151547] , [ 1079586000000 , 17.178240266542] , [ 1079672400000 , 17.354705199071] , [ 1079931600000 , 16.706216878288] , [ 1080018000000 , 17.160532281065] , [ 1080104400000 , 17.126776074911] , [ 1080190800000 , 16.889812930307] , [ 1080277200000 , 17.195582036562] , [ 1080536400000 , 17.129316356616] , [ 1080622800000 , 16.904386511219] , [ 1080709200000 , 18.009684567824] , [ 1080795600000 , 17.799449380861] , [ 1080882000000 , 17.786822940824] , [ 1081137600000 , 17.500423232337] , [ 1081224000000 , 19.313645067984] , [ 1081310400000 , 19.523468874436] , [ 1081396800000 , 19.38619537995] , [ 1081742400000 , 19.658135223291] , [ 1081828800000 , 19.285586968736] , [ 1081915200000 , 19.937320237822] , [ 1082001600000 , 19.994342925797] , [ 1082088000000 , 19.306947454208] , [ 1082347200000 , 19.467817124598] , [ 1082433600000 , 19.547761579486] , [ 1082520000000 , 19.322232980481] , [ 1082606400000 , 19.422049603292] , [ 1082692800000 , 19.854231531335] , [ 1082952000000 , 19.671559642044] , [ 1083038400000 , 19.558592251637] , [ 1083124800000 , 19.560424905437] , [ 1083211200000 , 17.254982535721] , [ 1083297600000 , 17.404378517866] , [ 1083556800000 , 18.521278479691] , [ 1083643200000 , 20.518112787263] , [ 1083729600000 , 20.542027197683] , [ 1083816000000 , 18.434303546789] , [ 1083902400000 , 18.176188098008] , [ 1084161600000 , 18.136835001878] , [ 1084248000000 , 18.334410773677] , [ 1084334400000 , 18.990311544463] , [ 1084420800000 , 18.528100939765] , [ 1084507200000 , 18.941798712947] , [ 1084766400000 , 19.159421901243] , [ 1084852800000 , 18.489152131064] , [ 1084939200000 , 18.445857868638] , [ 1085025600000 , 19.117471754165] , [ 1085112000000 , 18.644622094647] , [ 1085371200000 , 18.401791512441] , [ 1085457600000 , 18.10245512817] , [ 1085544000000 , 18.950943150102] , [ 1085630400000 , 20.504012201316] , [ 1085716800000 , 18.729061506676] , [ 1086062400000 , 18.237299730796] , [ 1086148800000 , 18.59102613868] , [ 1086235200000 , 18.799149239853] , [ 1086321600000 , 18.690471126419] , [ 1086580800000 , 20.219228596347] , [ 1086667200000 , 18.410218443454] , [ 1086753600000 , 18.589056441112] , [ 1086840000000 , 18.614078045357] , [ 1087185600000 , 18.75429019969] , [ 1087272000000 , 18.963689720757] , [ 1087358400000 , 18.525491900713] , [ 1087444800000 , 18.591273866415] , [ 1087531200000 , 18.621490700609] , [ 1087790400000 , 18.820314117456] , [ 1087876800000 , 18.654201199086] , [ 1087963200000 , 18.62375596118] , [ 1088049600000 , 18.737678674737] , [ 1088136000000 , 18.779965448567] , [ 1088395200000 , 18.490854345986] , [ 1088481600000 , 18.738058580821] , [ 1088568000000 , 20.646278442114] , [ 1088654400000 , 18.682511679245] , [ 1088740800000 , 18.698327809272] , [ 1089086400000 , 18.94892162567] , [ 1089172800000 , 18.723378716348] , [ 1089259200000 , 18.651336681983] , [ 1089345600000 , 18.898278242083] , [ 1089604800000 , 18.953074409831] , [ 1089691200000 , 19.531665648188] , [ 1089777600000 , 18.597919821526] , [ 1089864000000 , 18.837996019127] , [ 1089950400000 , 18.988809190689] , [ 1090209600000 , 18.964646217864] , [ 1090296000000 , 18.736684594864] , [ 1090382400000 , 19.270952039733] , [ 1090468800000 , 19.072379282817] , [ 1090555200000 , 19.015495000666] , [ 1090814400000 , 19.195675588444] , [ 1090900800000 , 18.709063584519] , [ 1090987200000 , 18.538093091108] , [ 1091073600000 , 18.575715218408] , [ 1091160000000 , 19.098123547811] , [ 1091419200000 , 20.002312938094] , [ 1091505600000 , 19.98285002465] , [ 1091592000000 , 19.995584270913] , [ 1091678400000 , 20.466331536224] , [ 1091764800000 , 19.794414355997] , [ 1092024000000 , 19.749518059094] , [ 1092110400000 , 20.093965457367] , [ 1092196800000 , 19.905652626558] , [ 1092283200000 , 19.678775168419] , [ 1092369600000 , 20.545901299164] , [ 1092628800000 , 19.884869707957] , [ 1092715200000 , 19.776774242544] , [ 1092801600000 , 20.117304302343] , [ 1092888000000 , 19.96093061678] , [ 1092974400000 , 20.143095881477] , [ 1093233600000 , 20.467025105078] , [ 1093320000000 , 19.873677876376] , [ 1093406400000 , 20.385336063088] , [ 1093492800000 , 20.249263649503] , [ 1093579200000 , 19.699915446254] , [ 1093838400000 , 19.513758387166] , [ 1093924800000 , 19.813911853858] , [ 1094011200000 , 19.583613688386] , [ 1094097600000 , 19.585256836835] , [ 1094184000000 , 19.437733249656] , [ 1094529600000 , 19.805095952845] , [ 1094616000000 , 19.784757316099] , [ 1094702400000 , 19.295977520675] , [ 1094788800000 , 19.993577416633] , [ 1095048000000 , 19.728654046906] , [ 1095134400000 , 19.909586376169] , [ 1095220800000 , 19.541292932254] , [ 1095307200000 , 19.538547958006] , [ 1095393600000 , 19.532972576562] , [ 1095652800000 , 19.92993562423] , [ 1095739200000 , 19.507718588521] , [ 1095825600000 , 19.447016394926] , [ 1095912000000 , 19.581582894327] , [ 1095998400000 , 19.397279775437] , [ 1096257600000 , 18.972414718906] , [ 1096344000000 , 19.512430110099] , [ 1096430400000 , 19.160750389058] , [ 1096516800000 , 21.646177747611] , [ 1096603200000 , 21.586752516928] , [ 1096862400000 , 21.933768036886] , [ 1096948800000 , 21.124057573676] , [ 1097035200000 , 20.990484155309] , [ 1097121600000 , 23.202774998191] , [ 1097208000000 , 21.755446722827] , [ 1097467200000 , 21.804100588778] , [ 1097553600000 , 21.937564086025] , [ 1097640000000 , 22.116028802006] , [ 1097726400000 , 21.659512536315] , [ 1097812800000 , 21.587450251975] , [ 1098072000000 , 21.838642600605] , [ 1098158400000 , 21.837029815784] , [ 1098244800000 , 21.813031424014] , [ 1098331200000 , 21.984920792141] , [ 1098417600000 , 21.758729063109] , [ 1098676800000 , 21.935734869092] , [ 1098763200000 , 22.052128108546] , [ 1098849600000 , 21.930648574612] , [ 1098936000000 , 21.78668335978] , [ 1099022400000 , 21.618924642802] , [ 1099285200000 , 21.804042802029] , [ 1099371600000 , 22.169576349235] , [ 1099458000000 , 25.517578427313] , [ 1099544400000 , 25.448725495882] , [ 1099630800000 , 25.496696102096] , [ 1099890000000 , 25.325219480162] , [ 1099976400000 , 25.097074932518] , [ 1100062800000 , 25.222388005927] , [ 1100149200000 , 25.24984515615] , [ 1100235600000 , 25.498608839824] , [ 1100494800000 , 25.157044703788] , [ 1100581200000 , 25.557232435226] , [ 1100667600000 , 25.545893239426] , [ 1100754000000 , 26.070383826557] , [ 1100840400000 , 25.774054391672] , [ 1101099600000 , 25.571637755899] , [ 1101186000000 , 25.416194920183] , [ 1101272400000 , 25.864344506792] , [ 1101445200000 , 26.292748099602] , [ 1101704400000 , 25.362976673756] , [ 1101790800000 , 25.773336316286] , [ 1101877200000 , 25.783090485939] , [ 1101963600000 , 25.194967754687] , [ 1102050000000 , 25.622802162205] , [ 1102309200000 , 25.6425833043] , [ 1102395600000 , 24.920549696072] , [ 1102482000000 , 25.316343230822] , [ 1102568400000 , 25.30531188148] , [ 1102654800000 , 25.225131464585] , [ 1102914000000 , 24.590153649434] , [ 1103000400000 , 25.033533767403] , [ 1103086800000 , 25.008830962368] , [ 1103173200000 , 25.649906697849] , [ 1103259600000 , 25.862079663767] , [ 1103518800000 , 25.148058458615] , [ 1103605200000 , 25.12527979799] , [ 1103691600000 , 25.0574436886] , [ 1103778000000 , 25.09707573417] , [ 1104123600000 , 25.088365613838] , [ 1104210000000 , 24.979491165026] , [ 1104296400000 , 25.170881221308] , [ 1104382800000 , 25.625396478155] , [ 1104469200000 , 24.031265206517] , [ 1104728400000 , 23.343419810151] , [ 1104814800000 , 24.008106210856] , [ 1104901200000 , 23.420005383033] , [ 1104987600000 , 23.275472973038] , [ 1105074000000 , 23.569345951836] , [ 1105333200000 , 22.961729007326] , [ 1105419600000 , 23.55442839573] , [ 1105506000000 , 23.506813486298] , [ 1105592400000 , 23.731268021536] , [ 1105678800000 , 23.696580084935] , [ 1106024400000 , 23.129559778933] , [ 1106110800000 , 22.821363436635] , [ 1106197200000 , 20.86015164814] , [ 1106283600000 , 22.893029615037] , [ 1106542800000 , 23.355475025064] , [ 1106629200000 , 23.089272093595] , [ 1106715600000 , 23.344106490732] , [ 1106802000000 , 23.347887014173] , [ 1106888400000 , 23.36078869705] , [ 1107147600000 , 23.373245981279] , [ 1107234000000 , 23.705979354142] , [ 1107320400000 , 23.865947771013] , [ 1107406800000 , 21.283879539416] , [ 1107493200000 , 23.66199789454] , [ 1107752400000 , 22.965888865612] , [ 1107838800000 , 23.308724058174] , [ 1107925200000 , 23.235706362274] , [ 1108011600000 , 23.205107046442] , [ 1108098000000 , 24.136713081779] , [ 1108357200000 , 23.664808565396] , [ 1108443600000 , 26.075064884573] , [ 1108530000000 , 26.606421256181] , [ 1108616400000 , 26.763619078589] , [ 1108702800000 , 26.640415422821] , [ 1109048400000 , 24.99289465022] , [ 1109134800000 , 24.648148178797] , [ 1109221200000 , 24.968975921517] , [ 1109307600000 , 26.931337546753] , [ 1109566800000 , 24.942658784793] , [ 1109653200000 , 23.471329508474] , [ 1109739600000 , 25.239087941343] , [ 1109826000000 , 25.567769147767] , [ 1109912400000 , 25.483492246231] , [ 1110171600000 , 25.387248674556] , [ 1110258000000 , 26.050717483278] , [ 1110344400000 , 25.295141819132] , [ 1110430800000 , 25.54231254846] , [ 1110517200000 , 25.769024354756] , [ 1110776400000 , 25.245202642321] , [ 1110862800000 , 24.907994697428] , [ 1110949200000 , 23.199402426676] , [ 1111035600000 , 22.585933640283] , [ 1111122000000 , 25.848734598723] , [ 1111381200000 , 22.586407411227] , [ 1111467600000 , 22.852807521609] , [ 1111554000000 , 22.371428313299] , [ 1111640400000 , 22.229261875096] , [ 1111986000000 , 22.340486663288] , [ 1112072400000 , 22.491793252308] , [ 1112158800000 , 22.679006834333] , [ 1112245200000 , 27.086827026963] , [ 1112331600000 , 25.897902387814] , [ 1112587200000 , 26.314813301572] , [ 1112673600000 , 26.317053082588] , [ 1112760000000 , 26.222744149315] , [ 1112846400000 , 25.977457886062] , [ 1112932800000 , 25.781076625606] , [ 1113192000000 , 25.700445032017] , [ 1113278400000 , 25.767099175701] , [ 1113364800000 , 25.254627006031] , [ 1113451200000 , 23.443125239257] , [ 1113537600000 , 23.80709168838] , [ 1113796800000 , 23.267449744421] , [ 1113883200000 , 23.706859094307] , [ 1113969600000 , 23.661405563013] , [ 1114056000000 , 23.689943876315] , [ 1114142400000 , 23.928464880017] , [ 1114401600000 , 24.028677477634] , [ 1114488000000 , 23.6073103617] , [ 1114574400000 , 23.649084903904] , [ 1114660800000 , 23.372608135229] , [ 1114747200000 , 24.22242907229] , [ 1115006400000 , 24.825534085466] , [ 1115092800000 , 25.117295984672] , [ 1115179200000 , 24.979352307832] , [ 1115265600000 , 24.490943462094] , [ 1115352000000 , 24.621445279336] , [ 1115611200000 , 24.878598742424] , [ 1115697600000 , 25.148812466565] , [ 1115784000000 , 24.501099784189] , [ 1115870400000 , 24.478445620986] , [ 1115956800000 , 24.472276247696] , [ 1116216000000 , 24.606928221896] , [ 1116302400000 , 24.579133999631] , [ 1116388800000 , 24.470721627489] , [ 1116475200000 , 25.006560259093] , [ 1116561600000 , 24.309741420169] , [ 1116820800000 , 24.434908261044] , [ 1116907200000 , 24.315643820248] , [ 1116993600000 , 24.861249818558] , [ 1117080000000 , 24.862310288608] , [ 1117166400000 , 24.632493623236] , [ 1117512000000 , 24.329603964259] , [ 1117598400000 , 24.814648698674] , [ 1117684800000 , 25.084052215672] , [ 1117771200000 , 24.273608633215] , [ 1118030400000 , 25.001264387652] , [ 1118116800000 , 25.096801174557] , [ 1118203200000 , 24.801175740278] , [ 1118289600000 , 25.435184904398] , [ 1118376000000 , 24.873408886896] , [ 1118635200000 , 26.951916090161] , [ 1118721600000 , 25.024823913702] , [ 1118808000000 , 26.754562842156] , [ 1118894400000 , 26.83564131576] , [ 1118980800000 , 27.217585001329] , [ 1119240000000 , 26.89094176222] , [ 1119326400000 , 26.76317711477] , [ 1119412800000 , 27.092925092423] , [ 1119499200000 , 27.497947062659] , [ 1119585600000 , 27.35194467719] , [ 1119844800000 , 25.32067578663] , [ 1119931200000 , 24.530768706756] , [ 1120017600000 , 24.364126825119] , [ 1120104000000 , 24.081940207813] , [ 1120190400000 , 23.994423637651] , [ 1120536000000 , 24.788867547072] , [ 1120622400000 , 24.444638477398] , [ 1120708800000 , 25.533775508509] , [ 1120795200000 , 25.074839094522] , [ 1121054400000 , 26.440444017973] , [ 1121140800000 , 26.852648939926] , [ 1121227200000 , 26.83924137895] , [ 1121313600000 , 27.433778491168] , [ 1121400000000 , 26.758522515686] , [ 1121659200000 , 26.935642144492] , [ 1121745600000 , 26.734070820088] , [ 1121832000000 , 27.519441433785] , [ 1121918400000 , 26.518017862082] , [ 1122004800000 , 26.407194381858] , [ 1122264000000 , 26.829477744392] , [ 1122350400000 , 26.302677246028] , [ 1122436800000 , 26.577720100341] , [ 1122523200000 , 27.370389646336] , [ 1122609600000 , 26.636843688831] , [ 1122868800000 , 26.289915786381] , [ 1122955200000 , 25.643665769494] , [ 1123041600000 , 25.029059231656] , [ 1123128000000 , 24.516982777476] , [ 1123214400000 , 24.474346193421] , [ 1123473600000 , 24.359648701401] , [ 1123560000000 , 23.867882495626] , [ 1123646400000 , 25.96989361759] , [ 1123732800000 , 25.744337365068] , [ 1123819200000 , 26.240498253735] , [ 1124078400000 , 26.329012585941] , [ 1124164800000 , 25.860356508261] , [ 1124251200000 , 26.221018056402] , [ 1124337600000 , 26.778749319194] , [ 1124424000000 , 26.102180305031] , [ 1124683200000 , 27.013918924362] , [ 1124769600000 , 26.071662697116] , [ 1124856000000 , 25.5179447868] , [ 1124942400000 , 25.481361146192] , [ 1125028800000 , 25.242448591984] , [ 1125288000000 , 25.798476198329] , [ 1125374400000 , 23.603038168679] , [ 1125460800000 , 23.765648005627] , [ 1125547200000 , 24.753831401627] , [ 1125633600000 , 24.85739962812] , [ 1125979200000 , 26.839336602318] , [ 1126065600000 , 26.596991879082] , [ 1126152000000 , 26.155432451299] , [ 1126238400000 , 26.763242035993] , [ 1126497600000 , 26.560563934301] , [ 1126584000000 , 24.884536060694] , [ 1126670400000 , 25.289649287108] , [ 1126756800000 , 25.085448265753] , [ 1126843200000 , 25.280138080234] , [ 1127102400000 , 25.458692583337] , [ 1127188800000 , 24.916888571226] , [ 1127275200000 , 24.893011271785] , [ 1127361600000 , 25.12227670638] , [ 1127448000000 , 24.931304717681] , [ 1127707200000 , 24.767500892636] , [ 1127793600000 , 24.637929467534] , [ 1127880000000 , 25.395025320764] , [ 1127966400000 , 24.962928819126] , [ 1128052800000 , 18.782225765597] , [ 1128312000000 , 18.413068947688] , [ 1128398400000 , 18.187456094151] , [ 1128484800000 , 16.382273962111] , [ 1128571200000 , 15.781938061444] , [ 1128657600000 , 17.641712023808] , [ 1128916800000 , 17.507777940228] , [ 1129003200000 , 14.982575484996] , [ 1129089600000 , 14.76203928617] , [ 1129176000000 , 13.901962618455] , [ 1129262400000 , 13.833857995254] , [ 1129521600000 , 14.626739123052] , [ 1129608000000 , 14.809415558199] , [ 1129694400000 , 3.750262011271] , [ 1129780800000 , 15.022145959914] , [ 1129867200000 , 14.84289646174] , [ 1130126400000 , 14.600076623491] , [ 1130212800000 , 15.069384911686] , [ 1130299200000 , 14.910371659041] , [ 1130385600000 , 14.862105763073] , [ 1130472000000 , 14.727048171468] , [ 1130734800000 , 15.260100765166] , [ 1130821200000 , 15.5600151884] , [ 1130907600000 , 19.731000055362] , [ 1130994000000 , 16.795807306913] , [ 1131080400000 , 16.996738001815] , [ 1131339600000 , 19.556926922237] , [ 1131426000000 , 19.506935609171] , [ 1131512400000 , 19.29703424702] , [ 1131598800000 , 19.419718073663] , [ 1131685200000 , 19.567047213518] , [ 1131944400000 , 19.115098715137] , [ 1132030800000 , 17.472432281025] , [ 1132117200000 , 17.618400449771] , [ 1132203600000 , 20.517479002355] , [ 1132290000000 , 20.756239971058] , [ 1132549200000 , 21.519442983346] , [ 1132635600000 , 21.031188726302] , [ 1132722000000 , 22.43582291989] , [ 1132894800000 , 22.296678352786] , [ 1133154000000 , 22.533858503329] , [ 1133240400000 , 21.117870159608] , [ 1133326800000 , 20.95249121599] , [ 1133413200000 , 23.24722174208] , [ 1133499600000 , 22.675001400472] , [ 1133758800000 , 23.576237213841] , [ 1133845200000 , 22.88787129189] , [ 1133931600000 , 22.770908601935] , [ 1134018000000 , 22.439568857468] , [ 1134104400000 , 23.182558381821] , [ 1134363600000 , 22.874630115583] , [ 1134450000000 , 23.222236128125] , [ 1134536400000 , 23.592275271288] , [ 1134622800000 , 23.539378476459] , [ 1134709200000 , 23.071905750877] , [ 1134968400000 , 23.424903415098] , [ 1135054800000 , 23.39950282514] , [ 1135141200000 , 23.409965487841] , [ 1135227600000 , 23.505376564929] , [ 1135314000000 , 23.215465806029] , [ 1135659600000 , 23.38563750444] , [ 1135746000000 , 23.045892837142] , [ 1135832400000 , 25.14020101049] , [ 1135918800000 , 25.050918121167] , [ 1136264400000 , 18.257548285625] , [ 1136350800000 , 18.07138317334] , [ 1136437200000 , 18.559144836085] , [ 1136523600000 , 18.215748263083] , [ 1136782800000 , 18.423599466293] , [ 1136869200000 , 18.610764159025] , [ 1136955600000 , 18.279225081891] , [ 1137042000000 , 18.809905785103] , [ 1137128400000 , 18.290641439478] , [ 1137474000000 , 18.524362589947] , [ 1137560400000 , 18.436439687609] , [ 1137646800000 , 18.502251312832] , [ 1137733200000 , 18.487969528691] , [ 1137992400000 , 18.373389449381] , [ 1138078800000 , 18.544218820834] , [ 1138165200000 , 17.937750581715] , [ 1138251600000 , 18.224226859228] , [ 1138338000000 , 18.141385195538] , [ 1138597200000 , 18.249738085169] , [ 1138683600000 , 17.814814745686] , [ 1138770000000 , 17.781574362648] , [ 1138856400000 , 17.091167436213] , [ 1138942800000 , 17.206455021631] , [ 1139202000000 , 17.117879064923] , [ 1139288400000 , 16.875142284891] , [ 1139374800000 , 17.277388501519] , [ 1139461200000 , 17.220400630502] , [ 1139547600000 , 17.029670100642] , [ 1139806800000 , 16.927030268445] , [ 1139893200000 , 17.11816727047] , [ 1139979600000 , 17.558611556387] , [ 1140066000000 , 19.402576903908] , [ 1140152400000 , 19.126188201194] , [ 1140498000000 , 19.560761598583] , [ 1140584400000 , 17.903979712653] , [ 1140670800000 , 18.068981731732] , [ 1140757200000 , 18.024217118293] , [ 1141016400000 , 17.873109133417] , [ 1141102800000 , 17.899192393827] , [ 1141189200000 , 26.199588971665] , [ 1141275600000 , 26.479951387053] , [ 1141362000000 , 25.285815879786] , [ 1141621200000 , 27.058703715471] , [ 1141707600000 , 26.642800176315] , [ 1141794000000 , 26.141193814971] , [ 1141880400000 , 26.425976309753] , [ 1141966800000 , 26.568547718159] , [ 1142226000000 , 27.028560386674] , [ 1142312400000 , 26.675373079039] , [ 1142398800000 , 26.296471957074] , [ 1142485200000 , 26.965051777048] , [ 1142571600000 , 26.795307264427] , [ 1142830800000 , 26.677598766824] , [ 1142917200000 , 26.970489623405] , [ 1143003600000 , 28.767926238413] , [ 1143090000000 , 28.662078861382] , [ 1143176400000 , 28.715033437514] , [ 1143435600000 , 26.866965491591] , [ 1143522000000 , 26.665697187005] , [ 1143608400000 , 27.094212566212] , [ 1143694800000 , 26.377198899426] , [ 1143781200000 , 17.988157107376] , [ 1144036800000 , 17.979227136598] , [ 1144123200000 , 17.50168156796] , [ 1144209600000 , 17.533902324096] , [ 1144296000000 , 17.397391875646] , [ 1144382400000 , 17.435889964946] , [ 1144641600000 , 14.837627151408] , [ 1144728000000 , 14.99708771983] , [ 1144814400000 , 15.230545192078] , [ 1144900800000 , 15.345313643955] , [ 1145246400000 , 15.339384664918] , [ 1145332800000 , 14.876865461271] , [ 1145419200000 , 15.78988738222] , [ 1145505600000 , 15.333583730992] , [ 1145592000000 , 15.193608641755] , [ 1145851200000 , 15.808246257597] , [ 1145937600000 , 15.295969552787] , [ 1146024000000 , 15.148371812064] , [ 1146110400000 , 16.106107352727] , [ 1146196800000 , 16.333282112859] , [ 1146456000000 , 14.884650055543] , [ 1146542400000 , 15.258810745364] , [ 1146628800000 , 14.721963563743] , [ 1146715200000 , 15.2488988172] , [ 1146801600000 , 15.988431274052] , [ 1147060800000 , 15.45824595417] , [ 1147147200000 , 15.124739435655] , [ 1147233600000 , 14.811828262885] , [ 1147320000000 , 15.128441576062] , [ 1147406400000 , 15.018746494625] , [ 1147665600000 , 14.665379658074] , [ 1147752000000 , 14.765323064912] , [ 1147838400000 , 14.610784280202] , [ 1147924800000 , 14.718816211393] , [ 1148011200000 , 14.656810601301] , [ 1148270400000 , 14.556786699143] , [ 1148356800000 , 14.478198586853] , [ 1148443200000 , 14.397840236351] , [ 1148529600000 , 15.024252979406] , [ 1148616000000 , 14.580051069348] , [ 1148961600000 , 14.300391303681] , [ 1149048000000 , 14.591842079573] , [ 1149134400000 , 14.045879482711] , [ 1149220800000 , 14.998948551386] , [ 1149480000000 , 13.603082280637] , [ 1149566400000 , 13.015273433491] , [ 1149652800000 , 12.020962072274] , [ 1149739200000 , 12.734804729782] , [ 1149825600000 , 12.05908953184] , [ 1150084800000 , 11.962310367146] , [ 1150171200000 , 11.905675823274] , [ 1150257600000 , 11.678390952591] , [ 1150344000000 , 12.617974891559] , [ 1150430400000 , 13.00428261632] , [ 1150689600000 , 13.166905117976] , [ 1150776000000 , 12.838210852649] , [ 1150862400000 , 14.205857720773] , [ 1150948800000 , 14.27781290629] , [ 1151035200000 , 14.125291213995] , [ 1151294400000 , 14.258487640197] , [ 1151380800000 , 14.308394058436] , [ 1151467200000 , 14.086062503522] , [ 1151553600000 , 14.45395852164] , [ 1151640000000 , 18.972180774132] , [ 1151899200000 , 18.652505008389] , [ 1152072000000 , 18.263695576831] , [ 1152158400000 , 18.957193689658] , [ 1152244800000 , 18.910911266653] , [ 1152504000000 , 19.193861121078] , [ 1152590400000 , 19.060382975069] , [ 1152676800000 , 18.642412821412] , [ 1152763200000 , 17.957834193597] , [ 1152849600000 , 18.139793734162] , [ 1153108800000 , 17.83004083653] , [ 1153195200000 , 18.316139409078] , [ 1153281600000 , 19.710064937605] , [ 1153368000000 , 19.815399598556] , [ 1153454400000 , 19.787228349669] , [ 1153713600000 , 19.911735187935] , [ 1153800000000 , 21.693668259119] , [ 1153886400000 , 19.476081037883] , [ 1153972800000 , 18.295259329633] , [ 1154059200000 , 18.540577437238] , [ 1154318400000 , 18.074751426702] , [ 1154404800000 , 18.033785983588] , [ 1154491200000 , 18.536305278278] , [ 1154577600000 , 18.227915383291] , [ 1154664000000 , 18.391363101455] , [ 1154923200000 , 18.404022282016] , [ 1155009600000 , 18.968827749274] , [ 1155096000000 , 18.117429090696] , [ 1155182400000 , 18.47137275146] , [ 1155268800000 , 18.558952579185] , [ 1155528000000 , 18.156270409235] , [ 1155614400000 , 18.3013893827] , [ 1155700800000 , 18.057174959825] , [ 1155787200000 , 17.810843618971] , [ 1155873600000 , 18.399431442516] , [ 1156132800000 , 18.190058208738] , [ 1156219200000 , 17.840873866815] , [ 1156305600000 , 17.88239730099] , [ 1156392000000 , 17.927104960481] , [ 1156478400000 , 18.100084639678] , [ 1156737600000 , 18.743432892674] , [ 1156824000000 , 20.487978570463] , [ 1156910400000 , 20.530437630303] , [ 1156996800000 , 18.392773541144] , [ 1157083200000 , 18.338310657286] , [ 1157428800000 , 18.130242907716] , [ 1157515200000 , 18.161660796396] , [ 1157601600000 , 18.419104380403] , [ 1157688000000 , 18.106628670965] , [ 1157947200000 , 18.031398770232] , [ 1158033600000 , 20.076944645868] , [ 1158120000000 , 19.70954459831] , [ 1158206400000 , 19.702415530463] , [ 1158292800000 , 19.869219429035] , [ 1158552000000 , 17.971188530998] , [ 1158638400000 , 17.502486043943] , [ 1158724800000 , 17.786824315026] , [ 1158811200000 , 17.728769927902] , [ 1158897600000 , 18.005797602079] , [ 1159156800000 , 18.040393315711] , [ 1159243200000 , 18.900396698947] , [ 1159329600000 , 18.36048699901] , [ 1159416000000 , 17.731875803548] , [ 1159502400000 , 18.108465169671] , [ 1159761600000 , 20.617022865239] , [ 1159848000000 , 20.324185511727] , [ 1159934400000 , 19.944348897435] , [ 1160020800000 , 20.165689108673] , [ 1160107200000 , 20.784792008539] , [ 1160366400000 , 20.199437314135] , [ 1160452800000 , 20.160773448853] , [ 1160539200000 , 20.274802983803] , [ 1160625600000 , 20.602039599417] , [ 1160712000000 , 20.844066708918] , [ 1160971200000 , 21.106207814522] , [ 1161057600000 , 20.815435947609] , [ 1161144000000 , 20.761198511671] , [ 1161230400000 , 21.09423075218] , [ 1161316800000 , 21.10012619968] , [ 1161576000000 , 20.604110246386] , [ 1161662400000 , 20.295673392568] , [ 1161748800000 , 21.402529155514] , [ 1161835200000 , 21.034137818923] , [ 1161921600000 , 21.183590022355] , [ 1162184400000 , 20.952086891424] , [ 1162270800000 , 21.083320862704] , [ 1162357200000 , 20.337267179176] , [ 1162443600000 , 20.157909334038] , [ 1162530000000 , 20.514329006349] , [ 1162789200000 , 20.906242344223] , [ 1162875600000 , 20.548808226328] , [ 1162962000000 , 20.744002277779] , [ 1163048400000 , 20.563063891109] , [ 1163134800000 , 20.025272140506] , [ 1163394000000 , 20.099216372837] , [ 1163480400000 , 19.912323206182] , [ 1163566800000 , 20.132170489552] , [ 1163653200000 , 20.136836618356] , [ 1163739600000 , 20.279758319526] , [ 1163998800000 , 20.568083117312] , [ 1164085200000 , 20.245443195972] , [ 1164171600000 , 20.769354587751] , [ 1164344400000 , 20.058253473611] , [ 1164603600000 , 20.337288984382] , [ 1164690000000 , 20.489598727098] , [ 1164776400000 , 20.584535521244] , [ 1164862800000 , 20.321611077092] , [ 1164949200000 , 23.762477566775] , [ 1165208400000 , 23.933785218143] , [ 1165294800000 , 23.748190856458] , [ 1165381200000 , 24.472420307822] , [ 1165467600000 , 23.200391877317] , [ 1165554000000 , 23.986587878633] , [ 1165813200000 , 23.98901218464] , [ 1165899600000 , 23.686472866355] , [ 1165986000000 , 23.505163243857] , [ 1166072400000 , 23.749279172726] , [ 1166158800000 , 24.191182857934] , [ 1166418000000 , 24.103058358597] , [ 1166504400000 , 23.048914477117] , [ 1166590800000 , 23.263622267113] , [ 1166677200000 , 23.56769729586] , [ 1166763600000 , 23.618655123764] , [ 1167109200000 , 23.764764642496] , [ 1167195600000 , 23.311395546953] , [ 1167282000000 , 23.34602969198] , [ 1167368400000 , 23.247356469844] , [ 1167800400000 , 21.922350329319] , [ 1167886800000 , 21.793062390508] , [ 1167973200000 , 21.508430555457] , [ 1168232400000 , 21.753304923368] , [ 1168318800000 , 19.669014235032] , [ 1168405200000 , 19.85880321668] , [ 1168491600000 , 19.581369484627] , [ 1168578000000 , 19.416006540692] , [ 1168923600000 , 22.021976979642] , [ 1169010000000 , 22.275963382653] , [ 1169096400000 , 19.621490055971] , [ 1169182800000 , 19.515635937224] , [ 1169442000000 , 19.602346675605] , [ 1169528400000 , 19.978458804271] , [ 1169614800000 , 20.103823579633] , [ 1169701200000 , 19.670461491514] , [ 1169787600000 , 19.953030709912] , [ 1170046800000 , 19.65022612132] , [ 1170133200000 , 19.566798471479] , [ 1170219600000 , 22.552508642478] , [ 1170306000000 , 21.749117654183] , [ 1170392400000 , 21.510747610586] , [ 1170651600000 , 21.272220668557] , [ 1170738000000 , 21.733052020999] , [ 1170824400000 , 21.413067852542] , [ 1170910800000 , 21.357602635129] , [ 1170997200000 , 21.180685726204] , [ 1171256400000 , 22.339017576621] , [ 1171342800000 , 21.611798739066] , [ 1171429200000 , 21.912189034003] , [ 1171515600000 , 21.69862259892] , [ 1171602000000 , 22.387144323734] , [ 1171947600000 , 21.732919970863] , [ 1172034000000 , 22.702979955779] , [ 1172120400000 , 22.182754221217] , [ 1172206800000 , 22.232087752829] , [ 1172466000000 , 22.021621152722] , [ 1172552400000 , 21.724709810714] , [ 1172638800000 , 21.309248152985] , [ 1172725200000 , 23.038720157624] , [ 1172811600000 , 23.356060049391] , [ 1173070800000 , 23.91823257137] , [ 1173157200000 , 22.991381215984] , [ 1173243600000 , 23.17102160603] , [ 1173330000000 , 23.148971918654] , [ 1173416400000 , 23.610353211214] , [ 1173672000000 , 22.922249541257] , [ 1173758400000 , 23.315409134103] , [ 1173844800000 , 23.422547502573] , [ 1173931200000 , 24.177029283137] , [ 1174017600000 , 23.697482422289] , [ 1174276800000 , 23.756025363803] , [ 1174363200000 , 23.496613226255] , [ 1174449600000 , 24.010318972134] , [ 1174536000000 , 24.520421953475] , [ 1174622400000 , 23.623580969787] , [ 1174881600000 , 24.183789369369] , [ 1174968000000 , 23.996590482842] , [ 1175054400000 , 23.661950238353] , [ 1175140800000 , 23.417498406301] , [ 1175227200000 , 23.616740231748] , [ 1175486400000 , 25.535225571539] , [ 1175572800000 , 26.298255894295] , [ 1175659200000 , 26.309566077768] , [ 1175745600000 , 26.765619703864] , [ 1176091200000 , 25.882859817876] , [ 1176177600000 , 26.129452063368] , [ 1176264000000 , 26.642867398103] , [ 1176350400000 , 26.377155585326] , [ 1176436800000 , 26.625738484848] , [ 1176696000000 , 26.459071522205] , [ 1176782400000 , 26.676956427588] , [ 1176868800000 , 26.571556769682] , [ 1176955200000 , 26.3442172594] , [ 1177041600000 , 26.417506846359] , [ 1177300800000 , 26.705784414423] , [ 1177387200000 , 28.853822046765] , [ 1177473600000 , 28.023777635482] , [ 1177560000000 , 27.331722900396] , [ 1177646400000 , 27.357543106507] , [ 1177905600000 , 27.590602889594] , [ 1177992000000 , 26.721966524083] , [ 1178078400000 , 27.94744888776] , [ 1178164800000 , 27.871342504924] , [ 1178251200000 , 28.41898415852] , [ 1178510400000 , 28.139301891821] , [ 1178596800000 , 27.374842696624] , [ 1178683200000 , 28.396528363687] , [ 1178769600000 , 28.151062742446] , [ 1178856000000 , 28.210159898373] , [ 1179115200000 , 28.46627446548] , [ 1179201600000 , 27.889711089443] , [ 1179288000000 , 28.180379553365] , [ 1179374400000 , 28.419925545727] , [ 1179460800000 , 28.79884527223] , [ 1179720000000 , 28.773776030343] , [ 1179806400000 , 28.615671957672] , [ 1179892800000 , 28.226955800775] , [ 1179979200000 , 28.838980751694] , [ 1180065600000 , 28.333474694122] , [ 1180411200000 , 28.175136947162] , [ 1180497600000 , 28.250907436745] , [ 1180584000000 , 28.205031775171] , [ 1180670400000 , 30.562122167461] , [ 1180929600000 , 31.727077547446] , [ 1181016000000 , 31.526712861038] , [ 1181102400000 , 31.371311997888] , [ 1181188800000 , 31.341044313773] , [ 1181275200000 , 32.096525408199] , [ 1181534400000 , 31.102052663028] , [ 1181620800000 , 30.663687036323] , [ 1181707200000 , 31.392135349684] , [ 1181793600000 , 31.303621208067] , [ 1181880000000 , 31.327399629624] , [ 1182139200000 , 30.815822835417] , [ 1182225600000 , 31.942482340983] , [ 1182312000000 , 30.829787514049] , [ 1182398400000 , 29.579785566092] , [ 1182484800000 , 29.644816900172] , [ 1182744000000 , 30.152312600311] , [ 1182830400000 , 31.579014171397] , [ 1182916800000 , 31.648084647514] , [ 1183003200000 , 31.474781607087] , [ 1183089600000 , 29.559060758977] , [ 1183348800000 , 26.454181388487] , [ 1183435200000 , 26.870879403404] , [ 1183608000000 , 27.152761618507] , [ 1183694400000 , 27.522144912008] , [ 1183953600000 , 27.20262813974] , [ 1184040000000 , 25.286880129754] , [ 1184126400000 , 27.076057103394] , [ 1184212800000 , 27.659724803308] , [ 1184299200000 , 27.260718916646] , [ 1184558400000 , 27.492932031785] , [ 1184644800000 , 27.224553608661] , [ 1184731200000 , 27.408650007885] , [ 1184817600000 , 28.047951006202] , [ 1184904000000 , 27.408641988594] , [ 1185163200000 , 27.263249362455] , [ 1185249600000 , 26.846192097814] , [ 1185336000000 , 25.510336963729] , [ 1185422400000 , 25.9319625012] , [ 1185508800000 , 26.048453322021] , [ 1185768000000 , 25.680783888657] , [ 1185854400000 , 26.155314939312] , [ 1185940800000 , 26.042748190345] , [ 1186027200000 , 26.112906314178] , [ 1186113600000 , 25.651501389506] , [ 1186372800000 , 25.978730028686] , [ 1186459200000 , 25.516935670171] , [ 1186545600000 , 25.846110544803] , [ 1186632000000 , 25.003994813684] , [ 1186718400000 , 24.574945831102] , [ 1186977600000 , 25.03458234529] , [ 1187064000000 , 24.728273782212] , [ 1187150400000 , 24.548380537133] , [ 1187236800000 , 25.349499639045] , [ 1187323200000 , 25.399321016235] , [ 1187582400000 , 24.865053752481] , [ 1187668800000 , 24.071211320408] , [ 1187755200000 , 24.313207809179] , [ 1187841600000 , 25.815463088034] , [ 1187928000000 , 25.243808192447] , [ 1188187200000 , 25.659634715983] , [ 1188273600000 , 25.078534407655] , [ 1188360000000 , 25.58598642899] , [ 1188446400000 , 25.638710574976] , [ 1188532800000 , 25.573118710052] , [ 1188878400000 , 27.188374349953] , [ 1188964800000 , 27.275932492214] , [ 1189051200000 , 26.129383672332] , [ 1189137600000 , 25.9551511911] , [ 1189396800000 , 25.897083543731] , [ 1189483200000 , 26.34658405879] , [ 1189569600000 , 25.772151157655] , [ 1189656000000 , 25.505666353462] , [ 1189742400000 , 26.265711263021] , [ 1190001600000 , 26.428538843515] , [ 1190088000000 , 26.090201800345] , [ 1190174400000 , 26.49027091283] , [ 1190260800000 , 25.936695107827] , [ 1190347200000 , 25.560688469795] , [ 1190606400000 , 25.607839534311] , [ 1190692800000 , 26.548172129456] , [ 1190779200000 , 26.648152184763] , [ 1190865600000 , 26.51583644917] , [ 1190952000000 , 26.332757939256] , [ 1191211200000 , 26.152249906616] , [ 1191297600000 , 26.198070214474] , [ 1191384000000 , 25.990253277907] , [ 1191470400000 , 26.654530155526] , [ 1191556800000 , 25.972330764668] , [ 1191816000000 , 26.26248509896] , [ 1191902400000 , 26.348741583743] , [ 1191988800000 , 26.122186986449] , [ 1192075200000 , 29.593995471618] , [ 1192161600000 , 29.731603491274] , [ 1192420800000 , 28.827068536248] , [ 1192507200000 , 29.194892101581] , [ 1192593600000 , 26.924772425739] , [ 1192680000000 , 28.816812772785] , [ 1192766400000 , 26.733109839428] , [ 1193025600000 , 27.58180355578] , [ 1193112000000 , 27.173638592314] , [ 1193198400000 , 27.460463827787] , [ 1193284800000 , 30.621878493441] , [ 1193371200000 , 30.095645552523] , [ 1193630400000 , 29.558326096275] , [ 1193716800000 , 29.618512803515] , [ 1193803200000 , 30.460041175267] , [ 1193889600000 , 30.20410064808] , [ 1193976000000 , 30.268400946785] , [ 1194238800000 , 29.815054700452] , [ 1194325200000 , 29.663525457932] , [ 1194411600000 , 29.717734967739] , [ 1194498000000 , 29.923031415874] , [ 1194584400000 , 29.229595749207] , [ 1194843600000 , 26.876680107031] , [ 1194930000000 , 30.146205827268] , [ 1195016400000 , 29.963451454048] , [ 1195102800000 , 30.409258893906] , [ 1195189200000 , 30.587158002259] , [ 1195448400000 , 30.755226139371] , [ 1195534800000 , 29.958261264696] , [ 1195621200000 , 28.308697359232] , [ 1195794000000 , 30.64361038118] , [ 1196053200000 , 27.883612444559] , [ 1196139600000 , 30.005693265425] , [ 1196226000000 , 32.152433012248] , [ 1196312400000 , 32.424570146425] , [ 1196398800000 , 32.463470052891] , [ 1196658000000 , 29.782382006346] , [ 1196744400000 , 29.926958811799] , [ 1196830800000 , 30.40999379846] , [ 1196917200000 , 30.875736091533] , [ 1197003600000 , 29.697383078305] , [ 1197262800000 , 30.544967835139] , [ 1197349200000 , 30.339856651392] , [ 1197435600000 , 30.958770963045] , [ 1197522000000 , 31.105045247869] , [ 1197608400000 , 31.432564318877] , [ 1197867600000 , 30.713544524238] , [ 1197954000000 , 31.665432740145] , [ 1198040400000 , 30.659352150987] , [ 1198126800000 , 31.307794398172] , [ 1198213200000 , 30.79998865816] , [ 1198472400000 , 30.894681084193] , [ 1198645200000 , 30.912643462141] , [ 1198731600000 , 30.818603352572] , [ 1198818000000 , 30.985941180304] , [ 1199077200000 , 27.413147883654] , [ 1199250000000 , 28.214619106765] , [ 1199336400000 , 27.967472010083] , [ 1199422800000 , 28.627713526321] , [ 1199682000000 , 28.28827242333] , [ 1199768400000 , 28.101528173604] , [ 1199854800000 , 28.352660481501] , [ 1199941200000 , 28.423038285602] , [ 1200027600000 , 28.087400882261] , [ 1200286800000 , 24.531206834157] , [ 1200373200000 , 24.399806157282] , [ 1200459600000 , 27.915965227441] , [ 1200546000000 , 25.596194000672] , [ 1200632400000 , 26.724265623222] , [ 1200978000000 , 26.894494880297] , [ 1201064400000 , 25.744075642582] , [ 1201150800000 , 21.681648035334] , [ 1201237200000 , 21.421956476879] , [ 1201496400000 , 21.88447853606] , [ 1201582800000 , 22.061316137597] , [ 1201669200000 , 21.845894637271] , [ 1201755600000 , 25.891996188941] , [ 1201842000000 , 24.230482021313] , [ 1202101200000 , 24.598196667826] , [ 1202187600000 , 25.127139922963] , [ 1202274000000 , 23.71018712034] , [ 1202360400000 , 24.25191536915] , [ 1202446800000 , 24.764513426041] , [ 1202706000000 , 24.794348551806] , [ 1202792400000 , 24.533467311971] , [ 1202878800000 , 25.146466377668] , [ 1202965200000 , 24.494779263233] , [ 1203051600000 , 25.174922360197] , [ 1203397200000 , 24.718588536863] , [ 1203483600000 , 26.644245593025] , [ 1203570000000 , 26.156882900416] , [ 1203656400000 , 26.693685598849] , [ 1203915600000 , 26.318812850104] , [ 1204002000000 , 26.348379927677] , [ 1204088400000 , 26.629064175102] , [ 1204174800000 , 26.083020219303] , [ 1204261200000 , 26.586782515792] , [ 1204520400000 , 26.193953449032] , [ 1204606800000 , 26.658552584796] , [ 1204693200000 , 26.244226180682] , [ 1204779600000 , 25.707184371059] , [ 1204866000000 , 26.092414482193] , [ 1205121600000 , 24.72292084406] , [ 1205208000000 , 26.308078958154] , [ 1205294400000 , 25.31471453403] , [ 1205380800000 , 26.146616425211] , [ 1205467200000 , 26.904697150929] , [ 1205726400000 , 25.889697756321] , [ 1205812800000 , 25.46994685133] , [ 1205899200000 , 23.466208784145] , [ 1205985600000 , 23.199301432366] , [ 1206331200000 , 23.271085746455] , [ 1206417600000 , 25.295478659124] , [ 1206504000000 , 25.398182765923] , [ 1206590400000 , 25.694775105726] , [ 1206676800000 , 26.242795777833] , [ 1206936000000 , 22.71655362857] , [ 1207022400000 , 27.17234307449] , [ 1207108800000 , 23.751264791711] , [ 1207195200000 , 21.845581803881] , [ 1207281600000 , 24.198228794102] , [ 1207540800000 , 24.268870566536] , [ 1207627200000 , 24.238984288108] , [ 1207713600000 , 21.793077045426] , [ 1207800000000 , 24.343799824906] , [ 1207886400000 , 21.94502438827] , [ 1208145600000 , 22.269752613239] , [ 1208232000000 , 22.222300563448] , [ 1208318400000 , 26.794812806313] , [ 1208404800000 , 22.314978916188] , [ 1208491200000 , 24.839879328614] , [ 1208750400000 , 25.272063275883] , [ 1208836800000 , 22.647336954423] , [ 1208923200000 , 22.934695941336] , [ 1209009600000 , 22.491124452202] , [ 1209096000000 , 24.578552711705] , [ 1209355200000 , 27.352133020993] , [ 1209441600000 , 24.943859876554] , [ 1209528000000 , 24.125931140489] , [ 1209614400000 , 26.423198278426] , [ 1209700800000 , 26.215479844692] , [ 1209960000000 , 26.416050638718] , [ 1210046400000 , 26.699691148575] , [ 1210132800000 , 26.101180004743] , [ 1210219200000 , 25.883455903863] , [ 1210305600000 , 24.476429845243] , [ 1210564800000 , 26.560429014593] , [ 1210651200000 , 26.91243689922] , [ 1210737600000 , 26.550192630343] , [ 1210824000000 , 26.017240433928] , [ 1210910400000 , 25.850483367086] , [ 1211169600000 , 26.134682637347] , [ 1211256000000 , 25.511949418952] , [ 1211342400000 , 23.529168791348] , [ 1211428800000 , 25.387789070145] , [ 1211515200000 , 26.007759236212] , [ 1211860800000 , 25.840951541333] , [ 1211947200000 , 26.09480511976] , [ 1212033600000 , 25.832538213261] , [ 1212120000000 , 26.356864378434] , [ 1212379200000 , 21.859967055432] , [ 1212465600000 , 21.319303995557] , [ 1212552000000 , 21.792925854319] , [ 1212638400000 , 22.129303455338] , [ 1212724800000 , 22.397402638128] , [ 1212984000000 , 22.303887979305] , [ 1213070400000 , 22.677863368026] , [ 1213156800000 , 22.653114874681] , [ 1213243200000 , 22.055703112603] , [ 1213329600000 , 22.727336932122] , [ 1213588800000 , 22.600847997062] , [ 1213675200000 , 23.16434142917] , [ 1213761600000 , 23.190382803556] , [ 1213848000000 , 23.363509389946] , [ 1213934400000 , 22.90010736863] , [ 1214193600000 , 22.8960950063] , [ 1214280000000 , 23.112857459234] , [ 1214366400000 , 22.81464933731] , [ 1214452800000 , 22.599602343324] , [ 1214539200000 , 22.436628140001] , [ 1214798400000 , 25.101287933423] , [ 1214884800000 , 23.836698482432] , [ 1214971200000 , 21.598716730413] , [ 1215057600000 , 22.294848464403] , [ 1215403200000 , 21.890008710296] , [ 1215489600000 , 24.277998808076] , [ 1215576000000 , 24.16752987296] , [ 1215662400000 , 24.492420061962] , [ 1215748800000 , 24.36928386042] , [ 1216008000000 , 24.549310029453] , [ 1216094400000 , 24.525332576232] , [ 1216180800000 , 24.965527476087] , [ 1216267200000 , 24.262546016276] , [ 1216353600000 , 21.748843865619] , [ 1216612800000 , 22.248559554158] , [ 1216699200000 , 22.10105807761] , [ 1216785600000 , 24.118783930638] , [ 1216872000000 , 23.974858603682] , [ 1216958400000 , 23.899785139264] , [ 1217217600000 , 23.632034963543] , [ 1217304000000 , 24.573074179882] , [ 1217390400000 , 24.354176258483] , [ 1217476800000 , 23.586970077894] , [ 1217563200000 , 23.09281686853] , [ 1217822400000 , 22.381924573295] , [ 1217908800000 , 22.849960585469] , [ 1217995200000 , 23.308008650987] , [ 1218081600000 , 22.389528201348] , [ 1218168000000 , 22.617965778037] , [ 1218427200000 , 22.630018460434] , [ 1218513600000 , 22.429165436362] , [ 1218600000000 , 22.796193531372] , [ 1218686400000 , 22.91869049774] , [ 1218772800000 , 22.534177781093] , [ 1219032000000 , 22.307458869795] , [ 1219118400000 , 23.149998429395] , [ 1219204800000 , 22.809047920243] , [ 1219291200000 , 23.033620878128] , [ 1219377600000 , 22.88353839716] , [ 1219636800000 , 23.038231781339] , [ 1219723200000 , 22.837092985369] , [ 1219809600000 , 22.406121172016] , [ 1219896000000 , 22.543052050748] , [ 1219982400000 , 22.134325786459] , [ 1220328000000 , 22.90619352181] , [ 1220414400000 , 21.577514891646] , [ 1220500800000 , 20.964597997079] , [ 1220587200000 , 22.254316769503] , [ 1220846400000 , 20.978428684385] , [ 1220932800000 , 20.201251837107] , [ 1221019200000 , 20.716021429156] , [ 1221105600000 , 20.853607736708] , [ 1221192000000 , 22.637860530824] , [ 1221451200000 , 20.992548843385] , [ 1221537600000 , 22.640013229632] , [ 1221624000000 , 22.147932603234] , [ 1221710400000 , 23.107616271124] , [ 1221796800000 , 23.235208756356] , [ 1222056000000 , 23.073297051895] , [ 1222142400000 , 19.996488794335] , [ 1222228800000 , 20.798546480039] , [ 1222315200000 , 22.66049516895] , [ 1222401600000 , 17.13679183253] , [ 1222660800000 , 13.826273349744] , [ 1222747200000 , 13.077093752263] , [ 1222833600000 , 12.284675874792] , [ 1222920000000 , 11.065707170455] , [ 1223006400000 , 10.630383687986] , [ 1223265600000 , 9.4303250495554] , [ 1223352000000 , 8.9012730203526] , [ 1223438400000 , 8.9293325135165] , [ 1223524800000 , 8.0470811501794] , [ 1223611200000 , 7.9534190943532] , [ 1223870400000 , 10.148470568683] , [ 1223956800000 , 9.1884455797275] , [ 1224043200000 , 9.0306456153854] , [ 1224129600000 , 8.8795457738235] , [ 1224216000000 , 8.8804579858153] , [ 1224475200000 , 9.9480570220264] , [ 1224561600000 , 8.6699372921443] , [ 1224648000000 , 6.7828772739367] , [ 1224734400000 , 6.7194378835375] , [ 1224820800000 , 6.5576831314375] , [ 1225080000000 , 6.5526827191332] , [ 1225166400000 , 6.6431801167441] , [ 1225252800000 , 6.8171009374029] , [ 1225339200000 , 8.7180683997897] , [ 1225425600000 , 8.3266530080935] , [ 1225688400000 , 9.5157540775547] , [ 1225774800000 , 11.339344847983] , [ 1225861200000 , 9.4464996479877] , [ 1225947600000 , 9.0778210074445] , [ 1226034000000 , 9.2546275932455] , [ 1226293200000 , 8.8597595230316] , [ 1226379600000 , 9.3397889090676] , [ 1226466000000 , 7.2479518212381] , [ 1226552400000 , 9.2479344681812] , [ 1226638800000 , 9.416877333381] , [ 1226898000000 , 8.810496809664] , [ 1226984400000 , 9.0032294081395] , [ 1227070800000 , 7.0276364787384] , [ 1227157200000 , 6.7043268468833] , [ 1227243600000 , 7.0636555606867] , [ 1227502800000 , 9.0329047830937] , [ 1227589200000 , 8.8839970790477] , [ 1227675600000 , 9.1324522586047] , [ 1227848400000 , 9.0440300229022] , [ 1228107600000 , 9.2406157582628] , [ 1228194000000 , 8.6662271585896] , [ 1228280400000 , 8.552032165721] , [ 1228366800000 , 8.4684799027423] , [ 1228453200000 , 8.8685387993201] , [ 1228712400000 , 11.237542569647] , [ 1228798800000 , 11.618966861671] , [ 1228885200000 , 11.634559104171] , [ 1228971600000 , 11.296954170121] , [ 1229058000000 , 11.546905256863] , [ 1229317200000 , 11.317508652977] , [ 1229403600000 , 11.577530719706] , [ 1229490000000 , 13.056293486221] , [ 1229576400000 , 12.670963990739] , [ 1229662800000 , 12.908010105666] , [ 1229922000000 , 10.943709273262] , [ 1230008400000 , 10.487188096375] , [ 1230094800000 , 10.880843499761] , [ 1230267600000 , 10.76296928134] , [ 1230526800000 , 11.125879644882] , [ 1230613200000 , 12.423958890591] , [ 1230699600000 , 15.375914364972] , [ 1230872400000 , 17.931848968257] , [ 1231131600000 , 15.967743128748] , [ 1231218000000 , 15.955731604841] , [ 1231304400000 , 15.750434305136] , [ 1231390800000 , 15.504689513544] , [ 1231477200000 , 16.08339635538] , [ 1231736400000 , 15.801648291214] , [ 1231822800000 , 15.842640752539] , [ 1231909200000 , 14.469656332513] , [ 1231995600000 , 14.047963432084] , [ 1232082000000 , 14.112345335294] , [ 1232427600000 , 14.041375734523] , [ 1232514000000 , 14.464446317295] , [ 1232600400000 , 14.170330638073] , [ 1232686800000 , 14.402546781906] , [ 1232946000000 , 14.295167847681] , [ 1233032400000 , 14.616834831255] , [ 1233118800000 , 15.485715273776] , [ 1233205200000 , 14.363478044307] , [ 1233291600000 , 14.785085502528] , [ 1233550800000 , 13.964576959879] , [ 1233637200000 , 16.214519014731] , [ 1233723600000 , 14.091750418726] , [ 1233810000000 , 16.337866980437] , [ 1233896400000 , 17.946644946538] , [ 1234155600000 , 15.77196604476] , [ 1234242000000 , 15.360662859138] , [ 1234328400000 , 16.095973396396] , [ 1234414800000 , 15.75503189211] , [ 1234501200000 , 16.170650295906] , [ 1234846800000 , 14.172722551245] , [ 1234933200000 , 14.310638455276] , [ 1235019600000 , 14.099565212181] , [ 1235106000000 , 13.684697059175] , [ 1235365200000 , 13.817948103314] , [ 1235451600000 , 14.334290991514] , [ 1235538000000 , 14.337909782235] , [ 1235624400000 , 14.146042421534] , [ 1235710800000 , 13.725040132025] , [ 1235970000000 , 12.11065253521] , [ 1236056400000 , 12.327904770327] , [ 1236142800000 , 12.471291302517] , [ 1236229200000 , 12.02915540764] , [ 1236315600000 , 10.187129325878] , [ 1236571200000 , 10.229137796771] , [ 1236657600000 , 12.597415074867] , [ 1236744000000 , 12.500500687553] , [ 1236830400000 , 12.775131207967] , [ 1236916800000 , 12.7714990873] , [ 1237176000000 , 13.156437647158] , [ 1237262400000 , 12.852271200328] , [ 1237348800000 , 14.132033344691] , [ 1237435200000 , 12.993143907842] , [ 1237521600000 , 12.903808030145] , [ 1237780800000 , 14.297168381677] , [ 1237867200000 , 14.366190770734] , [ 1237953600000 , 14.719911368313] , [ 1238040000000 , 13.391019202654] , [ 1238126400000 , 12.092033674534] , [ 1238385600000 , 12.435613981786] , [ 1238472000000 , 12.6411945345] , [ 1238558400000 , 12.28157338962] , [ 1238644800000 , 10.35675853168] , [ 1238731200000 , 10.860453911764] , [ 1238990400000 , 10.28966794386] , [ 1239076800000 , 10.278064045435] , [ 1239163200000 , 10.355890587737] , [ 1239249600000 , 10.721229431724] , [ 1239595200000 , 10.702562788036] , [ 1239681600000 , 10.6121927661] , [ 1239768000000 , 10.495356287245] , [ 1239854400000 , 10.951066937501] , [ 1239940800000 , 11.057051832987] , [ 1240200000000 , 10.038186680346] , [ 1240286400000 , 10.718857242302] , [ 1240372800000 , 10.093156859055] , [ 1240459200000 , 10.504566873295] , [ 1240545600000 , 12.050084965623] , [ 1240804800000 , 12.463270454031] , [ 1240891200000 , 12.390350685738] , [ 1240977600000 , 12.502252881803] , [ 1241064000000 , 12.160534312241] , [ 1241150400000 , 12.092519674715] , [ 1241409600000 , 13.371542376789] , [ 1241496000000 , 11.589162775079] , [ 1241582400000 , 11.895101606214] , [ 1241668800000 , 10.776395347324] , [ 1241755200000 , 11.499715860942] , [ 1242014400000 , 10.67998570401] , [ 1242100800000 , 12.13969278283] , [ 1242187200000 , 10.315100211108] , [ 1242273600000 , 10.560365451866] , [ 1242360000000 , 10.522348869076] , [ 1242619200000 , 12.998005975456] , [ 1242705600000 , 12.31086464647] , [ 1242792000000 , 12.104483056899] , [ 1242878400000 , 13.112410404644] , [ 1242964800000 , 12.382999937646] , [ 1243310400000 , 13.507413734788] , [ 1243396800000 , 12.126701970815] , [ 1243483200000 , 13.659733333421] , [ 1243569600000 , 13.391649599842] , [ 1243828800000 , 13.613056683013] , [ 1243915200000 , 13.654699620719] , [ 1244001600000 , 13.361138434443] , [ 1244088000000 , 13.467323739931] , [ 1244174400000 , 13.436960051452] , [ 1244433600000 , 13.45010448311] , [ 1244520000000 , 13.309266105666] , [ 1244606400000 , 13.218842936387] , [ 1244692800000 , 13.452871572254] , [ 1244779200000 , 12.42635307245] , [ 1245038400000 , 12.669706123069] , [ 1245124800000 , 12.465435661844] , [ 1245211200000 , 12.7736913381] , [ 1245297600000 , 12.425895741098] , [ 1245384000000 , 13.036568250712] , [ 1245643200000 , 12.786440632451] , [ 1245729600000 , 12.779269016226] , [ 1245816000000 , 13.014836133492] , [ 1245902400000 , 13.209957760354] , [ 1245988800000 , 12.893413435344] , [ 1246248000000 , 12.824302626282] , [ 1246334400000 , 15.146379713486] , [ 1246420800000 , 14.981558532708] , [ 1246507200000 , 14.678460239031] , [ 1246852800000 , 14.925775723023] , [ 1246939200000 , 15.029877764704] , [ 1247025600000 , 15.092001811196] , [ 1247112000000 , 14.760093425351] , [ 1247198400000 , 15.119413720695] , [ 1247457600000 , 15.498838587115] , [ 1247544000000 , 14.898473206687] , [ 1247630400000 , 15.531483438437] , [ 1247716800000 , 15.249077746618] , [ 1247803200000 , 15.778483995946] , [ 1248062400000 , 16.082101777482] , [ 1248148800000 , 16.133146637217] , [ 1248235200000 , 16.546432092559] , [ 1248321600000 , 16.523569388775] , [ 1248408000000 , 16.701863514799] , [ 1248667200000 , 16.604960969268] , [ 1248753600000 , 16.488294531585] , [ 1248840000000 , 16.937620473844] , [ 1248926400000 , 16.790560076824] , [ 1249012800000 , 16.248363435705] , [ 1249272000000 , 16.564558948816] , [ 1249358400000 , 16.455641854637] , [ 1249444800000 , 16.328809339246] , [ 1249531200000 , 16.67638807089] , [ 1249617600000 , 16.166396498024] , [ 1249876800000 , 16.769085318686] , [ 1249963200000 , 16.530374048977] , [ 1250049600000 , 16.526183772843] , [ 1250136000000 , 16.375829790545] , [ 1250222400000 , 16.713968276809] , [ 1250481600000 , 15.993095112877] , [ 1250568000000 , 16.799051128538] , [ 1250654400000 , 16.276637187387] , [ 1250740800000 , 17.089509782316] , [ 1250827200000 , 16.616106779777] , [ 1251086400000 , 16.515549315826] , [ 1251172800000 , 17.147634467285] , [ 1251259200000 , 16.436917136596] , [ 1251345600000 , 16.841369557117] , [ 1251432000000 , 16.43122112384] , [ 1251691200000 , 17.043513078952] , [ 1251777600000 , 16.446925526842] , [ 1251864000000 , 16.652504066228] , [ 1251950400000 , 16.591432415903] , [ 1252036800000 , 16.499772581029] , [ 1252382400000 , 16.947320880146] , [ 1252468800000 , 16.14629738553] , [ 1252555200000 , 16.484439747556] , [ 1252641600000 , 16.578694320843] , [ 1252900800000 , 16.78566904875] , [ 1252987200000 , 16.2408123932] , [ 1253073600000 , 17.078787515196] , [ 1253160000000 , 16.906755525169] , [ 1253246400000 , 16.40574598804] , [ 1253505600000 , 16.806216143902] , [ 1253592000000 , 16.605729657111] , [ 1253678400000 , 16.617032132274] , [ 1253764800000 , 16.704580255368] , [ 1253851200000 , 16.812202786435] , [ 1254110400000 , 16.799071360461] , [ 1254196800000 , 16.852378487751] , [ 1254283200000 , 25.431309344777] , [ 1254369600000 , 23.222965579702] , [ 1254456000000 , 23.071826417577] , [ 1254715200000 , 22.808853567902] , [ 1254801600000 , 23.294389753777] , [ 1254888000000 , 23.573116652391] , [ 1254974400000 , 23.431317210644] , [ 1255060800000 , 23.690869262506] , [ 1255320000000 , 23.24339486172] , [ 1255406400000 , 23.059988275802] , [ 1255492800000 , 23.764274725182] , [ 1255579200000 , 23.637926378417] , [ 1255665600000 , 23.845872985185] , [ 1255924800000 , 23.822856926594] , [ 1256011200000 , 24.189098034702] , [ 1256097600000 , 23.858046664592] , [ 1256184000000 , 23.914516419148] , [ 1256270400000 , 24.101276775982] , [ 1256529600000 , 23.610922571498] , [ 1256616000000 , 23.332362896484] , [ 1256702400000 , 22.523655846395] , [ 1256788800000 , 23.856829700669] , [ 1256875200000 , 22.730673476776] , [ 1257138000000 , 24.23137735378] , [ 1257224400000 , 24.096752556324] , [ 1257310800000 , 24.109409371527] , [ 1257397200000 , 22.564794855246] , [ 1257483600000 , 22.649642224419] , [ 1257742800000 , 24.179234907903] , [ 1257829200000 , 24.303220424767] , [ 1257915600000 , 24.317365812853] , [ 1258002000000 , 22.731651939541] , [ 1258088400000 , 23.34987104225] , [ 1258347600000 , 24.422306141472] , [ 1258434000000 , 24.537018123608] , [ 1258520400000 , 24.367809159498] , [ 1258606800000 , 24.290993426035] , [ 1258693200000 , 24.428182583715] , [ 1258952400000 , 24.301937798758] , [ 1259038800000 , 24.390442427645] , [ 1259125200000 , 24.431572163766] , [ 1259298000000 , 22.526546825726] , [ 1259557200000 , 22.802553442303] , [ 1259643600000 , 23.653721374343] , [ 1259730000000 , 23.962687684298] , [ 1259816400000 , 23.879837022716] , [ 1259902800000 , 23.954751867427] , [ 1260162000000 , 23.525075445341] , [ 1260248400000 , 23.636489057379] , [ 1260334800000 , 23.85626674156] , [ 1260421200000 , 23.683181821437] , [ 1260507600000 , 23.21737564337] , [ 1260766800000 , 23.642669163225] , [ 1260853200000 , 22.992072451748] , [ 1260939600000 , 23.432811457962] , [ 1261026000000 , 23.335920037782] , [ 1261112400000 , 23.992227508716] , [ 1261371600000 , 24.381927235956] , [ 1261458000000 , 24.236594141442] , [ 1261544400000 , 23.568873106735] , [ 1261630800000 , 24.146892015266] , [ 1261976400000 , 23.506983441902] , [ 1262062800000 , 23.770955283415] , [ 1262149200000 , 24.143157377049] , [ 1262235600000 , 17.511609505034] , [ 1262581200000 , 17.59587584334] , [ 1262667600000 , 17.862805755291] , [ 1262754000000 , 18.335681939449] , [ 1262840400000 , 17.785662981034] , [ 1262926800000 , 17.962483283397] , [ 1263186000000 , 18.216639190617] , [ 1263272400000 , 18.22073741648] , [ 1263358800000 , 17.825672675711] , [ 1263445200000 , 17.620939720051] , [ 1263531600000 , 16.762564236566] , [ 1263877200000 , 16.578206266095] , [ 1263963600000 , 17.060135351263] , [ 1264050000000 , 16.602073884753] , [ 1264136400000 , 16.423668597664] , [ 1264395600000 , 16.341401994621] , [ 1264482000000 , 16.72635341813] , [ 1264568400000 , 16.603279629631] , [ 1264654800000 , 16.342152650635] , [ 1264741200000 , 16.375539291939] , [ 1265000400000 , 17.286845962765] , [ 1265086800000 , 17.17888456086] , [ 1265173200000 , 17.328217107089] , [ 1265259600000 , 17.170126797622] , [ 1265346000000 , 17.275895152661] , [ 1265605200000 , 16.838521104494] , [ 1265691600000 , 17.209221833795] , [ 1265778000000 , 16.840751919696] , [ 1265864400000 , 17.402253054405] , [ 1265950800000 , 17.283267017109] , [ 1266296400000 , 17.839877867831] , [ 1266382800000 , 17.2585660445] , [ 1266469200000 , 17.312477312482] , [ 1266555600000 , 17.229088874178] , [ 1266814800000 , 17.992792901541] , [ 1266901200000 , 17.545611419769] , [ 1266987600000 , 19.555610161782] , [ 1267074000000 , 17.402460137181] , [ 1267160400000 , 17.457900479237] , [ 1267419600000 , 18.059506166626] , [ 1267506000000 , 19.556832046321] , [ 1267592400000 , 20.074915026725] , [ 1267678800000 , 20.239852202039] , [ 1267765200000 , 19.784459877733] , [ 1268024400000 , 19.794727149886] , [ 1268110800000 , 19.411627409137] , [ 1268197200000 , 19.672556345457] , [ 1268283600000 , 19.938508059385] , [ 1268370000000 , 19.84674433628] , [ 1268625600000 , 20.128999533093] , [ 1268712000000 , 20.01245357768] , [ 1268798400000 , 19.660623009837] , [ 1268884800000 , 19.656052984352] , [ 1268971200000 , 19.471326821212] , [ 1269230400000 , 19.790704235255] , [ 1269316800000 , 20.018793862282] , [ 1269403200000 , 19.979656850697] , [ 1269489600000 , 20.230336707568] , [ 1269576000000 , 20.506839341548] , [ 1269835200000 , 20.146748216221] , [ 1269921600000 , 20.672365386495] , [ 1270008000000 , 28.751555982445] , [ 1270094400000 , 26.677017709142] , [ 1270440000000 , 26.76186385082] , [ 1270526400000 , 27.662001071617] , [ 1270612800000 , 23.488342033375] , [ 1270699200000 , 27.198945324419] , [ 1270785600000 , 27.562965762261] , [ 1271044800000 , 27.846225990178] , [ 1271131200000 , 27.829440811172] , [ 1271217600000 , 27.10037617327] , [ 1271304000000 , 27.683409145171] , [ 1271390400000 , 26.765047606893] , [ 1271649600000 , 26.854352509615] , [ 1271736000000 , 27.079240867802] , [ 1271822400000 , 27.27729711969] , [ 1271908800000 , 26.625626502005] , [ 1271995200000 , 26.765297220688] , [ 1272254400000 , 26.918302756881] , [ 1272340800000 , 27.417694228616] , [ 1272427200000 , 27.403471927842] , [ 1272513600000 , 27.286730861361] , [ 1272600000000 , 27.395148380185] , [ 1272859200000 , 26.114660928377] , [ 1272945600000 , 25.657945898722] , [ 1273032000000 , 25.55589643361] , [ 1273118400000 , 21.706935040814] , [ 1273204800000 , 21.69441045433] , [ 1273464000000 , 24.81823453287] , [ 1273550400000 , 21.87067760687] , [ 1273636800000 , 25.359497192713] , [ 1273723200000 , 25.227126100012] , [ 1273809600000 , 21.52499740982] , [ 1274068800000 , 24.558568519266] , [ 1274155200000 , 21.010311356319] , [ 1274241600000 , 21.254694184854] , [ 1274328000000 , 20.702102888533] , [ 1274414400000 , 21.238444633236] , [ 1274673600000 , 20.729017098259] , [ 1274760000000 , 20.738313908135] , [ 1274846400000 , 21.033355970039] , [ 1274932800000 , 21.23460634468] , [ 1275019200000 , 21.088356917231] , [ 1275364800000 , 22.004737299363] , [ 1275451200000 , 21.820503579706] , [ 1275537600000 , 22.630243104102] , [ 1275624000000 , 21.49833946787] , [ 1275883200000 , 21.580562388482] , [ 1275969600000 , 21.705634911623] , [ 1276056000000 , 21.551377724378] , [ 1276142400000 , 21.715668604885] , [ 1276228800000 , 21.677988055615] , [ 1276488000000 , 22.437451894376] , [ 1276574400000 , 21.791896372432] , [ 1276660800000 , 21.836693756879] , [ 1276747200000 , 22.412160647473] , [ 1276833600000 , 22.700670017784] , [ 1277092800000 , 22.703292258233] , [ 1277179200000 , 22.32005929544] , [ 1277265600000 , 22.135458897354] , [ 1277352000000 , 22.261160362687] , [ 1277438400000 , 22.259757873921] , [ 1277697600000 , 22.356935481008] , [ 1277784000000 , 22.704287207773] , [ 1277870400000 , 16.05420062686] , [ 1277956800000 , 19.596394322249] , [ 1278043200000 , 17.221863063885] , [ 1278388800000 , 20.237168940716] , [ 1278475200000 , 20.228154071202] , [ 1278561600000 , 19.599048817893] , [ 1278648000000 , 20.100296801153] , [ 1278907200000 , 19.898139041109] , [ 1278993600000 , 21.449430769871] , [ 1279080000000 , 21.027450612016] , [ 1279166400000 , 20.761140771166] , [ 1279252800000 , 20.56922039679] , [ 1279512000000 , 20.331058844227] , [ 1279598400000 , 19.94187419945] , [ 1279684800000 , 20.194392373305] , [ 1279771200000 , 19.885449595918] , [ 1279857600000 , 20.150953255056] , [ 1280116800000 , 19.977909053698] , [ 1280203200000 , 20.306063487985] , [ 1280289600000 , 19.990022596044] , [ 1280376000000 , 20.536239497791] , [ 1280462400000 , 20.251947918853] , [ 1280721600000 , 18.791308697595] , [ 1280808000000 , 19.499755197734] , [ 1280894400000 , 19.227509289044] , [ 1280980800000 , 19.34411262702] , [ 1281067200000 , 19.307545278758] , [ 1281326400000 , 18.971763342798] , [ 1281412800000 , 19.521632486579] , [ 1281499200000 , 19.767849754926] , [ 1281585600000 , 19.487641720993] , [ 1281672000000 , 19.03340909661] , [ 1281931200000 , 19.71805260588] , [ 1282017600000 , 18.941204690514] , [ 1282104000000 , 18.949283618331] , [ 1282190400000 , 19.050510406256] , [ 1282276800000 , 18.88152804134] , [ 1282536000000 , 16.949535632409] , [ 1282622400000 , 16.665719801984] , [ 1282708800000 , 16.753272095777] , [ 1282795200000 , 16.287068495466] , [ 1282881600000 , 16.618921167238] , [ 1283140800000 , 15.98441290019] , [ 1283227200000 , 16.625931265272] , [ 1283313600000 , 18.740687400848] , [ 1283400000000 , 18.218829255882] , [ 1283486400000 , 18.42997098831] , [ 1283832000000 , 19.45362711179] , [ 1283918400000 , 19.345664866617] , [ 1284004800000 , 19.093031639436] , [ 1284091200000 , 18.909043610256] , [ 1284350400000 , 19.539612248667] , [ 1284436800000 , 18.943698845934] , [ 1284523200000 , 19.054050930712] , [ 1284609600000 , 16.679477750336] , [ 1284696000000 , 16.935001872909] , [ 1284955200000 , 19.701024204411] , [ 1285041600000 , 20.051422228717] , [ 1285128000000 , 19.969665647018] , [ 1285214400000 , 20.486198042956] , [ 1285300800000 , 19.891263054402] , [ 1285560000000 , 18.769890528074] , [ 1285646400000 , 19.014827368429] , [ 1285732800000 , 18.662086460667] , [ 1285819200000 , 23.898415710948] , [ 1285905600000 , 24.11480692944] , [ 1286164800000 , 22.888098943395] , [ 1286251200000 , 24.693634057583] , [ 1286337600000 , 22.872537431949] , [ 1286424000000 , 24.404360624536] , [ 1286510400000 , 24.778369969679] , [ 1286769600000 , 24.651633997256] , [ 1286856000000 , 24.884268452062] , [ 1286942400000 , 24.975369067386] , [ 1287028800000 , 25.010149025336] , [ 1287115200000 , 26.95954877975] , [ 1287374400000 , 25.819950664795] , [ 1287460800000 , 25.490113017719] , [ 1287547200000 , 26.381871986207] , [ 1287633600000 , 25.769025736212] , [ 1287720000000 , 26.193526119475] , [ 1287979200000 , 25.072761302693] , [ 1288065600000 , 24.96224892059] , [ 1288152000000 , 24.922096771807] , [ 1288238400000 , 25.351386850428] , [ 1288324800000 , 25.609036598253] , [ 1288584000000 , 24.775702680422] , [ 1288670400000 , 25.493191075839] , [ 1288756800000 , 25.378669738968] , [ 1288843200000 , 25.135007745534] , [ 1288929600000 , 25.195906023095] , [ 1289192400000 , 25.039965734786] , [ 1289278800000 , 25.082586275708] , [ 1289365200000 , 25.667933604689] , [ 1289451600000 , 24.748560845718] , [ 1289538000000 , 24.91695263463] , [ 1289797200000 , 24.605226120371] , [ 1289883600000 , 24.855764415965] , [ 1289970000000 , 25.168176311491] , [ 1290056400000 , 24.340821897791] , [ 1290142800000 , 25.016093707043] , [ 1290402000000 , 24.850053022832] , [ 1290488400000 , 24.655597571244] , [ 1290574800000 , 25.102500772745] , [ 1290747600000 , 24.395010402445] , [ 1291006800000 , 24.860334037232] , [ 1291093200000 , 23.796133383393] , [ 1291179600000 , 25.400848276042] , [ 1291266000000 , 24.958338710485] , [ 1291352400000 , 24.117883941613] , [ 1291611600000 , 24.442564389286] , [ 1291698000000 , 24.777851053778] , [ 1291784400000 , 24.981486014327] , [ 1291870800000 , 24.831625575598] , [ 1291957200000 , 25.055055878476] , [ 1292216400000 , 24.645546468675] , [ 1292302800000 , 25.1951968076] , [ 1292389200000 , 24.846967890964] , [ 1292475600000 , 25.476557222784] , [ 1292562000000 , 24.873610898292] , [ 1292821200000 , 24.992757034363] , [ 1292907600000 , 25.027367617635] , [ 1292994000000 , 25.326429994786] , [ 1293080400000 , 25.400231012356] , [ 1293426000000 , 26.113124364103] , [ 1293512400000 , 25.198872439023] , [ 1293598800000 , 25.482130379281] , [ 1293685200000 , 25.688645503032] , [ 1293771600000 , 25.306388246839] , [ 1294030800000 , 25.36459570696] , [ 1294117200000 , 25.687983390493] , [ 1294203600000 , 26.094321969653] , [ 1294290000000 , 25.449849891007] , [ 1294376400000 , 26.192775432124] , [ 1294635600000 , 26.002488169068] , [ 1294722000000 , 26.051468321052] , [ 1294808400000 , 27.619473102251] , [ 1294894800000 , 26.705886700555] , [ 1294981200000 , 26.323134959679] , [ 1295326800000 , 27.023507240033] , [ 1295413200000 , 25.553451290321] , [ 1295499600000 , 25.641441399244] , [ 1295586000000 , 25.506905335216] , [ 1295845200000 , 25.490820900811] , [ 1295931600000 , 26.704117574935] , [ 1296018000000 , 26.700070517511] , [ 1296104400000 , 26.117075289003] , [ 1296190800000 , 26.091700933962] , [ 1296450000000 , 25.831331701153] , [ 1296536400000 , 27.119893526929] , [ 1296622800000 , 26.796829714037] , [ 1296709200000 , 27.251562599365] , [ 1296795600000 , 25.239238527205] , [ 1297054800000 , 27.127650128824] , [ 1297141200000 , 25.205555973598] , [ 1297227600000 , 26.061076261635] , [ 1297314000000 , 24.723386881568] , [ 1297400400000 , 25.181105799696] , [ 1297659600000 , 25.893618232639] , [ 1297746000000 , 26.465819971151] , [ 1297832400000 , 26.603595241409] , [ 1297918800000 , 26.284739691125] , [ 1298005200000 , 26.228994520127] , [ 1298350800000 , 25.501061017414] , [ 1298437200000 , 25.644711243746] , [ 1298523600000 , 24.505518479099] , [ 1298610000000 , 24.710692269574] , [ 1298869200000 , 25.305693710332] , [ 1298955600000 , 25.303258057098] , [ 1299042000000 , 24.960972271129] , [ 1299128400000 , 28.586701575536] , [ 1299214800000 , 28.164881344198] , [ 1299474000000 , 25.047709149433] , [ 1299560400000 , 25.036110115328] , [ 1299646800000 , 28.064505577487] , [ 1299733200000 , 25.365629343474] , [ 1299819600000 , 25.011246263326] , [ 1300075200000 , 25.669985094568] , [ 1300161600000 , 25.290486031435] , [ 1300248000000 , 24.46281324856] , [ 1300334400000 , 24.663380019377] , [ 1300420800000 , 25.094681277589] , [ 1300680000000 , 25.145367104644] , [ 1300766400000 , 26.135504527832] , [ 1300852800000 , 25.599397988325] , [ 1300939200000 , 25.485459688586] , [ 1301025600000 , 25.329921568923] , [ 1301284800000 , 25.638385273154] , [ 1301371200000 , 28.949598515781] , [ 1301457600000 , 28.439424813101] , [ 1301544000000 , 25.780730641051] , [ 1301630400000 , 27.633391932031] , [ 1301889600000 , 27.755208547663] , [ 1301976000000 , 24.589995869242] , [ 1302062400000 , 24.504717652488] , [ 1302148800000 , 24.731928161232] , [ 1302235200000 , 24.357227719503] , [ 1302494400000 , 24.812448966534] , [ 1302580800000 , 25.150710531704] , [ 1302667200000 , 25.11896626483] , [ 1302753600000 , 24.397375694316] , [ 1302840000000 , 24.541663596991] , [ 1303099200000 , 24.783459749743] , [ 1303185600000 , 24.335736536054] , [ 1303272000000 , 24.88808373959] , [ 1303358400000 , 27.589549952522] , [ 1303704000000 , 27.953281956336] , [ 1303790400000 , 27.585340356178] , [ 1303876800000 , 28.160100447269] , [ 1303963200000 , 27.446515382208] , [ 1304049600000 , 27.608966991097] , [ 1304308800000 , 28.777466101837] , [ 1304395200000 , 29.180290170784] , [ 1304481600000 , 29.346019353302] , [ 1304568000000 , 29.395801384325] , [ 1304654400000 , 29.452148336956] , [ 1304913600000 , 28.704040632275] , [ 1305000000000 , 29.312203826479] , [ 1305086400000 , 28.853806332882] , [ 1305172800000 , 28.718535229337] , [ 1305259200000 , 28.716899720519] , [ 1305518400000 , 28.096806729878] , [ 1305604800000 , 27.26754241696] , [ 1305691200000 , 27.246665772335] , [ 1305777600000 , 27.496062469545] , [ 1305864000000 , 27.090226664809] , [ 1306123200000 , 27.521262028507] , [ 1306209600000 , 27.111251207062] , [ 1306296000000 , 26.715428931325] , [ 1306382400000 , 27.878259778988] , [ 1306468800000 , 28.398263400927] , [ 1306814400000 , 28.423434916843] , [ 1306900800000 , 26.790597301426] , [ 1306987200000 , 27.215478415815] , [ 1307073600000 , 26.791794446882] , [ 1307332800000 , 27.289633869408] , [ 1307419200000 , 26.820277000071] , [ 1307505600000 , 26.5691855452] , [ 1307592000000 , 27.259772970539] , [ 1307678400000 , 25.820870966346] , [ 1307937600000 , 27.058733743783] , [ 1308024000000 , 27.396275937504] , [ 1308110400000 , 27.369857482521] , [ 1308196800000 , 26.892699473036] , [ 1308283200000 , 26.940060489474] , [ 1308542400000 , 27.412521110469] , [ 1308628800000 , 27.766635740117] , [ 1308715200000 , 27.386425581275] , [ 1308801600000 , 26.918010623003] , [ 1308888000000 , 27.232371616367] , [ 1309147200000 , 26.836844855166] , [ 1309233600000 , 27.906685156972] , [ 1309320000000 , 27.954092422443] , [ 1309406400000 , 27.074102810043] , [ 1309492800000 , 26.279822408479] , [ 1309838400000 , 26.01874441868] , [ 1309924800000 , 26.225797736704] , [ 1310011200000 , 26.051477989298] , [ 1310097600000 , 26.219940204659] , [ 1310356800000 , 25.089996497267] , [ 1310443200000 , 25.016128092919] , [ 1310529600000 , 25.008348193964] , [ 1310616000000 , 25.5500617145] , [ 1310702400000 , 25.630388944842] , [ 1310961600000 , 25.536088921763] , [ 1311048000000 , 25.274336268572] , [ 1311134400000 , 25.50588001502] , [ 1311220800000 , 25.97676621425] , [ 1311307200000 , 25.918251264831] , [ 1311566400000 , 25.895584776114] , [ 1311652800000 , 26.155812874342] , [ 1311739200000 , 25.973504725924] , [ 1311825600000 , 22.005504661556] , [ 1311912000000 , 21.901642088437] , [ 1314763200000 , 20.611854638729] , [ 1314849600000 , 20.806302035488] , [ 1314936000000 , 20.39315336605] , [ 1315281600000 , 20.321606951254] , [ 1315368000000 , 20.57177837784] , [ 1315454400000 , 20.928539181222] , [ 1315540800000 , 20.070835621616] , [ 1315800000000 , 20.579538524538] , [ 1315886400000 , 20.008943531928] , [ 1315972800000 , 21.002529504578] , [ 1316059200000 , 20.600040567661] , [ 1316145600000 , 20.450077647397] , [ 1316404800000 , 20.648324212044] , [ 1316491200000 , 20.811616497537] , [ 1316577600000 , 20.846592907441] , [ 1316664000000 , 20.432266740358] , [ 1316750400000 , 20.497802818551] , [ 1317009600000 , 20.357261528122] , [ 1317096000000 , 20.691829731811] , [ 1317182400000 , 20.906999403533] , [ 1317268800000 , 20.555513564685] , [ 1317355200000 , 16.831115451175] , [ 1317614400000 , 15.660365199854] , [ 1317700800000 , 16.162864252296] , [ 1317787200000 , 16.168815648261] , [ 1317873600000 , 16.918319035941] , [ 1317960000000 , 15.900039977092] , [ 1318219200000 , 16.715443422272] , [ 1318305600000 , 16.983186931775] , [ 1318392000000 , 16.857280237471] , [ 1318478400000 , 17.043292522606] , [ 1318564800000 , 17.100161150229] , [ 1318824000000 , 16.942108266257] , [ 1318910400000 , 16.848382043396] , [ 1318996800000 , 16.723866632805] , [ 1319083200000 , 17.109412880037] , [ 1319169600000 , 16.98691902971] , [ 1319428800000 , 17.109847768306] , [ 1319515200000 , 17.176790314354] , [ 1319601600000 , 17.395503357433] , [ 1319688000000 , 18.120215236657] , [ 1319774400000 , 18.208495030036] , [ 1320033600000 , 17.204446894063] , [ 1320120000000 , 17.350163988829] , [ 1320206400000 , 17.666770311911] , [ 1320292800000 , 17.992414015282] , [ 1320379200000 , 17.730167909186] , [ 1320642000000 , 17.78540693483] , [ 1320728400000 , 19.230356158657] , [ 1320814800000 , 17.930397927692] , [ 1320901200000 , 17.758045721417] , [ 1320987600000 , 18.112660862711] , [ 1321246800000 , 17.777577166795] , [ 1321333200000 , 17.924996192204] , [ 1321419600000 , 17.727740473551] , [ 1321506000000 , 17.646091083267] , [ 1321592400000 , 17.796758667436] , [ 1321851600000 , 17.37197245438] , [ 1321938000000 , 17.522133599105] , [ 1322024400000 , 17.341643801545] , [ 1322197200000 , 17.335102273917] , [ 1322456400000 , 18.019343681609] , [ 1322542800000 , 17.792427717329] , [ 1322629200000 , 18.870695767008] , [ 1322715600000 , 17.852232277547] , [ 1322802000000 , 18.089784127726] , [ 1323061200000 , 17.937454450063] , [ 1323147600000 , 19.699367115869] , [ 1323234000000 , 19.218087674502] , [ 1323320400000 , 17.619476226833] , [ 1323406800000 , 19.887347730436] , [ 1323666000000 , 18.994060101082] , [ 1323752400000 , 18.257092168861] , [ 1323838800000 , 18.036619429622] , [ 1323925200000 , 17.62355167219] , [ 1324011600000 , 17.651081664693] , [ 1324270800000 , 17.59611604172] , [ 1324357200000 , 19.777473901257] , [ 1324443600000 , 19.758549269087] , [ 1324530000000 , 19.305745168067] , [ 1324616400000 , 19.477508577279] , [ 1324962000000 , 19.658721540993] , [ 1325048400000 , 19.776982079363] , [ 1325134800000 , 19.79775445985] , [ 1325221200000 , 19.579266534893] , [ 1325566800000 , 16.875348360168] , [ 1325653200000 , 16.51209005265] , [ 1325739600000 , 16.795893273324] , [ 1325826000000 , 16.326297265428] , [ 1326085200000 , 16.761544609478] , [ 1326171600000 , 16.796673291854] , [ 1326258000000 , 16.801006429788] , [ 1326344400000 , 17.19421119679] , [ 1326430800000 , 16.633966739158] , [ 1326776400000 , 16.753558364068] , [ 1326862800000 , 16.766434823515] , [ 1326949200000 , 16.825333048226] , [ 1327035600000 , 16.678310382725] , [ 1327294800000 , 16.77940068599] , [ 1327381200000 , 16.92981395854] , [ 1327467600000 , 16.553116404341] , [ 1327554000000 , 17.145607011141] , [ 1327640400000 , 16.692101288003] , [ 1327899600000 , 17.1299138523] , [ 1327986000000 , 17.334934272582] , [ 1328072400000 , 17.569473903845] , [ 1328158800000 , 17.58055014551] , [ 1328245200000 , 18.007674283266] , [ 1328504400000 , 17.535861038513] , [ 1328590800000 , 17.421484434178] , [ 1328677200000 , 17.938624242102] , [ 1328763600000 , 17.715337292554] , [ 1328850000000 , 17.931002605532] , [ 1329109200000 , 18.011429799705] , [ 1329195600000 , 18.3091954067] , [ 1329282000000 , 18.095545618131] , [ 1329368400000 , 18.226804681101] , [ 1329454800000 , 17.98353379404] , [ 1329800400000 , 18.09949815032] , [ 1329886800000 , 18.086187687455] , [ 1329973200000 , 17.915288923399] , [ 1330059600000 , 18.374018109841] , [ 1330318800000 , 18.156400246042] , [ 1330405200000 , 18.738362295645] , [ 1330491600000 , 18.510314079729] , [ 1330578000000 , 19.773995591892] , [ 1330664400000 , 18.896451364909] , [ 1330923600000 , 18.172901864277] , [ 1331010000000 , 18.696979766004] , [ 1331096400000 , 18.344758870553] , [ 1331182800000 , 18.885229510643] , [ 1331269200000 , 19.018587397692] , [ 1331524800000 , 18.61530115808] , [ 1331611200000 , 20.970817301504] , [ 1331697600000 , 20.703376995314] , [ 1331784000000 , 20.578699286128] , [ 1331870400000 , 20.691463563521] , [ 1332129600000 , 21.143694848039] , [ 1332216000000 , 19.379720324102] , [ 1332302400000 , 20.808095479968] , [ 1332388800000 , 19.472592938835] , [ 1332475200000 , 19.652527661877] , [ 1332734400000 , 21.319534334979] , [ 1332820800000 , 21.179475089546] , [ 1332907200000 , 19.568980241469] , [ 1332993600000 , 19.863211296898] , [ 1333080000000 , 19.65540387795] , [ 1333339200000 , 21.144017361843] , [ 1333425600000 , 20.881242071529] , [ 1333512000000 , 20.836864506942] , [ 1333598400000 , 20.483725369894] , [ 1333944000000 , 21.122797747373] , [ 1334030400000 , 20.254940889753] , [ 1334116800000 , 20.774866008916] , [ 1334203200000 , 20.773364518715] , [ 1334289600000 , 20.235143467857] , [ 1334548800000 , 20.148228074432] , [ 1334635200000 , 20.724827715557] , [ 1334721600000 , 20.663449722631] , [ 1334808000000 , 20.078903654826] , [ 1334894400000 , 20.721033124183] , [ 1335153600000 , 20.169262488388] , [ 1335240000000 , 20.176916238341] , [ 1335326400000 , 20.363612663085] , [ 1335412800000 , 20.832437662049] , [ 1335499200000 , 20.537239147509] , [ 1335758400000 , 20.625282410928]]} , { "key" : "Large Cap (10B-50B)" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 20.782152937155] , [ 1028174400000 , 23.167704910613] , [ 1028260800000 , 22.171485568143] , [ 1028520000000 , 22.936983725774] , [ 1028606400000 , 21.56545365553] , [ 1028692800000 , 21.943889063222] , [ 1028779200000 , 20.665503464675] , [ 1028865600000 , 20.920751105494] , [ 1029124800000 , 23.212923219962] , [ 1029211200000 , 22.705047901514] , [ 1029297600000 , 21.835872974522] , [ 1029384000000 , 21.805004897089] , [ 1029470400000 , 22.292170105531] , [ 1029729600000 , 21.359075504707] , [ 1029816000000 , 21.723362171238] , [ 1029902400000 , 21.345218476122] , [ 1029988800000 , 21.522763882663] , [ 1030075200000 , 22.329740748497] , [ 1030334400000 , 21.302720154928] , [ 1030420800000 , 22.12030009798] , [ 1030507200000 , 22.239136994577] , [ 1030593600000 , 22.234773062834] , [ 1030680000000 , 21.914162612983] , [ 1031025600000 , 21.19891926077] , [ 1031112000000 , 20.817209431075] , [ 1031198400000 , 20.114702595205] , [ 1031284800000 , 21.082098542664] , [ 1031544000000 , 21.099556827862] , [ 1031630400000 , 20.280142116335] , [ 1031716800000 , 19.975099430939] , [ 1031803200000 , 20.751851708586] , [ 1031889600000 , 19.696919001755] , [ 1032148800000 , 20.092137818157] , [ 1032235200000 , 21.272445177921] , [ 1032321600000 , 20.660914346082] , [ 1032408000000 , 19.82278581788] , [ 1032494400000 , 20.995048359611] , [ 1032753600000 , 20.61414087338] , [ 1032840000000 , 20.524243135334] , [ 1032926400000 , 20.569385930342] , [ 1033012800000 , 20.336308442039] , [ 1033099200000 , 20.290556338481] , [ 1033358400000 , 19.57721304082] , [ 1033444800000 , 21.629104970703] , [ 1033531200000 , 22.079218937278] , [ 1033617600000 , 21.006968249858] , [ 1033704000000 , 18.765047179563] , [ 1033963200000 , 20.927127639002] , [ 1034049600000 , 21.204207591207] , [ 1034136000000 , 20.962951268977] , [ 1034222400000 , 18.84619083411] , [ 1034308800000 , 21.741147594626] , [ 1034568000000 , 21.245709193631] , [ 1034654400000 , 21.909229908762] , [ 1034740800000 , 21.84774740032] , [ 1034827200000 , 22.015639651441] , [ 1034913600000 , 22.320133213376] , [ 1035172800000 , 24.433083344435] , [ 1035259200000 , 23.069989420893] , [ 1035345600000 , 24.497378584815] , [ 1035432000000 , 23.89660401034] , [ 1035518400000 , 24.136840213198] , [ 1035781200000 , 25.575033513127] , [ 1035867600000 , 25.730092965715] , [ 1035954000000 , 25.568380783999] , [ 1036040400000 , 25.407828649116] , [ 1036126800000 , 27.288183817396] , [ 1036386000000 , 27.35938498534] , [ 1036472400000 , 26.678297533218] , [ 1036558800000 , 27.25587540393] , [ 1036645200000 , 26.642939120816] , [ 1036731600000 , 26.8886918317] , [ 1036990800000 , 26.130645597624] , [ 1037077200000 , 26.116883564436] , [ 1037163600000 , 27.010669713278] , [ 1037250000000 , 27.57884816499] , [ 1037336400000 , 27.183554602181] , [ 1037595600000 , 27.509334163742] , [ 1037682000000 , 27.830464716683] , [ 1037768400000 , 27.806765010411] , [ 1037854800000 , 27.32395284742] , [ 1037941200000 , 27.231367541687] , [ 1038200400000 , 27.655200293518] , [ 1038286800000 , 27.451839744896] , [ 1038373200000 , 27.218864531579] , [ 1038546000000 , 28.038964821136] , [ 1038805200000 , 27.67259719238] , [ 1038891600000 , 26.788949026044] , [ 1038978000000 , 26.907309917122] , [ 1039064400000 , 26.722388308064] , [ 1039150800000 , 26.664471995124] , [ 1039410000000 , 26.239664788106] , [ 1039496400000 , 25.889168535614] , [ 1039582800000 , 26.06632917537] , [ 1039669200000 , 27.360436484745] , [ 1039755600000 , 26.820513813669] , [ 1040014800000 , 27.431048745967] , [ 1040101200000 , 27.279302688254] , [ 1040187600000 , 27.052912497541] , [ 1040274000000 , 27.28941852896] , [ 1040360400000 , 27.49768855426] , [ 1040619600000 , 27.02432113222] , [ 1040706000000 , 26.769178536929] , [ 1040878800000 , 26.884066155653] , [ 1040965200000 , 24.933209727831] , [ 1041224400000 , 26.525442732585] , [ 1041310800000 , 24.836009955168] , [ 1041483600000 , 28.148434112631] , [ 1041570000000 , 28.585248260421] , [ 1041829200000 , 26.588164848779] , [ 1041915600000 , 26.484322683618] , [ 1042002000000 , 26.959667286326] , [ 1042088400000 , 27.431086615605] , [ 1042174800000 , 27.461473066225] , [ 1042434000000 , 27.377655497688] , [ 1042520400000 , 28.459801338542] , [ 1042606800000 , 28.761328803191] , [ 1042693200000 , 29.30367038452] , [ 1042779600000 , 26.480780480109] , [ 1043125200000 , 28.314249704972] , [ 1043211600000 , 28.217531135865] , [ 1043298000000 , 28.182500568192] , [ 1043384400000 , 26.215418018396] , [ 1043643600000 , 25.837843506598] , [ 1043730000000 , 25.95211023829] , [ 1043816400000 , 27.35855317206] , [ 1043902800000 , 26.135626995708] , [ 1043989200000 , 26.83359749941] , [ 1044248400000 , 25.200227171645] , [ 1044334800000 , 26.16023626428] , [ 1044421200000 , 26.573032237491] , [ 1044507600000 , 27.026861148349] , [ 1044594000000 , 25.546081485539] , [ 1044853200000 , 27.751441629168] , [ 1044939600000 , 27.109502185008] , [ 1045026000000 , 26.955339488016] , [ 1045112400000 , 26.635921045161] , [ 1045198800000 , 26.473324927012] , [ 1045544400000 , 27.579970132886] , [ 1045630800000 , 27.943972694132] , [ 1045717200000 , 27.462371071406] , [ 1045803600000 , 29.257485248321] , [ 1046062800000 , 27.364546535318] , [ 1046149200000 , 27.254731868848] , [ 1046235600000 , 27.695724658927] , [ 1046322000000 , 30.090893211161] , [ 1046408400000 , 26.657118369336] , [ 1046667600000 , 28.194399188654] , [ 1046754000000 , 27.719581327647] , [ 1046840400000 , 28.103967781241] , [ 1046926800000 , 28.052251152739] , [ 1047013200000 , 26.161720683778] , [ 1047272400000 , 23.610360854361] , [ 1047358800000 , 25.857011365628] , [ 1047445200000 , 27.676820217549] , [ 1047531600000 , 28.151309495162] , [ 1047618000000 , 28.668948137881] , [ 1047877200000 , 26.496536140439] , [ 1047963600000 , 26.687043118953] , [ 1048050000000 , 26.273192321151] , [ 1048136400000 , 26.648670764247] , [ 1048222800000 , 28.542316470431] , [ 1048482000000 , 27.750857458509] , [ 1048568400000 , 26.204441932957] , [ 1048654800000 , 26.595514769297] , [ 1048741200000 , 26.855626674862] , [ 1048827600000 , 27.171681295054] , [ 1049086800000 , 28.841779143028] , [ 1049173200000 , 29.708378318146] , [ 1049259600000 , 29.388557444219] , [ 1049346000000 , 28.515897137815] , [ 1049432400000 , 28.678387772809] , [ 1049688000000 , 28.261039648194] , [ 1049774400000 , 28.843990815368] , [ 1049860800000 , 27.442375698804] , [ 1049947200000 , 28.277039866021] , [ 1050033600000 , 28.420426598954] , [ 1050292800000 , 27.924860258371] , [ 1050379200000 , 28.808303116857] , [ 1050465600000 , 28.115148048304] , [ 1050552000000 , 28.041837502505] , [ 1050897600000 , 27.65036838858] , [ 1050984000000 , 29.098561970905] , [ 1051070400000 , 29.045548896001] , [ 1051156800000 , 29.571081066633] , [ 1051243200000 , 29.315645134302] , [ 1051502400000 , 29.584752672106] , [ 1051588800000 , 30.294478870927] , [ 1051675200000 , 29.987692254818] , [ 1051761600000 , 29.7035238959] , [ 1051848000000 , 30.064092166374] , [ 1052107200000 , 32.161446807271] , [ 1052193600000 , 31.741232247918] , [ 1052280000000 , 33.599316702576] , [ 1052366400000 , 31.645346219228] , [ 1052452800000 , 30.869945241992] , [ 1052712000000 , 33.942694565393] , [ 1052798400000 , 34.45728576228] , [ 1052884800000 , 33.941291408044] , [ 1052971200000 , 35.005246088651] , [ 1053057600000 , 34.514335540975] , [ 1053316800000 , 33.957836454212] , [ 1053403200000 , 33.513800644952] , [ 1053489600000 , 34.337897872934] , [ 1053576000000 , 34.926524488091] , [ 1053662400000 , 33.006206654011] , [ 1054008000000 , 33.318069356354] , [ 1054094400000 , 34.704964073105] , [ 1054180800000 , 34.13573506733] , [ 1054267200000 , 34.469688530643] , [ 1054526400000 , 35.780722519275] , [ 1054612800000 , 35.193101123469] , [ 1054699200000 , 34.349010572232] , [ 1054785600000 , 34.278660998595] , [ 1054872000000 , 34.010874612573] , [ 1055131200000 , 35.061218475203] , [ 1055217600000 , 34.606788376764] , [ 1055304000000 , 35.027487501906] , [ 1055390400000 , 33.969891082805] , [ 1055476800000 , 35.53629096676] , [ 1055736000000 , 34.353137386336] , [ 1055822400000 , 35.191289157046] , [ 1055908800000 , 34.702256566671] , [ 1055995200000 , 35.304145343765] , [ 1056081600000 , 33.742983861236] , [ 1056340800000 , 32.440214432063] , [ 1056427200000 , 32.507448936614] , [ 1056513600000 , 34.096674352075] , [ 1056600000000 , 33.560325432684] , [ 1056686400000 , 34.131436527295] , [ 1056945600000 , 28.578298679901] , [ 1057032000000 , 26.896979102175] , [ 1057118400000 , 27.301370679479] , [ 1057204800000 , 26.832445005201] , [ 1057550400000 , 27.178607928561] , [ 1057636800000 , 27.429816543007] , [ 1057723200000 , 28.590033808004] , [ 1057809600000 , 26.931059342407] , [ 1057896000000 , 27.255337954372] , [ 1058155200000 , 26.91639993488] , [ 1058241600000 , 27.036044512766] , [ 1058328000000 , 27.857685678582] , [ 1058414400000 , 27.954452428144] , [ 1058500800000 , 28.656092733595] , [ 1058760000000 , 29.225401154513] , [ 1058846400000 , 28.456122392084] , [ 1058932800000 , 29.1173699278] , [ 1059019200000 , 29.080448398973] , [ 1059105600000 , 29.848534965666] , [ 1059364800000 , 30.143372848203] , [ 1059451200000 , 29.580617711667] , [ 1059537600000 , 29.916327475977] , [ 1059624000000 , 29.497964363278] , [ 1059710400000 , 29.751264104278] , [ 1059969600000 , 29.639960379051] , [ 1060056000000 , 28.658393113539] , [ 1060142400000 , 26.690032589424] , [ 1060228800000 , 30.875955871864] , [ 1060315200000 , 30.72912065775] , [ 1060574400000 , 30.646975006887] , [ 1060660800000 , 30.806821962881] , [ 1060747200000 , 30.303720995787] , [ 1060833600000 , 30.655138255848] , [ 1060920000000 , 31.295514321094] , [ 1061179200000 , 30.919465598305] , [ 1061265600000 , 32.200682855556] , [ 1061352000000 , 32.212197869654] , [ 1061438400000 , 31.856813927148] , [ 1061524800000 , 32.013387699754] , [ 1061784000000 , 31.402132986026] , [ 1061870400000 , 31.048960092193] , [ 1061956800000 , 31.305466816242] , [ 1062043200000 , 31.123830136075] , [ 1062129600000 , 31.256646521609] , [ 1062475200000 , 31.021234688933] , [ 1062561600000 , 30.798809181972] , [ 1062648000000 , 30.49600956723] , [ 1062734400000 , 31.136829691953] , [ 1062993600000 , 30.832609843013] , [ 1063080000000 , 30.50466839629] , [ 1063166400000 , 30.311373885893] , [ 1063252800000 , 30.642648639514] , [ 1063339200000 , 30.422970273599] , [ 1063598400000 , 30.183876137079] , [ 1063684800000 , 29.697319588858] , [ 1063771200000 , 29.970134502786] , [ 1063857600000 , 29.862591317043] , [ 1063944000000 , 30.809460561167] , [ 1064203200000 , 30.144929589582] , [ 1064289600000 , 30.017920467163] , [ 1064376000000 , 31.974874927938] , [ 1064462400000 , 28.559522775458] , [ 1064548800000 , 28.6644544221] , [ 1064808000000 , 30.536148345128] , [ 1064894400000 , 32.016717242239] , [ 1064980800000 , 35.946276181884] , [ 1065067200000 , 36.166146105882] , [ 1065153600000 , 35.896222214324] , [ 1065412800000 , 36.244066616979] , [ 1065499200000 , 36.121062696516] , [ 1065585600000 , 34.844634102182] , [ 1065672000000 , 34.843999828237] , [ 1065758400000 , 34.766144046676] , [ 1066017600000 , 36.046514350984] , [ 1066104000000 , 36.317140718784] , [ 1066190400000 , 36.294414591758] , [ 1066276800000 , 35.445953010604] , [ 1066363200000 , 35.863853283659] , [ 1066622400000 , 35.256528661886] , [ 1066708800000 , 36.014129918883] , [ 1066795200000 , 34.811742463702] , [ 1066881600000 , 35.391265083244] , [ 1066968000000 , 35.368115083133] , [ 1067230800000 , 35.615234111754] , [ 1067317200000 , 33.389779085783] , [ 1067403600000 , 33.80917727041] , [ 1067490000000 , 34.601149968833] , [ 1067576400000 , 34.013141728195] , [ 1067835600000 , 32.952290001697] , [ 1067922000000 , 33.215699534027] , [ 1068008400000 , 33.061520188406] , [ 1068094800000 , 33.144842813528] , [ 1068181200000 , 33.316420665338] , [ 1068440400000 , 32.986092184385] , [ 1068526800000 , 33.674044999869] , [ 1068613200000 , 35.520013924767] , [ 1068699600000 , 35.382809834917] , [ 1068786000000 , 33.729366877104] , [ 1069045200000 , 33.893930728457] , [ 1069131600000 , 33.968225489223] , [ 1069218000000 , 33.604253300371] , [ 1069304400000 , 33.426828515228] , [ 1069390800000 , 33.146245036819] , [ 1069650000000 , 34.961602464834] , [ 1069736400000 , 36.565505612835] , [ 1069822800000 , 37.009135026163] , [ 1069995600000 , 37.355953698679] , [ 1070254800000 , 39.855887984286] , [ 1070341200000 , 39.222936402912] , [ 1070427600000 , 37.516976020756] , [ 1070514000000 , 37.445141353931] , [ 1070600400000 , 39.772649313679] , [ 1070859600000 , 37.718741100527] , [ 1070946000000 , 37.935919975035] , [ 1071032400000 , 38.201610453147] , [ 1071118800000 , 38.146494131187] , [ 1071205200000 , 36.218732193314] , [ 1071464400000 , 35.552238458164] , [ 1071550800000 , 35.826303305569] , [ 1071637200000 , 35.850641782482] , [ 1071723600000 , 38.04466082467] , [ 1071810000000 , 34.846725027469] , [ 1072069200000 , 36.241674247339] , [ 1072155600000 , 36.244827016598] , [ 1072242000000 , 36.142054086258] , [ 1072414800000 , 35.886753023625] , [ 1072674000000 , 35.66097760701] , [ 1072760400000 , 36.249092418383] , [ 1072846800000 , 30.621489538058] , [ 1073019600000 , 31.700083226709] , [ 1073278800000 , 30.709597618161] , [ 1073365200000 , 31.162921295679] , [ 1073451600000 , 31.138025867932] , [ 1073538000000 , 31.175504886164] , [ 1073624400000 , 30.948180149575] , [ 1073883600000 , 30.921099507251] , [ 1073970000000 , 31.319692495787] , [ 1074056400000 , 30.816529823296] , [ 1074142800000 , 30.975614703117] , [ 1074229200000 , 31.500006427174] , [ 1074574800000 , 31.114026851326] , [ 1074661200000 , 30.895780267549] , [ 1074747600000 , 30.933620812386] , [ 1074834000000 , 31.632265260642] , [ 1075093200000 , 31.236842115894] , [ 1075179600000 , 31.100665229642] , [ 1075266000000 , 31.921791142017] , [ 1075352400000 , 31.480945515383] , [ 1075438800000 , 31.174600651958] , [ 1075698000000 , 33.414952912803] , [ 1075784400000 , 32.875008410345] , [ 1075870800000 , 33.4613538009] , [ 1075957200000 , 32.971464632742] , [ 1076043600000 , 33.271708293655] , [ 1076302800000 , 33.730606409999] , [ 1076389200000 , 33.366890578633] , [ 1076475600000 , 33.360072083473] , [ 1076562000000 , 33.972749424161] , [ 1076648400000 , 33.66325484954] , [ 1076994000000 , 33.56804215399] , [ 1077080400000 , 33.341614887461] , [ 1077166800000 , 34.750077417368] , [ 1077253200000 , 34.382046367213] , [ 1077512400000 , 33.536298812729] , [ 1077598800000 , 33.44175955838] , [ 1077685200000 , 33.603623859891] , [ 1077771600000 , 32.875416612982] , [ 1077858000000 , 33.6715744417] , [ 1078117200000 , 34.027947265531] , [ 1078203600000 , 35.113094495983] , [ 1078290000000 , 35.124846375015] , [ 1078376400000 , 35.131113968822] , [ 1078462800000 , 35.195875684841] , [ 1078722000000 , 34.980143162459] , [ 1078808400000 , 34.657969891596] , [ 1078894800000 , 33.71307114824] , [ 1078981200000 , 33.432831653555] , [ 1079067600000 , 33.178017586773] , [ 1079326800000 , 33.781788496598] , [ 1079413200000 , 33.605185303588] , [ 1079499600000 , 33.878419201487] , [ 1079586000000 , 35.81295464893] , [ 1079672400000 , 33.735259221234] , [ 1079931600000 , 35.836241360064] , [ 1080018000000 , 33.14374704932] , [ 1080104400000 , 33.7412400922] , [ 1080190800000 , 36.322939768613] , [ 1080277200000 , 35.868408389608] , [ 1080536400000 , 35.521065690465] , [ 1080622800000 , 36.077027613518] , [ 1080709200000 , 37.573832172896] , [ 1080795600000 , 36.080968661875] , [ 1080882000000 , 36.118329160337] , [ 1081137600000 , 36.178646926618] , [ 1081224000000 , 34.852899994423] , [ 1081310400000 , 34.778523467953] , [ 1081396800000 , 34.549427187411] , [ 1081742400000 , 34.619799728577] , [ 1081828800000 , 34.448832520837] , [ 1081915200000 , 34.533754302949] , [ 1082001600000 , 34.547350945292] , [ 1082088000000 , 34.499948098932] , [ 1082347200000 , 34.664092861345] , [ 1082433600000 , 34.812754468043] , [ 1082520000000 , 34.158912995764] , [ 1082606400000 , 34.909632522985] , [ 1082692800000 , 34.865063037213] , [ 1082952000000 , 34.87086957709] , [ 1083038400000 , 33.318942090927] , [ 1083124800000 , 32.985367793398] , [ 1083211200000 , 35.515941230021] , [ 1083297600000 , 35.345434273289] , [ 1083556800000 , 35.56734742731] , [ 1083643200000 , 33.59117834143] , [ 1083729600000 , 33.925583096491] , [ 1083816000000 , 35.952156746267] , [ 1083902400000 , 35.780892232841] , [ 1084161600000 , 35.22587747326] , [ 1084248000000 , 35.488165645014] , [ 1084334400000 , 33.581512693719] , [ 1084420800000 , 33.604646783731] , [ 1084507200000 , 33.520888118776] , [ 1084766400000 , 33.691796687735] , [ 1084852800000 , 35.991015359376] , [ 1084939200000 , 35.445559427984] , [ 1085025600000 , 35.436376254759] , [ 1085112000000 , 34.775241381353] , [ 1085371200000 , 35.42982510811] , [ 1085457600000 , 35.748882256019] , [ 1085544000000 , 35.269256272209] , [ 1085630400000 , 34.504815482558] , [ 1085716800000 , 36.200256460337] , [ 1086062400000 , 35.357324686821] , [ 1086148800000 , 35.46563742992] , [ 1086235200000 , 34.863374757175] , [ 1086321600000 , 34.618650968461] , [ 1086580800000 , 33.49835335296] , [ 1086667200000 , 35.690931335719] , [ 1086753600000 , 35.394249929009] , [ 1086840000000 , 35.324125413566] , [ 1087185600000 , 35.273846374602] , [ 1087272000000 , 35.067823928278] , [ 1087358400000 , 34.862695344878] , [ 1087444800000 , 36.456675431841] , [ 1087531200000 , 36.860304488459] , [ 1087790400000 , 36.26350855705] , [ 1087876800000 , 36.910690292132] , [ 1087963200000 , 36.69845046556] , [ 1088049600000 , 37.140551698172] , [ 1088136000000 , 37.19203939064] , [ 1088395200000 , 36.777802274284] , [ 1088481600000 , 37.743304623197] , [ 1088568000000 , 36.957750234096] , [ 1088654400000 , 35.179592120996] , [ 1088740800000 , 35.971757474468] , [ 1089086400000 , 35.953872822652] , [ 1089172800000 , 35.195041368972] , [ 1089259200000 , 33.719085963576] , [ 1089345600000 , 33.719454772482] , [ 1089604800000 , 33.343755096164] , [ 1089691200000 , 35.259682038058] , [ 1089777600000 , 35.130300629567] , [ 1089864000000 , 35.627804959389] , [ 1089950400000 , 35.856242299135] , [ 1090209600000 , 35.19605820946] , [ 1090296000000 , 34.366048164566] , [ 1090382400000 , 34.415606244368] , [ 1090468800000 , 33.72604045124] , [ 1090555200000 , 33.501282385982] , [ 1090814400000 , 33.202199675917] , [ 1090900800000 , 32.830059989005] , [ 1090987200000 , 34.738380878607] , [ 1091073600000 , 34.77837530342] , [ 1091160000000 , 34.98141365024] , [ 1091419200000 , 34.971606739683] , [ 1091505600000 , 34.919484163021] , [ 1091592000000 , 34.190172525865] , [ 1091678400000 , 33.783022417657] , [ 1091764800000 , 33.480473460807] , [ 1092024000000 , 34.070612230614] , [ 1092110400000 , 34.805256090309] , [ 1092196800000 , 34.750826609801] , [ 1092283200000 , 34.178844843315] , [ 1092369600000 , 33.727032090252] , [ 1092628800000 , 34.278013195518] , [ 1092715200000 , 33.630895830164] , [ 1092801600000 , 33.43317129271] , [ 1092888000000 , 33.747978405917] , [ 1092974400000 , 33.884823223026] , [ 1093233600000 , 34.307197218335] , [ 1093320000000 , 33.5095588746] , [ 1093406400000 , 34.789664569944] , [ 1093492800000 , 35.402148408374] , [ 1093579200000 , 34.948816792509] , [ 1093838400000 , 34.705798755337] , [ 1093924800000 , 35.102951607888] , [ 1094011200000 , 34.57879038413] , [ 1094097600000 , 35.405580622395] , [ 1094184000000 , 35.286261774484] , [ 1094529600000 , 35.362343577632] , [ 1094616000000 , 35.072676406746] , [ 1094702400000 , 35.143308034056] , [ 1094788800000 , 34.631417044956] , [ 1095048000000 , 34.312090631943] , [ 1095134400000 , 34.369866267093] , [ 1095220800000 , 36.647756003092] , [ 1095307200000 , 36.189810972106] , [ 1095393600000 , 36.887979517367] , [ 1095652800000 , 36.258789503071] , [ 1095739200000 , 36.437625958101] , [ 1095825600000 , 35.64395750975] , [ 1095912000000 , 34.860705548815] , [ 1095998400000 , 35.491850529845] , [ 1096257600000 , 34.559887935367] , [ 1096344000000 , 34.861934523359] , [ 1096430400000 , 35.489617057756] , [ 1096516800000 , 37.062672361663] , [ 1096603200000 , 36.972723332959] , [ 1096862400000 , 37.426816302493] , [ 1096948800000 , 37.592486370351] , [ 1097035200000 , 38.188500570235] , [ 1097121600000 , 36.920973165811] , [ 1097208000000 , 37.622574761399] , [ 1097467200000 , 38.009313146508] , [ 1097553600000 , 37.696331730285] , [ 1097640000000 , 38.397439580707] , [ 1097726400000 , 39.211459506775] , [ 1097812800000 , 38.130200108537] , [ 1098072000000 , 38.661585901311] , [ 1098158400000 , 39.011281074571] , [ 1098244800000 , 39.168392468547] , [ 1098331200000 , 38.733289080043] , [ 1098417600000 , 38.998113795981] , [ 1098676800000 , 38.720441491193] , [ 1098763200000 , 38.950923626086] , [ 1098849600000 , 40.176332024159] , [ 1098936000000 , 40.331423328065] , [ 1099022400000 , 38.902137338209] , [ 1099285200000 , 38.468176868573] , [ 1099371600000 , 38.751203982778] , [ 1099458000000 , 37.281017817914] , [ 1099544400000 , 37.489219450381] , [ 1099630800000 , 37.379096648202] , [ 1099890000000 , 37.712409768349] , [ 1099976400000 , 36.850720409689] , [ 1100062800000 , 37.413808246441] , [ 1100149200000 , 37.787797742661] , [ 1100235600000 , 37.507731005452] , [ 1100494800000 , 37.573609603023] , [ 1100581200000 , 37.344252614603] , [ 1100667600000 , 36.788082265238] , [ 1100754000000 , 37.250890891018] , [ 1100840400000 , 37.791397451038] , [ 1101099600000 , 38.119683409798] , [ 1101186000000 , 37.681848341174] , [ 1101272400000 , 38.448947285106] , [ 1101445200000 , 38.207195849538] , [ 1101704400000 , 38.21014904083] , [ 1101790800000 , 38.970040540152] , [ 1101877200000 , 37.233630963626] , [ 1101963600000 , 38.032095482422] , [ 1102050000000 , 37.484448510528] , [ 1102309200000 , 37.419563686497] , [ 1102395600000 , 38.141655940335] , [ 1102482000000 , 37.860222838637] , [ 1102568400000 , 38.921399776818] , [ 1102654800000 , 37.685675881274] , [ 1102914000000 , 37.694561045617] , [ 1103000400000 , 37.509265854216] , [ 1103086800000 , 38.781596858096] , [ 1103173200000 , 37.849676197162] , [ 1103259600000 , 38.436888389496] , [ 1103518800000 , 37.152234590549] , [ 1103605200000 , 37.353914990849] , [ 1103691600000 , 37.621646851687] , [ 1103778000000 , 37.984456350252] , [ 1104123600000 , 38.351153974459] , [ 1104210000000 , 38.125525912586] , [ 1104296400000 , 37.590675361222] , [ 1104382800000 , 40.039604906909] , [ 1104469200000 , 37.701280232352] , [ 1104728400000 , 36.32768064337] , [ 1104814800000 , 36.09942019546] , [ 1104901200000 , 34.142323910415] , [ 1104987600000 , 34.427478981573] , [ 1105074000000 , 34.466730026272] , [ 1105333200000 , 35.412905339113] , [ 1105419600000 , 35.029254067577] , [ 1105506000000 , 34.77702168723] , [ 1105592400000 , 35.992104384032] , [ 1105678800000 , 35.932257015488] , [ 1106024400000 , 35.922201782439] , [ 1106110800000 , 34.566179329391] , [ 1106197200000 , 36.285171844918] , [ 1106283600000 , 34.818089042177] , [ 1106542800000 , 34.512918300948] , [ 1106629200000 , 33.79740180972] , [ 1106715600000 , 34.598948223696] , [ 1106802000000 , 34.107995808921] , [ 1106888400000 , 33.740610615246] , [ 1107147600000 , 35.745447840158] , [ 1107234000000 , 36.098299221463] , [ 1107320400000 , 36.029757824523] , [ 1107406800000 , 38.854971784934] , [ 1107493200000 , 36.8835150774] , [ 1107752400000 , 36.9000223708] , [ 1107838800000 , 36.357883099866] , [ 1107925200000 , 36.662128952549] , [ 1108011600000 , 35.633383451781] , [ 1108098000000 , 35.926367677232] , [ 1108357200000 , 36.07834734151] , [ 1108443600000 , 33.387023899029] , [ 1108530000000 , 33.668946331638] , [ 1108616400000 , 33.540818011929] , [ 1108702800000 , 33.673093767923] , [ 1109048400000 , 32.707744179971] , [ 1109134800000 , 34.227065283707] , [ 1109221200000 , 34.192067268571] , [ 1109307600000 , 32.965405076295] , [ 1109566800000 , 34.126193532526] , [ 1109653200000 , 33.593028823117] , [ 1109739600000 , 31.06252783532] , [ 1109826000000 , 31.377529475201] , [ 1109912400000 , 31.373285305342] , [ 1110171600000 , 31.9387475147] , [ 1110258000000 , 32.36276141705] , [ 1110344400000 , 31.715049603287] , [ 1110430800000 , 31.669543925407] , [ 1110517200000 , 32.173517637243] , [ 1110776400000 , 31.455915635672] , [ 1110862800000 , 32.656974481299] , [ 1110949200000 , 35.619878018892] , [ 1111035600000 , 35.189045748171] , [ 1111122000000 , 31.417504568494] , [ 1111381200000 , 35.237522378169] , [ 1111467600000 , 34.659802361222] , [ 1111554000000 , 34.484975823538] , [ 1111640400000 , 34.716760476881] , [ 1111986000000 , 35.209869590921] , [ 1112072400000 , 35.630710839041] , [ 1112158800000 , 35.464235555469] , [ 1112245200000 , 35.556194795435] , [ 1112331600000 , 34.30485724367] , [ 1112587200000 , 34.262532305365] , [ 1112673600000 , 34.837468281161] , [ 1112760000000 , 34.972116779153] , [ 1112846400000 , 34.454711113367] , [ 1112932800000 , 34.184876753143] , [ 1113192000000 , 34.370129717587] , [ 1113278400000 , 34.026139212323] , [ 1113364800000 , 34.136121211528] , [ 1113451200000 , 36.484987273601] , [ 1113537600000 , 32.256269421636] , [ 1113796800000 , 33.272383381821] , [ 1113883200000 , 33.08635408501] , [ 1113969600000 , 33.275919377746] , [ 1114056000000 , 34.705597667494] , [ 1114142400000 , 33.146534134095] , [ 1114401600000 , 35.248334471813] , [ 1114488000000 , 33.094933000729] , [ 1114574400000 , 33.040890848337] , [ 1114660800000 , 32.383859722243] , [ 1114747200000 , 32.956457583442] , [ 1115006400000 , 35.25476937522] , [ 1115092800000 , 34.93508420001] , [ 1115179200000 , 35.017615115124] , [ 1115265600000 , 35.444880566821] , [ 1115352000000 , 34.662066987122] , [ 1115611200000 , 34.978649029471] , [ 1115697600000 , 35.231798879402] , [ 1115784000000 , 35.189173109602] , [ 1115870400000 , 34.098929785653] , [ 1115956800000 , 34.965665300545] , [ 1116216000000 , 35.33310254828] , [ 1116302400000 , 35.327452664272] , [ 1116388800000 , 35.184668659904] , [ 1116475200000 , 34.972293218571] , [ 1116561600000 , 34.898524545706] , [ 1116820800000 , 34.82511182672] , [ 1116907200000 , 35.291423726777] , [ 1116993600000 , 35.499278063825] , [ 1117080000000 , 36.360545112276] , [ 1117166400000 , 36.064262122562] , [ 1117512000000 , 36.939280235001] , [ 1117598400000 , 37.176516239756] , [ 1117684800000 , 37.125877522574] , [ 1117771200000 , 37.663368514969] , [ 1118030400000 , 37.147609477452] , [ 1118116800000 , 38.14957407077] , [ 1118203200000 , 37.773623087991] , [ 1118289600000 , 38.09259699337] , [ 1118376000000 , 38.022450528027] , [ 1118635200000 , 34.933782265782] , [ 1118721600000 , 38.559702626728] , [ 1118808000000 , 36.400407189965] , [ 1118894400000 , 37.122653894364] , [ 1118980800000 , 37.376535430078] , [ 1119240000000 , 37.033173259849] , [ 1119326400000 , 37.03710926125] , [ 1119412800000 , 36.917647013739] , [ 1119499200000 , 34.855413999149] , [ 1119585600000 , 34.932556573976] , [ 1119844800000 , 38.005371063674] , [ 1119931200000 , 37.209031612439] , [ 1120017600000 , 39.097736759506] , [ 1120104000000 , 34.303901241605] , [ 1120190400000 , 34.656914255499] , [ 1120536000000 , 34.440796356574] , [ 1120622400000 , 34.740222239674] , [ 1120708800000 , 34.339101153525] , [ 1120795200000 , 34.745446407813] , [ 1121054400000 , 32.808834484697] , [ 1121140800000 , 33.193324056921] , [ 1121227200000 , 33.176246686149] , [ 1121313600000 , 32.6304209599] , [ 1121400000000 , 33.618850768518] , [ 1121659200000 , 32.913219473454] , [ 1121745600000 , 33.15723895324] , [ 1121832000000 , 33.440360839534] , [ 1121918400000 , 33.248786152488] , [ 1122004800000 , 33.04570084332] , [ 1122264000000 , 32.945957569531] , [ 1122350400000 , 33.417257804502] , [ 1122436800000 , 33.002812636003] , [ 1122523200000 , 33.289204399572] , [ 1122609600000 , 33.054134891372] , [ 1122868800000 , 32.433598898209] , [ 1122955200000 , 33.257566123828] , [ 1123041600000 , 34.316705113254] , [ 1123128000000 , 35.151852666961] , [ 1123214400000 , 35.307825838341] , [ 1123473600000 , 35.897355701538] , [ 1123560000000 , 35.713381842899] , [ 1123646400000 , 33.800816986159] , [ 1123732800000 , 33.826312872189] , [ 1123819200000 , 32.852399971332] , [ 1124078400000 , 32.625343623356] , [ 1124164800000 , 33.67931959259] , [ 1124251200000 , 33.638491037627] , [ 1124337600000 , 33.279061337361] , [ 1124424000000 , 33.690948973697] , [ 1124683200000 , 32.870324449322] , [ 1124769600000 , 34.95885187401] , [ 1124856000000 , 33.722803788033] , [ 1124942400000 , 33.805043706086] , [ 1125028800000 , 33.084171218571] , [ 1125288000000 , 32.797476731941] , [ 1125374400000 , 34.951844742643] , [ 1125460800000 , 35.34346399059] , [ 1125547200000 , 36.089453913685] , [ 1125633600000 , 36.85637833275] , [ 1125979200000 , 35.262182939029] , [ 1126065600000 , 34.201012889921] , [ 1126152000000 , 33.946465818246] , [ 1126238400000 , 33.914195415859] , [ 1126497600000 , 33.822840966785] , [ 1126584000000 , 35.009551665424] , [ 1126670400000 , 35.220611758553] , [ 1126756800000 , 35.127643340204] , [ 1126843200000 , 36.383495631418] , [ 1127102400000 , 34.726269086065] , [ 1127188800000 , 35.095334211073] , [ 1127275200000 , 35.24956964052] , [ 1127361600000 , 35.342179891616] , [ 1127448000000 , 36.065857185126] , [ 1127707200000 , 36.385521496362] , [ 1127793600000 , 36.462782459528] , [ 1127880000000 , 35.845318249115] , [ 1127966400000 , 36.363275856063] , [ 1128052800000 , 36.072135896826] , [ 1128312000000 , 35.153590452456] , [ 1128398400000 , 35.975496456615] , [ 1128484800000 , 36.548711383227] , [ 1128571200000 , 36.850126363729] , [ 1128657600000 , 36.479820665931] , [ 1128916800000 , 35.393152267139] , [ 1129003200000 , 38.253113193037] , [ 1129089600000 , 38.239427481354] , [ 1129176000000 , 39.311851451163] , [ 1129262400000 , 40.077836034903] , [ 1129521600000 , 38.390564864298] , [ 1129608000000 , 38.644587842762] , [ 1129694400000 , 26.854772819487] , [ 1129780800000 , 38.405619170555] , [ 1129867200000 , 38.267604982325] , [ 1130126400000 , 38.671045488684] , [ 1130212800000 , 38.863923613658] , [ 1130299200000 , 38.527676302969] , [ 1130385600000 , 38.176934215806] , [ 1130472000000 , 38.615615567328] , [ 1130734800000 , 39.029254695908] , [ 1130821200000 , 40.345935638008] , [ 1130907600000 , 36.040400308219] , [ 1130994000000 , 38.380001866798] , [ 1131080400000 , 38.152664716617] , [ 1131339600000 , 34.447873616487] , [ 1131426000000 , 35.163550315799] , [ 1131512400000 , 35.284210246933] , [ 1131598800000 , 34.787855760406] , [ 1131685200000 , 36.541454039291] , [ 1131944400000 , 35.817677167594] , [ 1132030800000 , 37.111554350089] , [ 1132117200000 , 35.914771950142] , [ 1132203600000 , 34.256979049371] , [ 1132290000000 , 32.288086077253] , [ 1132549200000 , 33.693676625169] , [ 1132635600000 , 33.319180224836] , [ 1132722000000 , 32.447672948837] , [ 1132894800000 , 32.83521336049] , [ 1133154000000 , 31.86079803623] , [ 1133240400000 , 33.447392145536] , [ 1133326800000 , 33.194693868177] , [ 1133413200000 , 34.05038018519] , [ 1133499600000 , 34.266078095003] , [ 1133758800000 , 36.281653072547] , [ 1133845200000 , 36.395604508473] , [ 1133931600000 , 36.371301663593] , [ 1134018000000 , 36.659153905129] , [ 1134104400000 , 36.034564671531] , [ 1134363600000 , 33.307768127274] , [ 1134450000000 , 33.900360947226] , [ 1134536400000 , 36.032467902097] , [ 1134622800000 , 35.836994524746] , [ 1134709200000 , 35.51223490125] , [ 1134968400000 , 35.555248868886] , [ 1135054800000 , 35.860761941202] , [ 1135141200000 , 33.09434184741] , [ 1135227600000 , 33.086054616538] , [ 1135314000000 , 33.281782296023] , [ 1135659600000 , 32.986247810646] , [ 1135746000000 , 32.896876050255] , [ 1135832400000 , 29.820219566301] , [ 1135918800000 , 30.632136365846] , [ 1136264400000 , 44.920989565915] , [ 1136350800000 , 44.689486676175] , [ 1136437200000 , 43.935531446195] , [ 1136523600000 , 45.382203356841] , [ 1136782800000 , 45.278347077518] , [ 1136869200000 , 44.21356252252] , [ 1136955600000 , 44.789599572693] , [ 1137042000000 , 44.179007511053] , [ 1137128400000 , 45.062314142306] , [ 1137474000000 , 43.114283635779] , [ 1137560400000 , 43.666161708325] , [ 1137646800000 , 45.000874970129] , [ 1137733200000 , 44.54722680117] , [ 1137992400000 , 43.998768537089] , [ 1138078800000 , 45.334963538757] , [ 1138165200000 , 41.422894514679] , [ 1138251600000 , 41.765289072857] , [ 1138338000000 , 41.361837364233] , [ 1138597200000 , 41.467309975936] , [ 1138683600000 , 44.388767922429] , [ 1138770000000 , 42.849230569584] , [ 1138856400000 , 42.670378064767] , [ 1138942800000 , 43.607945339449] , [ 1139202000000 , 42.913143892052] , [ 1139288400000 , 42.038511907006] , [ 1139374800000 , 42.059997327191] , [ 1139461200000 , 42.668521384309] , [ 1139547600000 , 42.508830425147] , [ 1139806800000 , 42.360977340191] , [ 1139893200000 , 42.450464118612] , [ 1139979600000 , 41.534308383372] , [ 1140066000000 , 40.514021280382] , [ 1140152400000 , 40.747646796332] , [ 1140498000000 , 41.116758915735] , [ 1140584400000 , 42.374772075595] , [ 1140670800000 , 41.68214532166] , [ 1140757200000 , 42.24235753426] , [ 1141016400000 , 41.441747369369] , [ 1141102800000 , 41.448070251769] , [ 1141189200000 , 56.275981568947] , [ 1141275600000 , 55.282627169559] , [ 1141362000000 , 56.647027485319] , [ 1141621200000 , 56.059660028106] , [ 1141707600000 , 54.77918132076] , [ 1141794000000 , 54.478201978136] , [ 1141880400000 , 54.620549543794] , [ 1141966800000 , 55.510981587484] , [ 1142226000000 , 55.406167363186] , [ 1142312400000 , 55.352302193651] , [ 1142398800000 , 55.147409450116] , [ 1142485200000 , 55.444964855182] , [ 1142571600000 , 55.627238682548] , [ 1142830800000 , 56.854644322019] , [ 1142917200000 , 57.023277554471] , [ 1143003600000 , 55.018950347698] , [ 1143090000000 , 54.352959079547] , [ 1143176400000 , 54.996261045117] , [ 1143435600000 , 56.639708274569] , [ 1143522000000 , 57.180670453799] , [ 1143608400000 , 56.842700893772] , [ 1143694800000 , 56.973261893324] , [ 1143781200000 , 45.958572168113] , [ 1144036800000 , 44.899077837883] , [ 1144123200000 , 44.320622028659] , [ 1144209600000 , 44.219804252191] , [ 1144296000000 , 45.173865376276] , [ 1144382400000 , 45.732509493847] , [ 1144641600000 , 48.1891780745] , [ 1144728000000 , 46.840271938897] , [ 1144814400000 , 46.789706444344] , [ 1144900800000 , 46.393449417654] , [ 1145246400000 , 45.645233846302] , [ 1145332800000 , 47.326547762145] , [ 1145419200000 , 46.332232113328] , [ 1145505600000 , 47.267052922945] , [ 1145592000000 , 47.693265582401] , [ 1145851200000 , 47.401272809184] , [ 1145937600000 , 47.052191663825] , [ 1146024000000 , 47.998220631374] , [ 1146110400000 , 46.279773880716] , [ 1146196800000 , 45.958311743231] , [ 1146456000000 , 46.581353772922] , [ 1146542400000 , 46.679770406725] , [ 1146628800000 , 46.970527577035] , [ 1146715200000 , 49.467528887389] , [ 1146801600000 , 48.86749946278] , [ 1147060800000 , 49.648628502483] , [ 1147147200000 , 50.494348136037] , [ 1147233600000 , 50.337969671596] , [ 1147320000000 , 49.571689687202] , [ 1147406400000 , 46.990254393641] , [ 1147665600000 , 47.304911630878] , [ 1147752000000 , 47.983917320898] , [ 1147838400000 , 45.854540750668] , [ 1147924800000 , 45.510137611603] , [ 1148011200000 , 46.151175817378] , [ 1148270400000 , 45.62364868657] , [ 1148356800000 , 46.110148005872] , [ 1148443200000 , 45.810233526614] , [ 1148529600000 , 44.9930408698] , [ 1148616000000 , 46.363888952819] , [ 1148961600000 , 47.143012944602] , [ 1149048000000 , 47.327707321384] , [ 1149134400000 , 45.175104405284] , [ 1149220800000 , 45.34703424423] , [ 1149480000000 , 46.216779893393] , [ 1149566400000 , 46.598040617359] , [ 1149652800000 , 47.189241289933] , [ 1149739200000 , 45.658398048284] , [ 1149825600000 , 46.9164487272] , [ 1150084800000 , 46.011284533759] , [ 1150171200000 , 46.113819310332] , [ 1150257600000 , 46.190932441443] , [ 1150344000000 , 46.750676824435] , [ 1150430400000 , 46.487507306337] , [ 1150689600000 , 46.383666602358] , [ 1150776000000 , 48.314734663751] , [ 1150862400000 , 45.904959801309] , [ 1150948800000 , 46.414508246488] , [ 1151035200000 , 45.827051574341] , [ 1151294400000 , 45.660314700071] , [ 1151380800000 , 46.072521952446] , [ 1151467200000 , 45.154916189936] , [ 1151553600000 , 47.901416171471] , [ 1151640000000 , 37.229325012319] , [ 1151899200000 , 37.761444779987] , [ 1152072000000 , 37.684391952883] , [ 1152158400000 , 36.901070341916] , [ 1152244800000 , 35.027909343394] , [ 1152504000000 , 35.590532623892] , [ 1152590400000 , 36.323481699381] , [ 1152676800000 , 35.373968184744] , [ 1152763200000 , 36.112919872847] , [ 1152849600000 , 35.877394091331] , [ 1153108800000 , 35.904079397751] , [ 1153195200000 , 34.982167807466] , [ 1153281600000 , 34.866840916243] , [ 1153368000000 , 35.461239442698] , [ 1153454400000 , 35.178443755199] , [ 1153713600000 , 35.874799052439] , [ 1153800000000 , 34.315979895357] , [ 1153886400000 , 35.263596736544] , [ 1153972800000 , 36.720199730035] , [ 1154059200000 , 36.582484990637] , [ 1154318400000 , 36.146231730222] , [ 1154404800000 , 36.473218758824] , [ 1154491200000 , 39.350334069031] , [ 1154577600000 , 39.349849644247] , [ 1154664000000 , 38.905126995273] , [ 1154923200000 , 38.501874531275] , [ 1155009600000 , 38.085057200453] , [ 1155096000000 , 36.580874486445] , [ 1155182400000 , 35.278564569285] , [ 1155268800000 , 35.339867546352] , [ 1155528000000 , 38.144145011232] , [ 1155614400000 , 38.527057988677] , [ 1155700800000 , 38.512057817284] , [ 1155787200000 , 38.633124563109] , [ 1155873600000 , 38.441142917546] , [ 1156132800000 , 38.198057114995] , [ 1156219200000 , 39.387052916829] , [ 1156305600000 , 38.539204428591] , [ 1156392000000 , 38.403254514578] , [ 1156478400000 , 36.985515551347] , [ 1156737600000 , 38.43679432035] , [ 1156824000000 , 36.879754047101] , [ 1156910400000 , 36.833854632532] , [ 1156996800000 , 37.981440096908] , [ 1157083200000 , 38.972302352471] , [ 1157428800000 , 39.04251002197] , [ 1157515200000 , 38.914819281455] , [ 1157601600000 , 38.109923576759] , [ 1157688000000 , 38.357930697252] , [ 1157947200000 , 37.827158778622] , [ 1158033600000 , 36.780706791936] , [ 1158120000000 , 36.509922890579] , [ 1158206400000 , 36.26065959187] , [ 1158292800000 , 36.600766410154] , [ 1158552000000 , 38.705470046823] , [ 1158638400000 , 38.401807247359] , [ 1158724800000 , 38.515622354436] , [ 1158811200000 , 38.315859920133] , [ 1158897600000 , 38.250951237303] , [ 1159156800000 , 38.67982448146] , [ 1159243200000 , 37.224057114459] , [ 1159329600000 , 38.660376868643] , [ 1159416000000 , 38.830427200907] , [ 1159502400000 , 38.706842387278] , [ 1159761600000 , 41.079742461457] , [ 1159848000000 , 40.444930825372] , [ 1159934400000 , 40.886912676513] , [ 1160020800000 , 41.224822083341] , [ 1160107200000 , 40.347601367712] , [ 1160366400000 , 41.837356554128] , [ 1160452800000 , 40.897932943193] , [ 1160539200000 , 40.518543650028] , [ 1160625600000 , 40.288752137816] , [ 1160712000000 , 41.043190919031] , [ 1160971200000 , 41.587317963957] , [ 1161057600000 , 41.506640506137] , [ 1161144000000 , 42.119301433006] , [ 1161230400000 , 41.682102125416] , [ 1161316800000 , 41.658385997837] , [ 1161576000000 , 41.364755536555] , [ 1161662400000 , 41.118329642666] , [ 1161748800000 , 41.930530943983] , [ 1161835200000 , 41.701997048839] , [ 1161921600000 , 41.523275953147] , [ 1162184400000 , 42.250622483593] , [ 1162270800000 , 41.46919877524] , [ 1162357200000 , 40.652998161448] , [ 1162443600000 , 40.301949948859] , [ 1162530000000 , 40.765389738426] , [ 1162789200000 , 40.377269979391] , [ 1162875600000 , 40.153092201418] , [ 1162962000000 , 40.333395774847] , [ 1163048400000 , 40.34239887406] , [ 1163134800000 , 39.862900128257] , [ 1163394000000 , 40.215906322029] , [ 1163480400000 , 40.261573859441] , [ 1163566800000 , 40.232379320879] , [ 1163653200000 , 40.855851614849] , [ 1163739600000 , 40.249521139052] , [ 1163998800000 , 40.310180760733] , [ 1164085200000 , 40.615769349049] , [ 1164171600000 , 42.51425827267] , [ 1164344400000 , 42.563323885289] , [ 1164603600000 , 40.875145750298] , [ 1164690000000 , 40.948224280484] , [ 1164776400000 , 40.473905934522] , [ 1164862800000 , 40.849014399588] , [ 1164949200000 , 48.028193886878] , [ 1165208400000 , 49.283546585] , [ 1165294800000 , 49.28735947581] , [ 1165381200000 , 49.582676075971] , [ 1165467600000 , 49.505520921541] , [ 1165554000000 , 49.334066135561] , [ 1165813200000 , 47.361493884564] , [ 1165899600000 , 48.022668447577] , [ 1165986000000 , 48.136007177164] , [ 1166072400000 , 49.530879789181] , [ 1166158800000 , 49.049605191802] , [ 1166418000000 , 47.79272343811] , [ 1166504400000 , 47.956058613061] , [ 1166590800000 , 47.251710880592] , [ 1166677200000 , 48.081631554785] , [ 1166763600000 , 47.789565103002] , [ 1167109200000 , 46.999857094634] , [ 1167195600000 , 47.256470084764] , [ 1167282000000 , 48.260105754234] , [ 1167368400000 , 47.200164209204] , [ 1167800400000 , 40.549288786421] , [ 1167886800000 , 40.677964850113] , [ 1167973200000 , 38.61986361478] , [ 1168232400000 , 39.533449972988] , [ 1168318800000 , 43.077590371278] , [ 1168405200000 , 42.273909561109] , [ 1168491600000 , 41.970722386306] , [ 1168578000000 , 42.365794801946] , [ 1168923600000 , 40.58045315325] , [ 1169010000000 , 40.166084518201] , [ 1169096400000 , 42.75059731468] , [ 1169182800000 , 42.404230220348] , [ 1169442000000 , 42.900567347161] , [ 1169528400000 , 43.83166540379] , [ 1169614800000 , 43.52394327365] , [ 1169701200000 , 43.757051115448] , [ 1169787600000 , 43.797231102267] , [ 1170046800000 , 43.835763850656] , [ 1170133200000 , 44.207104496916] , [ 1170219600000 , 41.649989577322] , [ 1170306000000 , 41.294349341683] , [ 1170392400000 , 40.978546978348] , [ 1170651600000 , 42.886190399794] , [ 1170738000000 , 40.933388651012] , [ 1170824400000 , 42.966105369238] , [ 1170910800000 , 42.399655191504] , [ 1170997200000 , 41.278267224216] , [ 1171256400000 , 41.514161952875] , [ 1171342800000 , 41.75837231568] , [ 1171429200000 , 42.864861082849] , [ 1171515600000 , 42.040457105532] , [ 1171602000000 , 41.705396079693] , [ 1171947600000 , 43.617273023627] , [ 1172034000000 , 43.168627647137] , [ 1172120400000 , 42.972722792162] , [ 1172206800000 , 41.83791221391] , [ 1172466000000 , 39.783182892268] , [ 1172552400000 , 39.438729187683] , [ 1172638800000 , 40.1247547104] , [ 1172725200000 , 41.699042365727] , [ 1172811600000 , 41.851533446016] , [ 1173070800000 , 42.011879379647] , [ 1173157200000 , 42.039333165794] , [ 1173243600000 , 41.275902320569] , [ 1173330000000 , 42.348740478519] , [ 1173416400000 , 41.586648653507] , [ 1173672000000 , 42.654881252113] , [ 1173758400000 , 41.691200648855] , [ 1173844800000 , 41.855349262981] , [ 1173931200000 , 42.517086809842] , [ 1174017600000 , 42.865130428195] , [ 1174276800000 , 43.238550747996] , [ 1174363200000 , 41.798874003536] , [ 1174449600000 , 42.291275186549] , [ 1174536000000 , 42.013470636387] , [ 1174622400000 , 41.530432572068] , [ 1174881600000 , 41.910687468403] , [ 1174968000000 , 42.15736146194] , [ 1175054400000 , 41.492349901568] , [ 1175140800000 , 42.560352462857] , [ 1175227200000 , 41.97254938106] , [ 1175486400000 , 45.374436924472] , [ 1175572800000 , 45.893545304187] , [ 1175659200000 , 45.22506003574] , [ 1175745600000 , 46.05209467202] , [ 1176091200000 , 47.035327960171] , [ 1176177600000 , 46.576342048869] , [ 1176264000000 , 46.295802288735] , [ 1176350400000 , 47.041541599954] , [ 1176436800000 , 47.159100540413] , [ 1176696000000 , 48.44665937597] , [ 1176782400000 , 47.152224419599] , [ 1176868800000 , 48.212432491054] , [ 1176955200000 , 49.068611571573] , [ 1177041600000 , 48.602141536117] , [ 1177300800000 , 47.742362179746] , [ 1177387200000 , 45.698690353783] , [ 1177473600000 , 48.371240280254] , [ 1177560000000 , 48.415485725908] , [ 1177646400000 , 48.55405459696] , [ 1177905600000 , 47.304778703626] , [ 1177992000000 , 46.225008783656] , [ 1178078400000 , 44.229418778794] , [ 1178164800000 , 44.406564625653] , [ 1178251200000 , 45.50742880888] , [ 1178510400000 , 44.984448759391] , [ 1178596800000 , 44.65448956982] , [ 1178683200000 , 45.588829075533] , [ 1178769600000 , 45.020749850888] , [ 1178856000000 , 45.465243868375] , [ 1179115200000 , 45.519305456743] , [ 1179201600000 , 44.911170952119] , [ 1179288000000 , 44.745521815018] , [ 1179374400000 , 45.940956506756] , [ 1179460800000 , 46.306072153648] , [ 1179720000000 , 46.22792700306] , [ 1179806400000 , 46.956904197167] , [ 1179892800000 , 46.573345705707] , [ 1179979200000 , 46.43786344348] , [ 1180065600000 , 46.094432535573] , [ 1180411200000 , 46.697477331175] , [ 1180497600000 , 46.428879450571] , [ 1180584000000 , 50.499545993297] , [ 1180670400000 , 55.339281464709] , [ 1180929600000 , 54.409050782759] , [ 1181016000000 , 54.593169041359] , [ 1181102400000 , 55.412911246063] , [ 1181188800000 , 53.665870169968] , [ 1181275200000 , 50.928028587585] , [ 1181534400000 , 50.923673347514] , [ 1181620800000 , 50.845287393009] , [ 1181707200000 , 54.947494876833] , [ 1181793600000 , 52.888928872303] , [ 1181880000000 , 53.052353110611] , [ 1182139200000 , 53.852433577049] , [ 1182225600000 , 53.390913524952] , [ 1182312000000 , 51.231387895907] , [ 1182398400000 , 55.248891533728] , [ 1182484800000 , 53.132739002471] , [ 1182744000000 , 54.932644045835] , [ 1182830400000 , 51.454250922562] , [ 1182916800000 , 49.516775558942] , [ 1183003200000 , 50.807400759558] , [ 1183089600000 , 55.668820880205] , [ 1183348800000 , 40.677665131618] , [ 1183435200000 , 40.957823912031] , [ 1183608000000 , 43.070762941754] , [ 1183694400000 , 44.001891147519] , [ 1183953600000 , 41.316806970291] , [ 1184040000000 , 42.640942591304] , [ 1184126400000 , 41.480018575865] , [ 1184212800000 , 43.794516056231] , [ 1184299200000 , 44.136091304711] , [ 1184558400000 , 44.486575362551] , [ 1184644800000 , 43.128278487299] , [ 1184731200000 , 43.465973749196] , [ 1184817600000 , 43.796431410073] , [ 1184904000000 , 43.7061873612] , [ 1185163200000 , 43.286353767759] , [ 1185249600000 , 40.301127610827] , [ 1185336000000 , 42.276206724195] , [ 1185422400000 , 41.647404419762] , [ 1185508800000 , 40.836581996412] , [ 1185768000000 , 42.082497022874] , [ 1185854400000 , 41.819782438579] , [ 1185940800000 , 40.864923131589] , [ 1186027200000 , 40.752166804551] , [ 1186113600000 , 40.827600193087] , [ 1186372800000 , 40.25752064843] , [ 1186459200000 , 40.336744579352] , [ 1186545600000 , 41.526885374386] , [ 1186632000000 , 39.201321809451] , [ 1186718400000 , 40.824568472821] , [ 1186977600000 , 39.938781115159] , [ 1187064000000 , 40.275412920888] , [ 1187150400000 , 39.585179984672] , [ 1187236800000 , 38.550944472758] , [ 1187323200000 , 39.506420207732] , [ 1187582400000 , 38.98522762966] , [ 1187668800000 , 39.12668775225] , [ 1187755200000 , 38.826709386529] , [ 1187841600000 , 39.74645920889] , [ 1187928000000 , 39.907580166007] , [ 1188187200000 , 40.172651639289] , [ 1188273600000 , 39.271745306592] , [ 1188360000000 , 39.1410155061] , [ 1188446400000 , 40.075153010354] , [ 1188532800000 , 40.043023694857] , [ 1188878400000 , 38.762379226903] , [ 1188964800000 , 38.976244721011] , [ 1189051200000 , 40.888712180786] , [ 1189137600000 , 40.773231611241] , [ 1189396800000 , 39.686618837375] , [ 1189483200000 , 40.315506851923] , [ 1189569600000 , 40.768000686391] , [ 1189656000000 , 41.120158728705] , [ 1189742400000 , 41.289395778372] , [ 1190001600000 , 41.54453121935] , [ 1190088000000 , 40.448292109836] , [ 1190174400000 , 40.880259975885] , [ 1190260800000 , 40.769880453321] , [ 1190347200000 , 40.749304927693] , [ 1190606400000 , 40.630832500314] , [ 1190692800000 , 38.885351668649] , [ 1190779200000 , 38.583006012709] , [ 1190865600000 , 39.606330180132] , [ 1190952000000 , 40.128161596718] , [ 1191211200000 , 43.060065039489] , [ 1191297600000 , 43.196113993927] , [ 1191384000000 , 42.883319982201] , [ 1191470400000 , 43.067998208361] , [ 1191556800000 , 41.980852012484] , [ 1191816000000 , 42.883383613468] , [ 1191902400000 , 43.344013615142] , [ 1191988800000 , 42.614619640333] , [ 1192075200000 , 40.389984508037] , [ 1192161600000 , 42.693081639034] , [ 1192420800000 , 40.482578994898] , [ 1192507200000 , 40.260055795754] , [ 1192593600000 , 44.676963280551] , [ 1192680000000 , 42.95041649405] , [ 1192766400000 , 44.644292986367] , [ 1193025600000 , 44.639042554631] , [ 1193112000000 , 44.490801914855] , [ 1193198400000 , 42.591597590587] , [ 1193284800000 , 37.893186596748] , [ 1193371200000 , 38.44069180621] , [ 1193630400000 , 44.041100448824] , [ 1193716800000 , 43.361989197879] , [ 1193803200000 , 43.435786819594] , [ 1193889600000 , 42.460190442791] , [ 1193976000000 , 41.73837439964] , [ 1194238800000 , 39.47118358751] , [ 1194325200000 , 38.524217012563] , [ 1194411600000 , 40.577263626423] , [ 1194498000000 , 39.752284978368] , [ 1194584400000 , 40.103726892742] , [ 1194843600000 , 41.943328015222] , [ 1194930000000 , 39.597327285491] , [ 1195016400000 , 39.398666765961] , [ 1195102800000 , 39.011877833744] , [ 1195189200000 , 39.394878904507] , [ 1195448400000 , 36.009903702726] , [ 1195534800000 , 36.445892022393] , [ 1195621200000 , 39.75755712015] , [ 1195794000000 , 36.983322528572] , [ 1196053200000 , 38.251248776703] , [ 1196139600000 , 37.768716680642] , [ 1196226000000 , 36.870397086207] , [ 1196312400000 , 35.559626500934] , [ 1196398800000 , 36.370747685327] , [ 1196658000000 , 33.842649797434] , [ 1196744400000 , 35.023557058628] , [ 1196830800000 , 34.842328804301] , [ 1196917200000 , 34.112676542924] , [ 1197003600000 , 37.754414754838] , [ 1197262800000 , 36.252302733294] , [ 1197349200000 , 35.451916280442] , [ 1197435600000 , 34.915457858297] , [ 1197522000000 , 35.444820052421] , [ 1197608400000 , 34.183774983403] , [ 1197867600000 , 34.567832554773] , [ 1197954000000 , 39.384903210135] , [ 1198040400000 , 38.5810369827] , [ 1198126800000 , 38.229836463596] , [ 1198213200000 , 38.683044435007] , [ 1198472400000 , 39.02123959916] , [ 1198645200000 , 37.833081338653] , [ 1198731600000 , 38.108065472603] , [ 1198818000000 , 38.794022935015] , [ 1199077200000 , 40.228624536054] , [ 1199250000000 , 39.187498445172] , [ 1199336400000 , 36.417462496835] , [ 1199422800000 , 34.62763742216] , [ 1199682000000 , 36.736459264427] , [ 1199768400000 , 35.497559317682] , [ 1199854800000 , 34.918752591596] , [ 1199941200000 , 35.101531833782] , [ 1200027600000 , 35.49974607981] , [ 1200286800000 , 39.282649339878] , [ 1200373200000 , 39.080607719521] , [ 1200459600000 , 35.37988216736] , [ 1200546000000 , 37.663243683233] , [ 1200632400000 , 36.648070379947] , [ 1200978000000 , 37.430305878223] , [ 1201064400000 , 36.793485008657] , [ 1201150800000 , 40.381650279604] , [ 1201237200000 , 40.203730091606] , [ 1201496400000 , 40.368928796249] , [ 1201582800000 , 41.184304062135] , [ 1201669200000 , 40.276940973753] , [ 1201755600000 , 37.480905497643] , [ 1201842000000 , 37.474563506702] , [ 1202101200000 , 37.297125127342] , [ 1202187600000 , 36.117916684956] , [ 1202274000000 , 37.445680046014] , [ 1202360400000 , 38.22381673917] , [ 1202446800000 , 37.050419257962] , [ 1202706000000 , 36.592088770769] , [ 1202792400000 , 38.547831893985] , [ 1202878800000 , 38.684311217747] , [ 1202965200000 , 36.364014574572] , [ 1203051600000 , 36.622361890048] , [ 1203397200000 , 37.389531306573] , [ 1203483600000 , 36.607946999831] , [ 1203570000000 , 34.963636332469] , [ 1203656400000 , 35.248929477753] , [ 1203915600000 , 34.872771074855] , [ 1204002000000 , 34.208830042527] , [ 1204088400000 , 34.932674355541] , [ 1204174800000 , 35.114539235381] , [ 1204261200000 , 34.676553202955] , [ 1204520400000 , 34.880232048577] , [ 1204606800000 , 32.430681962075] , [ 1204693200000 , 33.367813465533] , [ 1204779600000 , 32.769464389519] , [ 1204866000000 , 32.65236118665] , [ 1205121600000 , 34.509687450756] , [ 1205208000000 , 32.6915298708] , [ 1205294400000 , 33.51547698851] , [ 1205380800000 , 32.942210625387] , [ 1205467200000 , 32.439117893938] , [ 1205726400000 , 32.02628003709] , [ 1205812800000 , 33.260143761914] , [ 1205899200000 , 35.300786089085] , [ 1205985600000 , 35.670818768413] , [ 1206331200000 , 34.77147703954] , [ 1206417600000 , 33.471427674497] , [ 1206504000000 , 33.485837485181] , [ 1206590400000 , 33.348124961012] , [ 1206676800000 , 32.070210983497] , [ 1206936000000 , 39.197005614678] , [ 1207022400000 , 32.875938058923] , [ 1207108800000 , 35.972483201689] , [ 1207195200000 , 37.822999108873] , [ 1207281600000 , 34.558692301518] , [ 1207540800000 , 35.663359305262] , [ 1207627200000 , 35.593770054148] , [ 1207713600000 , 37.504651476483] , [ 1207800000000 , 35.07776246529] , [ 1207886400000 , 37.200906256181] , [ 1208145600000 , 37.199331996473] , [ 1208232000000 , 37.024155456066] , [ 1208318400000 , 33.082697917005] , [ 1208404800000 , 37.498634214621] , [ 1208491200000 , 34.734977015412] , [ 1208750400000 , 34.973859459185] , [ 1208836800000 , 36.406870312099] , [ 1208923200000 , 36.819230799301] , [ 1209009600000 , 36.612076784378] , [ 1209096000000 , 34.622810267797] , [ 1209355200000 , 32.461347638351] , [ 1209441600000 , 34.125045067366] , [ 1209528000000 , 34.425567518522] , [ 1209614400000 , 31.328533980854] , [ 1209700800000 , 31.390511559334] , [ 1209960000000 , 30.93291579694] , [ 1210046400000 , 32.736477783621] , [ 1210132800000 , 31.082287302438] , [ 1210219200000 , 31.332602001184] , [ 1210305600000 , 33.038838836022] , [ 1210564800000 , 30.913599008659] , [ 1210651200000 , 30.870227455724] , [ 1210737600000 , 31.031635816925] , [ 1210824000000 , 30.568308358227] , [ 1210910400000 , 31.40338252109] , [ 1211169600000 , 31.025819584984] , [ 1211256000000 , 31.291018686243] , [ 1211342400000 , 33.089494963542] , [ 1211428800000 , 30.8501775222] , [ 1211515200000 , 31.024905920823] , [ 1211860800000 , 30.702659361613] , [ 1211947200000 , 30.370309143047] , [ 1212033600000 , 31.835536752185] , [ 1212120000000 , 34.224295895796] , [ 1212379200000 , 33.82551690261] , [ 1212465600000 , 33.448117799035] , [ 1212552000000 , 33.731957555327] , [ 1212638400000 , 33.419056433778] , [ 1212724800000 , 33.652076676877] , [ 1212984000000 , 34.75833390842] , [ 1213070400000 , 33.966852974712] , [ 1213156800000 , 31.962763579633] , [ 1213243200000 , 32.208757342848] , [ 1213329600000 , 34.378374528998] , [ 1213588800000 , 33.951741881089] , [ 1213675200000 , 34.007606108374] , [ 1213761600000 , 33.867845903539] , [ 1213848000000 , 33.616751259121] , [ 1213934400000 , 33.019184619914] , [ 1214193600000 , 33.285147543414] , [ 1214280000000 , 33.08342304721] , [ 1214366400000 , 33.714107912463] , [ 1214452800000 , 32.154610339661] , [ 1214539200000 , 32.600039373083] , [ 1214798400000 , 34.649653437429] , [ 1214884800000 , 34.390173491777] , [ 1214971200000 , 35.23482859762] , [ 1215057600000 , 35.420659797581] , [ 1215403200000 , 35.570715325359] , [ 1215489600000 , 33.990330369821] , [ 1215576000000 , 31.16151397514] , [ 1215662400000 , 31.474278442991] , [ 1215748800000 , 31.504568467653] , [ 1216008000000 , 31.638407811974] , [ 1216094400000 , 32.039690527103] , [ 1216180800000 , 32.158187913673] , [ 1216267200000 , 31.319105002908] , [ 1216353600000 , 33.857835760582] , [ 1216612800000 , 33.495854613048] , [ 1216699200000 , 34.641115439895] , [ 1216785600000 , 32.236073288275] , [ 1216872000000 , 32.869189753549] , [ 1216958400000 , 32.343041827239] , [ 1217217600000 , 33.173104251573] , [ 1217304000000 , 33.287531889745] , [ 1217390400000 , 33.07280240245] , [ 1217476800000 , 33.426480222396] , [ 1217563200000 , 30.844548573866] , [ 1217822400000 , 32.28517554945] , [ 1217908800000 , 32.556948418259] , [ 1217995200000 , 32.432127438834] , [ 1218081600000 , 30.976399153564] , [ 1218168000000 , 31.377955916811] , [ 1218427200000 , 33.871175546353] , [ 1218513600000 , 33.33184275627] , [ 1218600000000 , 34.131115594087] , [ 1218686400000 , 33.317052289572] , [ 1218772800000 , 33.799231225749] , [ 1219032000000 , 33.972974049901] , [ 1219118400000 , 34.021095752275] , [ 1219204800000 , 32.70456236339] , [ 1219291200000 , 33.030834770455] , [ 1219377600000 , 33.070958393187] , [ 1219636800000 , 30.144131693869] , [ 1219723200000 , 30.78660466756] , [ 1219809600000 , 30.626977812395] , [ 1219896000000 , 31.52675612422] , [ 1219982400000 , 30.729114716114] , [ 1220328000000 , 38.47221528415] , [ 1220414400000 , 38.863261471035] , [ 1220500800000 , 37.796975285052] , [ 1220587200000 , 37.463504689182] , [ 1220846400000 , 38.309577989911] , [ 1220932800000 , 38.025058836407] , [ 1221019200000 , 38.439129554542] , [ 1221105600000 , 39.036709791057] , [ 1221192000000 , 37.072770822385] , [ 1221451200000 , 39.673848596407] , [ 1221537600000 , 37.393032387866] , [ 1221624000000 , 36.35594364229] , [ 1221710400000 , 37.622993399094] , [ 1221796800000 , 36.649795639694] , [ 1222056000000 , 36.039113983115] , [ 1222142400000 , 37.085628887268] , [ 1222228800000 , 38.279678406166] , [ 1222315200000 , 36.846136815299] , [ 1222401600000 , 41.761604845869] , [ 1222660800000 , 42.996960939161] , [ 1222747200000 , 33.707564403266] , [ 1222833600000 , 32.779504578017] , [ 1222920000000 , 32.112840357214] , [ 1223006400000 , 32.42422434075] , [ 1223265600000 , 31.599745522692] , [ 1223352000000 , 31.394080666881] , [ 1223438400000 , 29.721685327049] , [ 1223524800000 , 27.656707679591] , [ 1223611200000 , 26.387053183114] , [ 1223870400000 , 28.427127462265] , [ 1223956800000 , 29.767151228933] , [ 1224043200000 , 24.885042683004] , [ 1224129600000 , 25.610585646098] , [ 1224216000000 , 25.89660408197] , [ 1224475200000 , 30.367206353123] , [ 1224561600000 , 28.68964289268] , [ 1224648000000 , 29.190070102203] , [ 1224734400000 , 30.01512936251] , [ 1224820800000 , 27.051664168982] , [ 1225080000000 , 26.468243159649] , [ 1225166400000 , 27.674346811166] , [ 1225252800000 , 31.060537460226] , [ 1225339200000 , 31.967700145343] , [ 1225425600000 , 31.76727442402] , [ 1225688400000 , 35.570908267855] , [ 1225774800000 , 35.087758911288] , [ 1225861200000 , 35.766405090511] , [ 1225947600000 , 34.77773045396] , [ 1226034000000 , 34.845497191942] , [ 1226293200000 , 35.277699974382] , [ 1226379600000 , 34.718926452526] , [ 1226466000000 , 31.031349237292] , [ 1226552400000 , 35.399989845419] , [ 1226638800000 , 32.11552775258] , [ 1226898000000 , 31.525057902617] , [ 1226984400000 , 31.849977729409] , [ 1227070800000 , 32.942855581261] , [ 1227157200000 , 30.034016952172] , [ 1227243600000 , 33.501536066258] , [ 1227502800000 , 31.6050659041] , [ 1227589200000 , 31.999708123932] , [ 1227675600000 , 34.317936159881] , [ 1227848400000 , 33.960673832941] , [ 1228107600000 , 41.356804380912] , [ 1228194000000 , 40.129327818544] , [ 1228280400000 , 43.113526837888] , [ 1228366800000 , 42.607006676072] , [ 1228453200000 , 43.406461937838] , [ 1228712400000 , 40.8109747939] , [ 1228798800000 , 38.042813404614] , [ 1228885200000 , 38.490896527889] , [ 1228971600000 , 38.361494759777] , [ 1229058000000 , 38.595507797191] , [ 1229317200000 , 35.42595407476] , [ 1229403600000 , 37.775749413766] , [ 1229490000000 , 37.165777579711] , [ 1229576400000 , 37.176995489902] , [ 1229662800000 , 36.507937046549] , [ 1229922000000 , 38.177645291644] , [ 1230008400000 , 37.649679034135] , [ 1230094800000 , 38.068189110701] , [ 1230267600000 , 38.38426027261] , [ 1230526800000 , 38.765332768625] , [ 1230613200000 , 37.032713183818] , [ 1230699600000 , 23.829064190627] , [ 1230872400000 , 22.323728883138] , [ 1231131600000 , 24.797109928227] , [ 1231218000000 , 24.977344869187] , [ 1231304400000 , 24.93584365895] , [ 1231390800000 , 24.86436284949] , [ 1231477200000 , 24.443104865996] , [ 1231736400000 , 24.362937970688] , [ 1231822800000 , 25.342113747091] , [ 1231909200000 , 25.783881702714] , [ 1231995600000 , 27.792844806944] , [ 1232082000000 , 28.466705182171] , [ 1232427600000 , 27.369176753396] , [ 1232514000000 , 28.269278787546] , [ 1232600400000 , 27.537922432643] , [ 1232686800000 , 27.003816799455] , [ 1232946000000 , 27.675275368673] , [ 1233032400000 , 27.8817155491] , [ 1233118800000 , 26.456390928983] , [ 1233205200000 , 28.240227295843] , [ 1233291600000 , 27.905504232911] , [ 1233550800000 , 26.999949466703] , [ 1233637200000 , 25.470908064245] , [ 1233723600000 , 28.989051436527] , [ 1233810000000 , 28.080202997704] , [ 1233896400000 , 26.903951189081] , [ 1234155600000 , 26.804750308913] , [ 1234242000000 , 26.373036159637] , [ 1234328400000 , 26.22710293064] , [ 1234414800000 , 25.976932262381] , [ 1234501200000 , 26.595980451527] , [ 1234846800000 , 26.997996030368] , [ 1234933200000 , 26.001787664701] , [ 1235019600000 , 26.823501051723] , [ 1235106000000 , 26.267779023414] , [ 1235365200000 , 25.668870153301] , [ 1235451600000 , 26.775597084663] , [ 1235538000000 , 25.275682373883] , [ 1235624400000 , 24.818032360792] , [ 1235710800000 , 24.645579842038] , [ 1235970000000 , 19.620474811209] , [ 1236056400000 , 19.33780594747] , [ 1236142800000 , 20.440066303085] , [ 1236229200000 , 19.829317263913] , [ 1236315600000 , 21.415210658775] , [ 1236571200000 , 21.303851376023] , [ 1236657600000 , 19.864297629264] , [ 1236744000000 , 19.742427275066] , [ 1236830400000 , 21.828028325853] , [ 1236916800000 , 22.500437749723] , [ 1237176000000 , 22.302540792889] , [ 1237262400000 , 21.578233125833] , [ 1237348800000 , 20.314706697852] , [ 1237435200000 , 23.099506359262] , [ 1237521600000 , 21.604664867372] , [ 1237780800000 , 23.475786966577] , [ 1237867200000 , 24.193821943723] , [ 1237953600000 , 24.621593410665] , [ 1238040000000 , 26.260389324484] , [ 1238126400000 , 25.671214412778] , [ 1238385600000 , 25.619911577679] , [ 1238472000000 , 26.624467688263] , [ 1238558400000 , 25.913842497553] , [ 1238644800000 , 28.093070112629] , [ 1238731200000 , 27.994692201554] , [ 1238990400000 , 28.950646665392] , [ 1239076800000 , 28.086407604621] , [ 1239163200000 , 28.202869326475] , [ 1239249600000 , 28.432365962191] , [ 1239595200000 , 28.685344294338] , [ 1239681600000 , 28.410679589095] , [ 1239768000000 , 30.039209606373] , [ 1239854400000 , 29.688706833586] , [ 1239940800000 , 29.706077416411] , [ 1240200000000 , 30.240307995292] , [ 1240286400000 , 28.578706705541] , [ 1240372800000 , 29.096068525004] , [ 1240459200000 , 28.327577765114] , [ 1240545600000 , 26.466292647955] , [ 1240804800000 , 27.945309878163] , [ 1240891200000 , 28.251203544513] , [ 1240977600000 , 28.537588121271] , [ 1241064000000 , 28.656205597444] , [ 1241150400000 , 27.628665994293] , [ 1241409600000 , 26.623800410378] , [ 1241496000000 , 28.016342607653] , [ 1241582400000 , 28.988641572085] , [ 1241668800000 , 30.039982046018] , [ 1241755200000 , 28.434028256357] , [ 1242014400000 , 29.59225552833] , [ 1242100800000 , 27.785411138546] , [ 1242187200000 , 29.418424521603] , [ 1242273600000 , 30.636173934021] , [ 1242360000000 , 30.795827580262] , [ 1242619200000 , 28.177711133148] , [ 1242705600000 , 28.793529692606] , [ 1242792000000 , 27.376818367252] , [ 1242878400000 , 28.398443513777] , [ 1242964800000 , 27.845729112892] , [ 1243310400000 , 26.460688515913] , [ 1243396800000 , 26.854143707776] , [ 1243483200000 , 26.557808273823] , [ 1243569600000 , 26.684434779597] , [ 1243828800000 , 27.100068229825] , [ 1243915200000 , 28.226521744201] , [ 1244001600000 , 28.262916900497] , [ 1244088000000 , 27.664168471968] , [ 1244174400000 , 28.231769628935] , [ 1244433600000 , 28.238963490918] , [ 1244520000000 , 28.004078808844] , [ 1244606400000 , 28.071903331404] , [ 1244692800000 , 27.813249689294] , [ 1244779200000 , 28.492472877507] , [ 1245038400000 , 28.464916428286] , [ 1245124800000 , 28.614368981678] , [ 1245211200000 , 28.751436856064] , [ 1245297600000 , 28.839287109765] , [ 1245384000000 , 28.094781061945] , [ 1245643200000 , 26.991399319554] , [ 1245729600000 , 27.017618743579] , [ 1245816000000 , 27.611586538852] , [ 1245902400000 , 28.531369218994] , [ 1245988800000 , 28.174659628256] , [ 1246248000000 , 28.261484117477] , [ 1246334400000 , 29.378488292711] , [ 1246420800000 , 28.491081890381] , [ 1246507200000 , 26.635091892613] , [ 1246852800000 , 27.575195657508] , [ 1246939200000 , 25.903518055184] , [ 1247025600000 , 26.201180132958] , [ 1247112000000 , 25.99200938652] , [ 1247198400000 , 26.574062926405] , [ 1247457600000 , 27.923560133383] , [ 1247544000000 , 26.256367387531] , [ 1247630400000 , 29.160278680176] , [ 1247716800000 , 29.541387493221] , [ 1247803200000 , 28.244742675086] , [ 1248062400000 , 28.85146071325] , [ 1248148800000 , 29.098461226849] , [ 1248235200000 , 28.6595764147] , [ 1248321600000 , 28.822453436923] , [ 1248408000000 , 29.421334698504] , [ 1248667200000 , 29.584631868865] , [ 1248753600000 , 29.188658115312] , [ 1248840000000 , 29.104979516564] , [ 1248926400000 , 29.302745916854] , [ 1249012800000 , 30.019885466665] , [ 1249272000000 , 28.633967945525] , [ 1249358400000 , 31.637773688305] , [ 1249444800000 , 31.459872617638] , [ 1249531200000 , 31.29180205981] , [ 1249617600000 , 31.264415381862] , [ 1249876800000 , 31.001209816008] , [ 1249963200000 , 31.353357089508] , [ 1250049600000 , 31.513079769152] , [ 1250136000000 , 31.118737391028] , [ 1250222400000 , 31.163740753117] , [ 1250481600000 , 30.857579123642] , [ 1250568000000 , 30.660715942171] , [ 1250654400000 , 31.484636006781] , [ 1250740800000 , 31.576129669043] , [ 1250827200000 , 31.706973036288] , [ 1251086400000 , 31.690668563346] , [ 1251172800000 , 32.131611613695] , [ 1251259200000 , 31.524750801396] , [ 1251345600000 , 31.698631894692] , [ 1251432000000 , 31.475475399814] , [ 1251691200000 , 31.483997840346] , [ 1251777600000 , 30.858988668614] , [ 1251864000000 , 31.895989345579] , [ 1251950400000 , 31.776773377473] , [ 1252036800000 , 33.210317711836] , [ 1252382400000 , 33.066184557937] , [ 1252468800000 , 33.381672419564] , [ 1252555200000 , 33.84959123019] , [ 1252641600000 , 33.201501859076] , [ 1252900800000 , 33.438071806197] , [ 1252987200000 , 34.357609729756] , [ 1253073600000 , 35.004175998601] , [ 1253160000000 , 35.498577686823] , [ 1253246400000 , 35.11971724555] , [ 1253505600000 , 33.679035707771] , [ 1253592000000 , 33.962755107976] , [ 1253678400000 , 33.593891726317] , [ 1253764800000 , 33.73678055515] , [ 1253851200000 , 33.37567212126] , [ 1254110400000 , 33.554009104935] , [ 1254196800000 , 33.649684871815] , [ 1254283200000 , 30.147301414053] , [ 1254369600000 , 25.934243058138] , [ 1254456000000 , 26.209047889237] , [ 1254715200000 , 25.706355954648] , [ 1254801600000 , 27.563062457787] , [ 1254888000000 , 26.063430782934] , [ 1254974400000 , 26.39388289134] , [ 1255060800000 , 28.152935395273] , [ 1255320000000 , 28.282765303329] , [ 1255406400000 , 27.778999654842] , [ 1255492800000 , 28.144025202672] , [ 1255579200000 , 27.95103244924] , [ 1255665600000 , 28.798290929345] , [ 1255924800000 , 28.469183101046] , [ 1256011200000 , 26.42118964483] , [ 1256097600000 , 26.97121730656] , [ 1256184000000 , 26.834603326648] , [ 1256270400000 , 26.575321586635] , [ 1256529600000 , 25.840551079218] , [ 1256616000000 , 26.100881876267] , [ 1256702400000 , 25.707809071169] , [ 1256788800000 , 23.811145576094] , [ 1256875200000 , 25.697068771961] , [ 1257138000000 , 27.701413605445] , [ 1257224400000 , 27.662842444162] , [ 1257310800000 , 27.615553967098] , [ 1257397200000 , 29.311367772105] , [ 1257483600000 , 29.332672522399] , [ 1257742800000 , 29.834663545089] , [ 1257829200000 , 32.427305926641] , [ 1257915600000 , 29.983956251278] , [ 1258002000000 , 30.237206739217] , [ 1258088400000 , 34.436470446052] , [ 1258347600000 , 32.718941607834] , [ 1258434000000 , 32.835738339453] , [ 1258520400000 , 32.539205854498] , [ 1258606800000 , 33.050356677292] , [ 1258693200000 , 30.922974198726] , [ 1258952400000 , 30.993085634217] , [ 1259038800000 , 31.412334018492] , [ 1259125200000 , 31.537487526328] , [ 1259298000000 , 33.111900337051] , [ 1259557200000 , 33.13436824218] , [ 1259643600000 , 34.901027027741] , [ 1259730000000 , 34.865224206832] , [ 1259816400000 , 35.991408938557] , [ 1259902800000 , 35.631850898439] , [ 1260162000000 , 35.564889085754] , [ 1260248400000 , 35.495794223539] , [ 1260334800000 , 35.762274293506] , [ 1260421200000 , 35.390730795658] , [ 1260507600000 , 36.582357390584] , [ 1260766800000 , 36.013060621389] , [ 1260853200000 , 35.969740142244] , [ 1260939600000 , 36.307505038637] , [ 1261026000000 , 36.02536358376] , [ 1261112400000 , 36.466656441152] , [ 1261371600000 , 36.35420113605] , [ 1261458000000 , 35.827401428777] , [ 1261544400000 , 36.524433432014] , [ 1261630800000 , 36.206144531425] , [ 1261976400000 , 35.683275902136] , [ 1262062800000 , 36.072852867663] , [ 1262149200000 , 36.320255948353] , [ 1262235600000 , 33.435457056377] , [ 1262581200000 , 34.907530028007] , [ 1262667600000 , 35.365138953809] , [ 1262754000000 , 35.214913077417] , [ 1262840400000 , 36.013297405915] , [ 1262926800000 , 35.698281983951] , [ 1263186000000 , 36.351044274157] , [ 1263272400000 , 36.279449872408] , [ 1263358800000 , 36.470377514925] , [ 1263445200000 , 36.403986859445] , [ 1263531600000 , 36.712083494082] , [ 1263877200000 , 37.105685062809] , [ 1263963600000 , 37.571421578996] , [ 1264050000000 , 36.800346856747] , [ 1264136400000 , 36.600162906088] , [ 1264395600000 , 37.1176213738] , [ 1264482000000 , 36.714928550894] , [ 1264568400000 , 40.096454568442] , [ 1264654800000 , 36.160579119041] , [ 1264741200000 , 36.378595261955] , [ 1265000400000 , 38.30830922407] , [ 1265086800000 , 38.410788338653] , [ 1265173200000 , 38.114154823839] , [ 1265259600000 , 36.29629119399] , [ 1265346000000 , 36.972461459393] , [ 1265605200000 , 36.916176968829] , [ 1265691600000 , 37.859226521851] , [ 1265778000000 , 37.823180258657] , [ 1265864400000 , 38.370318510334] , [ 1265950800000 , 37.824219551091] , [ 1266296400000 , 37.908446034763] , [ 1266382800000 , 38.080488086584] , [ 1266469200000 , 38.22377537947] , [ 1266555600000 , 38.585808959558] , [ 1266814800000 , 38.4005951816] , [ 1266901200000 , 38.285575644728] , [ 1266987600000 , 35.790348744646] , [ 1267074000000 , 37.96859053117] , [ 1267160400000 , 37.740082932519] , [ 1267419600000 , 40.173788871749] , [ 1267506000000 , 38.013781049181] , [ 1267592400000 , 37.831792492987] , [ 1267678800000 , 38.624445440848] , [ 1267765200000 , 40.164448205377] , [ 1268024400000 , 39.993699476922] , [ 1268110800000 , 39.798437401604] , [ 1268197200000 , 40.097755586565] , [ 1268283600000 , 40.103417469112] , [ 1268370000000 , 39.863177414001] , [ 1268625600000 , 40.470443774091] , [ 1268712000000 , 43.79568503296] , [ 1268798400000 , 39.927130819992] , [ 1268884800000 , 43.907732146241] , [ 1268971200000 , 40.360534264835] , [ 1269230400000 , 43.693623379079] , [ 1269316800000 , 40.779403599522] , [ 1269403200000 , 40.945366282494] , [ 1269489600000 , 40.185643296942] , [ 1269576000000 , 40.790799253411] , [ 1269835200000 , 40.056421642469] , [ 1269921600000 , 40.231594390602] , [ 1270008000000 , 33.277843543055] , [ 1270094400000 , 31.095349397634] , [ 1270440000000 , 31.342909730238] , [ 1270526400000 , 31.448320158913] , [ 1270612800000 , 37.24566959702] , [ 1270699200000 , 30.952736606136] , [ 1270785600000 , 30.682580856701] , [ 1271044800000 , 30.923522289166] , [ 1271131200000 , 33.505663921683] , [ 1271217600000 , 34.270252302119] , [ 1271304000000 , 33.253887020523] , [ 1271390400000 , 34.341869018662] , [ 1271649600000 , 35.775793893406] , [ 1271736000000 , 34.511332548409] , [ 1271822400000 , 34.893409815552] , [ 1271908800000 , 37.514835192186] , [ 1271995200000 , 35.083876851145] , [ 1272254400000 , 35.380783302863] , [ 1272340800000 , 33.849259337893] , [ 1272427200000 , 33.865823717848] , [ 1272513600000 , 34.108342663063] , [ 1272600000000 , 31.000657427436] , [ 1272859200000 , 33.780954947041] , [ 1272945600000 , 28.968203310591] , [ 1273032000000 , 28.394287159406] , [ 1273118400000 , 29.807537899614] , [ 1273204800000 , 29.869231562726] , [ 1273464000000 , 31.378659542766] , [ 1273550400000 , 35.073190943946] , [ 1273636800000 , 33.761652254879] , [ 1273723200000 , 32.437230823903] , [ 1273809600000 , 34.293122964253] , [ 1274068800000 , 30.763269709765] , [ 1274155200000 , 34.507129451768] , [ 1274241600000 , 33.022172171191] , [ 1274328000000 , 30.201207614191] , [ 1274414400000 , 32.768071346365] , [ 1274673600000 , 30.694306725899] , [ 1274760000000 , 30.990054628062] , [ 1274846400000 , 30.369352971151] , [ 1274932800000 , 33.029423543515] , [ 1275019200000 , 31.661989239004] , [ 1275364800000 , 33.837400306477] , [ 1275451200000 , 34.057766642032] , [ 1275537600000 , 34.57383222484] , [ 1275624000000 , 34.188542244708] , [ 1275883200000 , 31.583078557024] , [ 1275969600000 , 30.955930714953] , [ 1276056000000 , 33.997163861054] , [ 1276142400000 , 33.587415751608] , [ 1276228800000 , 33.973725461298] , [ 1276488000000 , 33.662449513853] , [ 1276574400000 , 33.838575602223] , [ 1276660800000 , 34.108867579774] , [ 1276747200000 , 34.745503549485] , [ 1276833600000 , 35.08410642738] , [ 1277092800000 , 35.739596051654] , [ 1277179200000 , 34.949766813922] , [ 1277265600000 , 34.859655921177] , [ 1277352000000 , 34.363800898487] , [ 1277438400000 , 35.301331761941] , [ 1277697600000 , 34.026104763241] , [ 1277784000000 , 33.277683497305] , [ 1277870400000 , 31.750654488375] , [ 1277956800000 , 33.078878869453] , [ 1278043200000 , 36.304276877891] , [ 1278388800000 , 33.082680853865] , [ 1278475200000 , 33.223925715191] , [ 1278561600000 , 34.185935793846] , [ 1278648000000 , 34.148348905182] , [ 1278907200000 , 34.806569050501] , [ 1278993600000 , 33.12730640127] , [ 1279080000000 , 33.706174986492] , [ 1279166400000 , 34.928784921873] , [ 1279252800000 , 34.458765569389] , [ 1279512000000 , 34.059144916891] , [ 1279598400000 , 35.388592631488] , [ 1279684800000 , 33.253858431042] , [ 1279771200000 , 33.342174218917] , [ 1279857600000 , 34.993939726378] , [ 1280116800000 , 34.589106013143] , [ 1280203200000 , 35.165670564159] , [ 1280289600000 , 34.083051499201] , [ 1280376000000 , 36.259991728726] , [ 1280462400000 , 36.929407640376] , [ 1280721600000 , 36.138441527405] , [ 1280808000000 , 36.622046879936] , [ 1280894400000 , 36.531607452018] , [ 1280980800000 , 37.352734763354] , [ 1281067200000 , 36.561407857321] , [ 1281326400000 , 36.624433716888] , [ 1281412800000 , 36.879867076158] , [ 1281499200000 , 32.02015553142] , [ 1281585600000 , 31.992719243324] , [ 1281672000000 , 32.148641606816] , [ 1281931200000 , 33.003367519772] , [ 1282017600000 , 32.308588294911] , [ 1282104000000 , 36.52740247878] , [ 1282190400000 , 34.823914224432] , [ 1282276800000 , 35.284179669701] , [ 1282536000000 , 37.33386457907] , [ 1282622400000 , 37.011312920765] , [ 1282708800000 , 37.482519292702] , [ 1282795200000 , 37.21793966309] , [ 1282881600000 , 36.996733849199] , [ 1283140800000 , 36.479471629722] , [ 1283227200000 , 37.118646226498] , [ 1283313600000 , 34.141100541676] , [ 1283400000000 , 35.329393069044] , [ 1283486400000 , 35.174347212961] , [ 1283832000000 , 35.350859256073] , [ 1283918400000 , 34.889954470079] , [ 1284004800000 , 35.310559501858] , [ 1284091200000 , 35.016168537587] , [ 1284350400000 , 37.800281522275] , [ 1284436800000 , 38.084919146086] , [ 1284523200000 , 38.706035656266] , [ 1284609600000 , 37.410176834377] , [ 1284696000000 , 38.30940484949] , [ 1284955200000 , 38.006662172848] , [ 1285041600000 , 37.842503468038] , [ 1285128000000 , 35.016729658458] , [ 1285214400000 , 34.30026068685] , [ 1285300800000 , 39.128036349933] , [ 1285560000000 , 36.624248018346] , [ 1285646400000 , 39.526177860501] , [ 1285732800000 , 39.274607385689] , [ 1285819200000 , 35.64860868532] , [ 1285905600000 , 35.502171984277] , [ 1286164800000 , 35.507462432145] , [ 1286251200000 , 36.333250983552] , [ 1286337600000 , 39.375460507552] , [ 1286424000000 , 36.791682694467] , [ 1286510400000 , 36.436939194919] , [ 1286769600000 , 33.168861405363] , [ 1286856000000 , 35.126106671538] , [ 1286942400000 , 35.769492391214] , [ 1287028800000 , 34.781032342599] , [ 1287115200000 , 33.595984328638] , [ 1287374400000 , 36.620757294971] , [ 1287460800000 , 32.045463803646] , [ 1287547200000 , 33.352440318755] , [ 1287633600000 , 35.646957750992] , [ 1287720000000 , 36.188989253892] , [ 1287979200000 , 35.095040865863] , [ 1288065600000 , 35.29764383392] , [ 1288152000000 , 35.513587107451] , [ 1288238400000 , 35.166588228279] , [ 1288324800000 , 37.468941664393] , [ 1288584000000 , 37.018195313607] , [ 1288670400000 , 36.769837157924] , [ 1288756800000 , 36.621205716934] , [ 1288843200000 , 37.159399861398] , [ 1288929600000 , 36.868316796882] , [ 1289192400000 , 36.480989334529] , [ 1289278800000 , 36.326900851898] , [ 1289365200000 , 37.932312881325] , [ 1289451600000 , 34.96894496169] , [ 1289538000000 , 38.699835492325] , [ 1289797200000 , 37.029744279617] , [ 1289883600000 , 38.820204421394] , [ 1289970000000 , 38.298942228742] , [ 1290056400000 , 38.262425983355] , [ 1290142800000 , 38.386528810994] , [ 1290402000000 , 38.55883906089] , [ 1290488400000 , 36.540082307385] , [ 1290574800000 , 38.362048307576] , [ 1290747600000 , 38.350927160223] , [ 1291006800000 , 38.527978962647] , [ 1291093200000 , 37.651949459423] , [ 1291179600000 , 38.420457698632] , [ 1291266000000 , 38.646645266104] , [ 1291352400000 , 39.94133910387] , [ 1291611600000 , 39.774321274737] , [ 1291698000000 , 39.568429683539] , [ 1291784400000 , 37.962799739182] , [ 1291870800000 , 37.453389895533] , [ 1291957200000 , 39.20013427121] , [ 1292216400000 , 38.89687408421] , [ 1292302800000 , 39.027177838899] , [ 1292389200000 , 39.235547628996] , [ 1292475600000 , 38.697717239141] , [ 1292562000000 , 38.373248689446] , [ 1292821200000 , 38.428124471379] , [ 1292907600000 , 39.47894657379] , [ 1292994000000 , 39.949932386039] , [ 1293080400000 , 39.505445939108] , [ 1293426000000 , 39.347797168533] , [ 1293512400000 , 39.263075541409] , [ 1293598800000 , 38.898452232755] , [ 1293685200000 , 39.794265989297] , [ 1293771600000 , 36.459297978129] , [ 1294030800000 , 39.340954709459] , [ 1294117200000 , 39.842950846606] , [ 1294203600000 , 39.613143726892] , [ 1294290000000 , 37.45457593678] , [ 1294376400000 , 36.002625602579] , [ 1294635600000 , 37.769790889898] , [ 1294722000000 , 37.743948482854] , [ 1294808400000 , 37.373124527893] , [ 1294894800000 , 35.780001006905] , [ 1294981200000 , 38.593826569236] , [ 1295326800000 , 39.294319653796] , [ 1295413200000 , 35.749095334815] , [ 1295499600000 , 37.413295015199] , [ 1295586000000 , 32.274464409447] , [ 1295845200000 , 32.042931696741] , [ 1295931600000 , 30.136207894781] , [ 1296018000000 , 34.02849822859] , [ 1296104400000 , 35.200263238653] , [ 1296190800000 , 33.75017712943] , [ 1296450000000 , 33.680917154403] , [ 1296536400000 , 33.427662754804] , [ 1296622800000 , 33.898639304486] , [ 1296709200000 , 34.728626887791] , [ 1296795600000 , 35.476700429613] , [ 1297054800000 , 34.262398163765] , [ 1297141200000 , 36.895887296995] , [ 1297227600000 , 35.952386843097] , [ 1297314000000 , 36.291522875947] , [ 1297400400000 , 36.270637938443] , [ 1297659600000 , 36.983900637887] , [ 1297746000000 , 35.942649318742] , [ 1297832400000 , 36.979167437989] , [ 1297918800000 , 38.236849314059] , [ 1298005200000 , 38.767362822905] , [ 1298350800000 , 36.605615067091] , [ 1298437200000 , 35.392619732159] , [ 1298523600000 , 34.233297505701] , [ 1298610000000 , 37.328984263384] , [ 1298869200000 , 37.621664854417] , [ 1298955600000 , 34.671221034312] , [ 1299042000000 , 37.552906425447] , [ 1299128400000 , 34.92286739263] , [ 1299214800000 , 32.56669276663] , [ 1299474000000 , 35.582638804059] , [ 1299560400000 , 35.791012858369] , [ 1299646800000 , 34.548408656259] , [ 1299733200000 , 36.478929399863] , [ 1299819600000 , 36.05214073414] , [ 1300075200000 , 35.980489427851] , [ 1300161600000 , 34.436650239585] , [ 1300248000000 , 36.226495431029] , [ 1300334400000 , 36.997592388008] , [ 1300420800000 , 36.321917153819] , [ 1300680000000 , 38.675907276758] , [ 1300766400000 , 36.219542098038] , [ 1300852800000 , 36.107176745201] , [ 1300939200000 , 36.27800421437] , [ 1301025600000 , 38.445191941016] , [ 1301284800000 , 36.058904142005] , [ 1301371200000 , 36.219633719465] , [ 1301457600000 , 35.870886870251] , [ 1301544000000 , 38.768139162577] , [ 1301630400000 , 34.867996693624] , [ 1301889600000 , 34.963111948772] , [ 1301976000000 , 38.686748378841] , [ 1302062400000 , 37.157436301834] , [ 1302148800000 , 37.90750019482] , [ 1302235200000 , 37.750413181325] , [ 1302494400000 , 37.23279151134] , [ 1302580800000 , 37.600564524123] , [ 1302667200000 , 36.992749572144] , [ 1302753600000 , 36.958951280939] , [ 1302840000000 , 37.479040274722] , [ 1303099200000 , 37.227690423178] , [ 1303185600000 , 37.220808638183] , [ 1303272000000 , 37.764234413811] , [ 1303358400000 , 34.902790681371] , [ 1303704000000 , 34.442429723825] , [ 1303790400000 , 36.664125835231] , [ 1303876800000 , 36.843903427316] , [ 1303963200000 , 36.89956245277] , [ 1304049600000 , 36.653639634918] , [ 1304308800000 , 37.281585907609] , [ 1304395200000 , 34.636725000415] , [ 1304481600000 , 35.111898291533] , [ 1304568000000 , 34.781156562687] , [ 1304654400000 , 34.648338331251] , [ 1304913600000 , 35.739673412394] , [ 1305000000000 , 34.968753860628] , [ 1305086400000 , 35.103101819269] , [ 1305172800000 , 35.388825138354] , [ 1305259200000 , 35.924838674317] , [ 1305518400000 , 34.960820477813] , [ 1305604800000 , 35.973630460062] , [ 1305691200000 , 35.605308175872] , [ 1305777600000 , 37.326832495088] , [ 1305864000000 , 35.889418924143] , [ 1306123200000 , 33.772409521422] , [ 1306209600000 , 34.034402179435] , [ 1306296000000 , 34.200842801862] , [ 1306382400000 , 33.517540222228] , [ 1306468800000 , 36.080834718889] , [ 1306814400000 , 36.465426321256] , [ 1306900800000 , 34.284986433542] , [ 1306987200000 , 34.265134617523] , [ 1307073600000 , 31.028996466799] , [ 1307332800000 , 31.100272438022] , [ 1307419200000 , 30.98271252324] , [ 1307505600000 , 32.957358420477] , [ 1307592000000 , 33.450955741534] , [ 1307678400000 , 34.092762309181] , [ 1307937600000 , 33.081172510602] , [ 1308024000000 , 33.773710576316] , [ 1308110400000 , 33.352918553074] , [ 1308196800000 , 34.015653625477] , [ 1308283200000 , 34.098658792954] , [ 1308542400000 , 33.862591585449] , [ 1308628800000 , 33.97348315542] , [ 1308715200000 , 34.429517374157] , [ 1308801600000 , 34.780309630186] , [ 1308888000000 , 34.231861510064] , [ 1309147200000 , 34.271848439779] , [ 1309233600000 , 34.773956476095] , [ 1309320000000 , 34.821649169869] , [ 1309406400000 , 34.506886225694] , [ 1309492800000 , 33.838287727816] , [ 1309838400000 , 33.058587959516] , [ 1309924800000 , 32.252363370228] , [ 1310011200000 , 34.771520004843] , [ 1310097600000 , 34.905976942129] , [ 1310356800000 , 32.084820014206] , [ 1310443200000 , 31.704912418915] , [ 1310529600000 , 32.448402322535] , [ 1310616000000 , 31.814367556164] , [ 1310702400000 , 31.903271933748] , [ 1310961600000 , 31.835557009452] , [ 1311048000000 , 31.80167207967] , [ 1311134400000 , 32.124432743094] , [ 1311220800000 , 33.38145736179] , [ 1311307200000 , 36.3542103346] , [ 1311566400000 , 36.370937133799] , [ 1311652800000 , 35.40444968471] , [ 1311739200000 , 31.30918374243] , [ 1311825600000 , 31.911828812233] , [ 1311912000000 , 31.933635060916] , [ 1314763200000 , 27.912435953998] , [ 1314849600000 , 27.858955982669] , [ 1314936000000 , 27.590441027541] , [ 1315281600000 , 27.449908969165] , [ 1315368000000 , 28.308087342146] , [ 1315454400000 , 27.864007729814] , [ 1315540800000 , 26.51873970389] , [ 1315800000000 , 25.96088438347] , [ 1315886400000 , 26.445144064307] , [ 1315972800000 , 27.166840190276] , [ 1316059200000 , 27.763808275266] , [ 1316145600000 , 27.868825540656] , [ 1316404800000 , 27.849832930945] , [ 1316491200000 , 27.730622141967] , [ 1316577600000 , 27.021412493534] , [ 1316664000000 , 27.154094213807] , [ 1316750400000 , 27.173678817712] , [ 1317009600000 , 27.25265747808] , [ 1317096000000 , 28.111301933821] , [ 1317182400000 , 27.675088819395] , [ 1317268800000 , 27.397141576077] , [ 1317355200000 , 26.008946860927] , [ 1317614400000 , 22.784250299387] , [ 1317700800000 , 23.258283887907] , [ 1317787200000 , 23.52556109749] , [ 1317873600000 , 24.168011704327] , [ 1317960000000 , 24.189339650432] , [ 1318219200000 , 24.088437144876] , [ 1318305600000 , 25.309729214533] , [ 1318392000000 , 25.621696806823] , [ 1318478400000 , 25.803927533174] , [ 1318564800000 , 25.730135954474] , [ 1318824000000 , 25.232049798745] , [ 1318910400000 , 26.299088396713] , [ 1318996800000 , 26.081177597944] , [ 1319083200000 , 25.744660815696] , [ 1319169600000 , 26.110937113201] , [ 1319428800000 , 26.391894616565] , [ 1319515200000 , 26.163865846148] , [ 1319601600000 , 26.019077042899] , [ 1319688000000 , 25.701251097636] , [ 1319774400000 , 26.033219376512] , [ 1320033600000 , 26.769262371619] , [ 1320120000000 , 28.219781260132] , [ 1320206400000 , 27.875537960411] , [ 1320292800000 , 28.435734918914] , [ 1320379200000 , 28.37695006055] , [ 1320642000000 , 28.386347366617] , [ 1320728400000 , 27.050237610995] , [ 1320814800000 , 28.542924033334] , [ 1320901200000 , 28.707393530494] , [ 1320987600000 , 29.648112657972] , [ 1321246800000 , 29.322949475894] , [ 1321333200000 , 29.377122427588] , [ 1321419600000 , 29.378870071797] , [ 1321506000000 , 28.948532095807] , [ 1321592400000 , 28.595167739804] , [ 1321851600000 , 28.347855177473] , [ 1321938000000 , 28.499102610622] , [ 1322024400000 , 28.422468195549] , [ 1322197200000 , 27.332989897308] , [ 1322456400000 , 28.958514447523] , [ 1322542800000 , 28.890330016953] , [ 1322629200000 , 29.481947822086] , [ 1322715600000 , 27.991357150191] , [ 1322802000000 , 27.941868294165] , [ 1323061200000 , 27.843735865237] , [ 1323147600000 , 26.922176837905] , [ 1323234000000 , 27.015798100333] , [ 1323320400000 , 27.263209224338] , [ 1323406800000 , 26.456838737469] , [ 1323666000000 , 26.401042012447] , [ 1323752400000 , 27.877607635054] , [ 1323838800000 , 27.581039665227] , [ 1323925200000 , 27.2973685004] , [ 1324011600000 , 27.74230960503] , [ 1324270800000 , 27.044483722805] , [ 1324357200000 , 25.93184136956] , [ 1324443600000 , 25.944550738896] , [ 1324530000000 , 26.382111667947] , [ 1324616400000 , 26.049738307156] , [ 1324962000000 , 26.397301203399] , [ 1325048400000 , 26.63948360842] , [ 1325134800000 , 26.503400156535] , [ 1325221200000 , 26.663468520915] , [ 1325566800000 , 20.369010258412] , [ 1325653200000 , 20.535456446317] , [ 1325739600000 , 20.783522487651] , [ 1325826000000 , 20.828880975143] , [ 1326085200000 , 20.743505978852] , [ 1326171600000 , 20.735211928143] , [ 1326258000000 , 20.753245327163] , [ 1326344400000 , 20.467275522023] , [ 1326430800000 , 20.513692945667] , [ 1326776400000 , 20.016627674743] , [ 1326862800000 , 20.311380089956] , [ 1326949200000 , 20.222652145663] , [ 1327035600000 , 18.469927801759] , [ 1327294800000 , 19.107414066951] , [ 1327381200000 , 19.028981070925] , [ 1327467600000 , 18.778563163791] , [ 1327554000000 , 18.843778543884] , [ 1327640400000 , 18.682548355123] , [ 1327899600000 , 18.400166919043] , [ 1327986000000 , 18.846673505431] , [ 1328072400000 , 19.707548431719] , [ 1328158800000 , 22.398912563613] , [ 1328245200000 , 22.563238893325] , [ 1328504400000 , 22.610668580979] , [ 1328590800000 , 22.390423368718] , [ 1328677200000 , 22.235875064032] , [ 1328763600000 , 23.228409867673] , [ 1328850000000 , 23.21464697295] , [ 1329109200000 , 21.256839293262] , [ 1329195600000 , 20.664910881563] , [ 1329282000000 , 23.507289742819] , [ 1329368400000 , 24.54315363805] , [ 1329454800000 , 24.090256296906] , [ 1329800400000 , 21.691318895455] , [ 1329886800000 , 21.300766136539] , [ 1329973200000 , 23.806753141786] , [ 1330059600000 , 22.02174453369] , [ 1330318800000 , 21.488031757223] , [ 1330405200000 , 21.185090645418] , [ 1330491600000 , 21.58010592471] , [ 1330578000000 , 20.258305715091] , [ 1330664400000 , 21.519434160237] , [ 1330923600000 , 21.880533102984] , [ 1331010000000 , 20.969947806067] , [ 1331096400000 , 21.77473350985] , [ 1331182800000 , 21.975645206024] , [ 1331269200000 , 21.659450601544] , [ 1331524800000 , 21.662976187068] , [ 1331611200000 , 20.546200926164] , [ 1331697600000 , 20.61787210687] , [ 1331784000000 , 20.981141819687] , [ 1331870400000 , 20.663082211781] , [ 1332129600000 , 20.915730344473] , [ 1332216000000 , 22.469149441744] , [ 1332302400000 , 20.620749894381] , [ 1332388800000 , 22.60142430917] , [ 1332475200000 , 22.201982491098] , [ 1332734400000 , 21.316314091025] , [ 1332820800000 , 20.496107160055] , [ 1332907200000 , 23.047419596272] , [ 1332993600000 , 22.654311233235] , [ 1333080000000 , 22.337293872246] , [ 1333339200000 , 23.946414462189] , [ 1333425600000 , 24.110745120813] , [ 1333512000000 , 23.590861882963] , [ 1333598400000 , 24.008469053094] , [ 1333944000000 , 23.735343231837] , [ 1334030400000 , 23.619625149045] , [ 1334116800000 , 23.847128526228] , [ 1334203200000 , 23.78838862675] , [ 1334289600000 , 23.900353383736] , [ 1334548800000 , 23.915152008667] , [ 1334635200000 , 23.818198006008] , [ 1334721600000 , 23.526257232307] , [ 1334808000000 , 23.825136627851] , [ 1334894400000 , 23.302821257734] , [ 1335153600000 , 23.783869526542] , [ 1335240000000 , 23.346258102273] , [ 1335326400000 , 23.883709018548] , [ 1335412800000 , 23.912410151809] , [ 1335499200000 , 23.608353554272] , [ 1335758400000 , 24.194447998517]]} , { "key" : "Mid Cap (2B-10B)" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 26.648084176456] , [ 1028174400000 , 27.116997639189] , [ 1028260800000 , 27.682143241035] , [ 1028520000000 , 26.328585368531] , [ 1028606400000 , 27.451781731008] , [ 1028692800000 , 27.791449536659] , [ 1028779200000 , 27.647810531415] , [ 1028865600000 , 27.293929716927] , [ 1029124800000 , 27.651424385712] , [ 1029211200000 , 27.500758469049] , [ 1029297600000 , 26.466118326218] , [ 1029384000000 , 26.8079657638] , [ 1029470400000 , 26.202008808647] , [ 1029729600000 , 26.713696625561] , [ 1029816000000 , 26.712230989619] , [ 1029902400000 , 26.468795174047] , [ 1029988800000 , 26.516121893956] , [ 1030075200000 , 26.677397544384] , [ 1030334400000 , 26.458336073512] , [ 1030420800000 , 25.977179609203] , [ 1030507200000 , 26.161302670868] , [ 1030593600000 , 26.34263386739] , [ 1030680000000 , 25.718024012525] , [ 1031025600000 , 23.775464963408] , [ 1031112000000 , 23.889025011022] , [ 1031198400000 , 24.244411278271] , [ 1031284800000 , 24.236379597202] , [ 1031544000000 , 24.22588790369] , [ 1031630400000 , 24.515838713928] , [ 1031716800000 , 24.471560922442] , [ 1031803200000 , 24.494192997962] , [ 1031889600000 , 24.80641477221] , [ 1032148800000 , 25.13558242538] , [ 1032235200000 , 24.484572575716] , [ 1032321600000 , 24.787900832005] , [ 1032408000000 , 25.285129032109] , [ 1032494400000 , 24.21347294449] , [ 1032753600000 , 24.865146573119] , [ 1032840000000 , 24.895949167994] , [ 1032926400000 , 24.958209375895] , [ 1033012800000 , 24.40791942302] , [ 1033099200000 , 25.142559133677] , [ 1033358400000 , 31.230536644411] , [ 1033444800000 , 34.819823542889] , [ 1033531200000 , 34.333179574062] , [ 1033617600000 , 34.287178467783] , [ 1033704000000 , 36.873290509507] , [ 1033963200000 , 36.4717458661] , [ 1034049600000 , 36.262591569296] , [ 1034136000000 , 33.596990605426] , [ 1034222400000 , 34.739643527467] , [ 1034308800000 , 32.339596477507] , [ 1034568000000 , 32.185294983191] , [ 1034654400000 , 33.972730532713] , [ 1034740800000 , 32.115162022095] , [ 1034827200000 , 32.400596436107] , [ 1034913600000 , 34.39888255219] , [ 1035172800000 , 33.050930329011] , [ 1035259200000 , 33.243540991604] , [ 1035345600000 , 32.976333744211] , [ 1035432000000 , 33.13705540888] , [ 1035518400000 , 33.066464705336] , [ 1035781200000 , 30.751761237254] , [ 1035867600000 , 31.861227321151] , [ 1035954000000 , 31.644607501683] , [ 1036040400000 , 31.608751708151] , [ 1036126800000 , 33.532061296005] , [ 1036386000000 , 34.313784800218] , [ 1036472400000 , 31.874903442376] , [ 1036558800000 , 31.487953307912] , [ 1036645200000 , 31.549115394091] , [ 1036731600000 , 30.813361822779] , [ 1036990800000 , 29.947268330276] , [ 1037077200000 , 30.15204955382] , [ 1037163600000 , 30.545466512856] , [ 1037250000000 , 31.77327516677] , [ 1037336400000 , 31.752640526411] , [ 1037595600000 , 32.067869084328] , [ 1037682000000 , 31.946289665113] , [ 1037768400000 , 31.961630315859] , [ 1037854800000 , 32.455658255339] , [ 1037941200000 , 31.743054374724] , [ 1038200400000 , 32.327086292595] , [ 1038286800000 , 31.611905457775] , [ 1038373200000 , 32.0401033911] , [ 1038546000000 , 34.312573492749] , [ 1038805200000 , 29.62506145048] , [ 1038891600000 , 30.820114674593] , [ 1038978000000 , 30.699362469023] , [ 1039064400000 , 31.016942747677] , [ 1039150800000 , 29.784105737093] , [ 1039410000000 , 30.519749816455] , [ 1039496400000 , 31.147399473958] , [ 1039582800000 , 30.991754253521] , [ 1039669200000 , 31.274414546895] , [ 1039755600000 , 31.07999080185] , [ 1040014800000 , 31.19747022074] , [ 1040101200000 , 31.285375875836] , [ 1040187600000 , 30.887184314729] , [ 1040274000000 , 31.02572697197] , [ 1040360400000 , 30.389838082036] , [ 1040619600000 , 31.187800382938] , [ 1040706000000 , 31.219064410391] , [ 1040878800000 , 30.660338576839] , [ 1040965200000 , 31.782094394828] , [ 1041224400000 , 30.936971432068] , [ 1041310800000 , 32.150719436859] , [ 1041483600000 , 30.857584476619] , [ 1041570000000 , 31.329013086037] , [ 1041829200000 , 33.174429000062] , [ 1041915600000 , 32.516126115097] , [ 1042002000000 , 32.686064630184] , [ 1042088400000 , 31.297729959223] , [ 1042174800000 , 31.036859651468] , [ 1042434000000 , 31.562287184568] , [ 1042520400000 , 30.143471997708] , [ 1042606800000 , 30.254564588906] , [ 1042693200000 , 30.759164657571] , [ 1042779600000 , 32.846416076492] , [ 1043125200000 , 31.631183165124] , [ 1043211600000 , 31.642036756637] , [ 1043298000000 , 31.487404360426] , [ 1043384400000 , 32.157831806068] , [ 1043643600000 , 32.50443310405] , [ 1043730000000 , 33.066167590052] , [ 1043816400000 , 31.6076586863] , [ 1043902800000 , 33.717637512362] , [ 1043989200000 , 31.736501562535] , [ 1044248400000 , 31.864178991732] , [ 1044334800000 , 34.281894385896] , [ 1044421200000 , 32.551421744888] , [ 1044507600000 , 32.05516769272] , [ 1044594000000 , 33.070048876623] , [ 1044853200000 , 31.68130841716] , [ 1044939600000 , 31.634300094534] , [ 1045026000000 , 31.919773482353] , [ 1045112400000 , 31.791489713631] , [ 1045198800000 , 32.03142652115] , [ 1045544400000 , 31.948871479026] , [ 1045630800000 , 31.521873577061] , [ 1045717200000 , 30.904427126658] , [ 1045803600000 , 30.359917173364] , [ 1046062800000 , 31.361922635464] , [ 1046149200000 , 32.001555939897] , [ 1046235600000 , 32.307245785873] , [ 1046322000000 , 30.558578011726] , [ 1046408400000 , 31.033106565683] , [ 1046667600000 , 29.924444910136] , [ 1046754000000 , 29.753177508224] , [ 1046840400000 , 28.940518203418] , [ 1046926800000 , 29.179481983546] , [ 1047013200000 , 29.784664914033] , [ 1047272400000 , 30.753658995783] , [ 1047358800000 , 30.81977861129] , [ 1047445200000 , 29.010312523714] , [ 1047531600000 , 28.943463420531] , [ 1047618000000 , 29.439647264104] , [ 1047877200000 , 29.439167569011] , [ 1047963600000 , 29.739061337633] , [ 1048050000000 , 29.863147322082] , [ 1048136400000 , 29.802951649361] , [ 1048222800000 , 27.675732943194] , [ 1048482000000 , 29.517204549119] , [ 1048568400000 , 29.546753778333] , [ 1048654800000 , 29.33010734911] , [ 1048741200000 , 29.156670464212] , [ 1048827600000 , 29.181366678824] , [ 1049086800000 , 26.538385206639] , [ 1049173200000 , 27.793228667297] , [ 1049259600000 , 27.740130623983] , [ 1049346000000 , 27.073742461823] , [ 1049432400000 , 27.708372088887] , [ 1049688000000 , 27.546409800404] , [ 1049774400000 , 27.109908989978] , [ 1049860800000 , 27.508892052309] , [ 1049947200000 , 27.573024766248] , [ 1050033600000 , 27.562904099803] , [ 1050292800000 , 27.883823957353] , [ 1050379200000 , 26.94243582592] , [ 1050465600000 , 27.30044036495] , [ 1050552000000 , 27.655953950572] , [ 1050897600000 , 28.132830532753] , [ 1050984000000 , 29.145011235441] , [ 1051070400000 , 29.130019130891] , [ 1051156800000 , 27.015243803643] , [ 1051243200000 , 26.934190127075] , [ 1051502400000 , 28.315003336058] , [ 1051588800000 , 28.810881493325] , [ 1051675200000 , 28.874221112727] , [ 1051761600000 , 28.711297712595] , [ 1051848000000 , 29.083225255704] , [ 1052107200000 , 26.320631467029] , [ 1052193600000 , 26.526521297556] , [ 1052280000000 , 24.322739229005] , [ 1052366400000 , 26.486448875014] , [ 1052452800000 , 26.972380031488] , [ 1052712000000 , 24.572217709244] , [ 1052798400000 , 24.051647354042] , [ 1052884800000 , 24.704515259426] , [ 1052971200000 , 24.802337151678] , [ 1053057600000 , 25.582272542621] , [ 1053316800000 , 24.312531647399] , [ 1053403200000 , 24.647022413273] , [ 1053489600000 , 23.790785115662] , [ 1053576000000 , 23.791637931508] , [ 1053662400000 , 24.014901742655] , [ 1054008000000 , 24.842987578224] , [ 1054094400000 , 24.972509328848] , [ 1054180800000 , 25.2052915838] , [ 1054267200000 , 26.15292802979] , [ 1054526400000 , 26.546745648802] , [ 1054612800000 , 25.763233542036] , [ 1054699200000 , 25.862864549934] , [ 1054785600000 , 27.299999516698] , [ 1054872000000 , 26.146104760761] , [ 1055131200000 , 26.038996269704] , [ 1055217600000 , 26.412318690367] , [ 1055304000000 , 27.33266075208] , [ 1055390400000 , 27.382021008308] , [ 1055476800000 , 27.31130922726] , [ 1055736000000 , 27.387763132386] , [ 1055822400000 , 27.164485352963] , [ 1055908800000 , 26.81380256074] , [ 1055995200000 , 27.098002966452] , [ 1056081600000 , 26.953852590721] , [ 1056340800000 , 27.999474337505] , [ 1056427200000 , 27.633585949698] , [ 1056513600000 , 26.105925993639] , [ 1056600000000 , 26.058206775338] , [ 1056686400000 , 26.020371871416] , [ 1056945600000 , 27.552446360948] , [ 1057032000000 , 28.042342288887] , [ 1057118400000 , 28.535637322137] , [ 1057204800000 , 27.815165463839] , [ 1057550400000 , 28.293810845449] , [ 1057636800000 , 28.690428979622] , [ 1057723200000 , 27.21316794978] , [ 1057809600000 , 28.388052532971] , [ 1057896000000 , 28.386478218302] , [ 1058155200000 , 28.513862181386] , [ 1058241600000 , 28.921923352876] , [ 1058328000000 , 28.445619931358] , [ 1058414400000 , 28.45776233459] , [ 1058500800000 , 28.493241492587] , [ 1058760000000 , 27.161566369607] , [ 1058846400000 , 27.845806722341] , [ 1058932800000 , 28.2333271465] , [ 1059019200000 , 28.335018123813] , [ 1059105600000 , 28.480536520454] , [ 1059364800000 , 27.792426576494] , [ 1059451200000 , 28.643490353063] , [ 1059537600000 , 27.998590255814] , [ 1059624000000 , 28.307138125836] , [ 1059710400000 , 28.489281688192] , [ 1059969600000 , 28.044634410417] , [ 1060056000000 , 27.020593958804] , [ 1060142400000 , 29.024222641301] , [ 1060228800000 , 26.036740734775] , [ 1060315200000 , 25.532181247911] , [ 1060574400000 , 25.645288355925] , [ 1060660800000 , 25.584847141052] , [ 1060747200000 , 25.942202403911] , [ 1060833600000 , 26.037906674446] , [ 1060920000000 , 26.044720884667] , [ 1061179200000 , 27.122254948494] , [ 1061265600000 , 25.827274343473] , [ 1061352000000 , 26.367693760724] , [ 1061438400000 , 25.998713594962] , [ 1061524800000 , 25.870535462403] , [ 1061784000000 , 26.150778762061] , [ 1061870400000 , 26.085352003286] , [ 1061956800000 , 25.675758155341] , [ 1062043200000 , 26.913635716641] , [ 1062129600000 , 27.430709689662] , [ 1062475200000 , 26.836649211344] , [ 1062561600000 , 27.003749563166] , [ 1062648000000 , 26.700136753919] , [ 1062734400000 , 26.503633048643] , [ 1062993600000 , 26.519318552404] , [ 1063080000000 , 27.285791831463] , [ 1063166400000 , 26.56305235234] , [ 1063252800000 , 26.1211074658] , [ 1063339200000 , 26.701814569981] , [ 1063598400000 , 26.392227803794] , [ 1063684800000 , 26.463534553542] , [ 1063771200000 , 26.780820975165] , [ 1063857600000 , 26.453794119195] , [ 1063944000000 , 27.190797475635] , [ 1064203200000 , 26.536715823385] , [ 1064289600000 , 26.711951315753] , [ 1064376000000 , 24.939511077055] , [ 1064462400000 , 27.667788937619] , [ 1064548800000 , 27.72901664558] , [ 1064808000000 , 26.281401578938] , [ 1064894400000 , 20.702580373982] , [ 1064980800000 , 20.841885584242] , [ 1065067200000 , 21.260031120312] , [ 1065153600000 , 21.358844449436] , [ 1065412800000 , 21.55964477357] , [ 1065499200000 , 22.004611721363] , [ 1065585600000 , 22.876683783608] , [ 1065672000000 , 22.647462885851] , [ 1065758400000 , 22.930614232732] , [ 1066017600000 , 21.843025326727] , [ 1066104000000 , 21.386322937833] , [ 1066190400000 , 21.614282293797] , [ 1066276800000 , 21.275818295071] , [ 1066363200000 , 21.459743238568] , [ 1066622400000 , 22.173684640338] , [ 1066708800000 , 22.401746834289] , [ 1066795200000 , 22.437817143687] , [ 1066881600000 , 22.106579104852] , [ 1066968000000 , 22.55318869793] , [ 1067230800000 , 22.417348405754] , [ 1067317200000 , 24.338272474386] , [ 1067403600000 , 23.882781220497] , [ 1067490000000 , 24.350055143818] , [ 1067576400000 , 24.256623353787] , [ 1067835600000 , 23.430771613568] , [ 1067922000000 , 23.43425345774] , [ 1068008400000 , 23.488064824779] , [ 1068094800000 , 23.813639817594] , [ 1068181200000 , 24.089718459028] , [ 1068440400000 , 23.217253153951] , [ 1068526800000 , 23.128853965563] , [ 1068613200000 , 21.229600372837] , [ 1068699600000 , 21.702481673977] , [ 1068786000000 , 22.746321941367] , [ 1069045200000 , 22.603454460411] , [ 1069131600000 , 22.682972242364] , [ 1069218000000 , 22.560376930243] , [ 1069304400000 , 22.788902916352] , [ 1069390800000 , 23.007106428771] , [ 1069650000000 , 21.199579855833] , [ 1069736400000 , 19.883676019205] , [ 1069822800000 , 20.506726149966] , [ 1069995600000 , 20.480467772447] , [ 1070254800000 , 21.298549366564] , [ 1070341200000 , 21.522901636605] , [ 1070427600000 , 20.974323682087] , [ 1070514000000 , 20.610493547569] , [ 1070600400000 , 21.071833789601] , [ 1070859600000 , 20.65853211585] , [ 1070946000000 , 22.641747961132] , [ 1071032400000 , 22.761492869515] , [ 1071118800000 , 22.638825596471] , [ 1071205200000 , 22.628354730159] , [ 1071464400000 , 22.830598061484] , [ 1071550800000 , 21.981392329159] , [ 1071637200000 , 22.287526572018] , [ 1071723600000 , 20.435466158113] , [ 1071810000000 , 22.135877815707] , [ 1072069200000 , 20.641908166412] , [ 1072155600000 , 20.604041757621] , [ 1072242000000 , 20.482513717754] , [ 1072414800000 , 20.859034129798] , [ 1072674000000 , 20.821456194651] , [ 1072760400000 , 20.767946553306] , [ 1072846800000 , 21.512414318535] , [ 1073019600000 , 21.815071893188] , [ 1073278800000 , 22.57027016871] , [ 1073365200000 , 22.362924996309] , [ 1073451600000 , 23.112960982896] , [ 1073538000000 , 23.183160792627] , [ 1073624400000 , 22.762724376465] , [ 1073883600000 , 23.130840901013] , [ 1073970000000 , 22.736456202276] , [ 1074056400000 , 23.323176939802] , [ 1074142800000 , 23.491149448881] , [ 1074229200000 , 23.632601297431] , [ 1074574800000 , 23.596027440961] , [ 1074661200000 , 23.730507370484] , [ 1074747600000 , 23.731539839131] , [ 1074834000000 , 23.670710782986] , [ 1075093200000 , 23.711864028891] , [ 1075179600000 , 23.710536645288] , [ 1075266000000 , 23.422349765442] , [ 1075352400000 , 22.897866978853] , [ 1075438800000 , 23.59903446311] , [ 1075698000000 , 24.304597455649] , [ 1075784400000 , 24.530581915524] , [ 1075870800000 , 24.666816160857] , [ 1075957200000 , 24.3699656412] , [ 1076043600000 , 24.718383579187] , [ 1076302800000 , 24.435361394139] , [ 1076389200000 , 24.716746266706] , [ 1076475600000 , 24.703215277236] , [ 1076562000000 , 24.462111914705] , [ 1076648400000 , 24.517491525145] , [ 1076994000000 , 24.65285871564] , [ 1077080400000 , 24.536403534258] , [ 1077166800000 , 23.441101800032] , [ 1077253200000 , 23.292247202584] , [ 1077512400000 , 24.673949618453] , [ 1077598800000 , 23.982506533513] , [ 1077685200000 , 24.563555008109] , [ 1077771600000 , 24.842379416268] , [ 1077858000000 , 24.598095251264] , [ 1078117200000 , 25.169288052086] , [ 1078203600000 , 23.873252187745] , [ 1078290000000 , 23.752511055326] , [ 1078376400000 , 23.298036944926] , [ 1078462800000 , 23.581947969401] , [ 1078722000000 , 23.53180827683] , [ 1078808400000 , 23.366844938769] , [ 1078894800000 , 24.353234002561] , [ 1078981200000 , 24.45805021653] , [ 1079067600000 , 24.279776894705] , [ 1079326800000 , 24.546012368839] , [ 1079413200000 , 24.484539293696] , [ 1079499600000 , 24.639325428832] , [ 1079586000000 , 22.205228203619] , [ 1079672400000 , 24.13905314141] , [ 1079931600000 , 21.943259105263] , [ 1080018000000 , 23.859385198169] , [ 1080104400000 , 24.409155043097] , [ 1080190800000 , 22.206410046771] , [ 1080277200000 , 22.242610418717] , [ 1080536400000 , 22.271628713517] , [ 1080622800000 , 22.120605105342] , [ 1080709200000 , 20.422027455951] , [ 1080795600000 , 20.602019095325] , [ 1080882000000 , 20.351415999528] , [ 1081137600000 , 20.546189995804] , [ 1081224000000 , 20.839378775748] , [ 1081310400000 , 21.529862280853] , [ 1081396800000 , 20.640624506057] , [ 1081742400000 , 20.716224328592] , [ 1081828800000 , 20.306236152751] , [ 1081915200000 , 20.773071221448] , [ 1082001600000 , 20.430042140281] , [ 1082088000000 , 20.542455723128] , [ 1082347200000 , 20.519223045686] , [ 1082433600000 , 20.64121284046] , [ 1082520000000 , 20.795652975678] , [ 1082606400000 , 20.793362696806] , [ 1082692800000 , 20.655652288275] , [ 1082952000000 , 20.614304378368] , [ 1083038400000 , 21.540868061704] , [ 1083124800000 , 21.100087713507] , [ 1083211200000 , 21.706861416669] , [ 1083297600000 , 21.821943169274] , [ 1083556800000 , 22.219548134081] , [ 1083643200000 , 22.076399309175] , [ 1083729600000 , 22.273179568579] , [ 1083816000000 , 22.175618380383] , [ 1083902400000 , 22.48996404722] , [ 1084161600000 , 21.664419955681] , [ 1084248000000 , 21.706310443164] , [ 1084334400000 , 23.698514687206] , [ 1084420800000 , 23.155670723188] , [ 1084507200000 , 22.719400449948] , [ 1084766400000 , 22.701867709153] , [ 1084852800000 , 20.915448504352] , [ 1084939200000 , 21.841096759482] , [ 1085025600000 , 21.153589250298] , [ 1085112000000 , 21.848744488386] , [ 1085371200000 , 21.981167694465] , [ 1085457600000 , 22.351726653608] , [ 1085544000000 , 21.989843194271] , [ 1085630400000 , 21.863944994199] , [ 1085716800000 , 21.992763926844] , [ 1086062400000 , 22.015250077718] , [ 1086148800000 , 21.611987080217] , [ 1086235200000 , 21.788359777903] , [ 1086321600000 , 21.865326769938] , [ 1086580800000 , 22.169677747023] , [ 1086667200000 , 22.255792326642] , [ 1086753600000 , 21.815057760968] , [ 1086840000000 , 22.079460749227] , [ 1087185600000 , 21.718833087059] , [ 1087272000000 , 22.054574375237] , [ 1087358400000 , 22.077928074568] , [ 1087444800000 , 20.286091937413] , [ 1087531200000 , 19.961563180367] , [ 1087790400000 , 20.142341027021] , [ 1087876800000 , 20.480696517221] , [ 1087963200000 , 19.568662720709] , [ 1088049600000 , 19.938945601387] , [ 1088136000000 , 19.15896941301] , [ 1088395200000 , 19.359487306427] , [ 1088481600000 , 18.342316846577] , [ 1088568000000 , 20.269511969126] , [ 1088654400000 , 19.853264793737] , [ 1088740800000 , 19.681572657923] , [ 1089086400000 , 19.511709418823] , [ 1089172800000 , 20.466949099506] , [ 1089259200000 , 21.997027219347] , [ 1089345600000 , 21.866188592113] , [ 1089604800000 , 21.777774027231] , [ 1089691200000 , 19.974660010341] , [ 1089777600000 , 20.262276003674] , [ 1089864000000 , 20.000610531766] , [ 1089950400000 , 19.521022147143] , [ 1090209600000 , 19.63746824233] , [ 1090296000000 , 20.511108907082] , [ 1090382400000 , 19.622834697758] , [ 1090468800000 , 20.440082709942] , [ 1090555200000 , 20.309018221836] , [ 1090814400000 , 19.31915943842] , [ 1090900800000 , 19.987560974175] , [ 1090987200000 , 18.383361565925] , [ 1091073600000 , 18.649058503758] , [ 1091160000000 , 18.521598662065] , [ 1091419200000 , 21.508218211147] , [ 1091505600000 , 21.421423610955] , [ 1091592000000 , 20.937252485663] , [ 1091678400000 , 20.55942501228] , [ 1091764800000 , 21.492327213057] , [ 1092024000000 , 20.428889988927] , [ 1092110400000 , 20.208000809495] , [ 1092196800000 , 21.073081835022] , [ 1092283200000 , 20.516709647732] , [ 1092369600000 , 20.494092920092] , [ 1092628800000 , 20.594653940425] , [ 1092715200000 , 21.981492718129] , [ 1092801600000 , 22.263197716196] , [ 1092888000000 , 21.913232408644] , [ 1092974400000 , 22.327152260303] , [ 1093233600000 , 21.823160490922] , [ 1093320000000 , 21.974020889413] , [ 1093406400000 , 20.969139180401] , [ 1093492800000 , 20.700113185983] , [ 1093579200000 , 20.995130774321] , [ 1093838400000 , 20.777557031366] , [ 1093924800000 , 21.338984500788] , [ 1094011200000 , 20.943168738285] , [ 1094097600000 , 20.387547324159] , [ 1094184000000 , 19.90447909376] , [ 1094529600000 , 20.410382693655] , [ 1094616000000 , 21.044187342993] , [ 1094702400000 , 20.916719632161] , [ 1094788800000 , 21.087327989672] , [ 1095048000000 , 21.535574000586] , [ 1095134400000 , 21.350278335134] , [ 1095220800000 , 19.259910059761] , [ 1095307200000 , 19.157055297116] , [ 1095393600000 , 18.55929133156] , [ 1095652800000 , 19.541945777775] , [ 1095739200000 , 19.571330603031] , [ 1095825600000 , 20.055020386358] , [ 1095912000000 , 20.370836828915] , [ 1095998400000 , 20.217795317429] , [ 1096257600000 , 20.237567086164] , [ 1096344000000 , 20.252663243133] , [ 1096430400000 , 20.554487157796] , [ 1096516800000 , 23.551279458767] , [ 1096603200000 , 23.976684313083] , [ 1096862400000 , 23.994067797713] , [ 1096948800000 , 23.847100999095] , [ 1097035200000 , 22.618851476996] , [ 1097121600000 , 21.918401702113] , [ 1097208000000 , 22.820396271098] , [ 1097467200000 , 22.405577488046] , [ 1097553600000 , 22.589819485406] , [ 1097640000000 , 22.562492142783] , [ 1097726400000 , 22.257761745121] , [ 1097812800000 , 22.753995001525] , [ 1098072000000 , 22.253093413163] , [ 1098158400000 , 22.669396781078] , [ 1098244800000 , 23.145817485586] , [ 1098331200000 , 22.806172342982] , [ 1098417600000 , 22.982721082827] , [ 1098676800000 , 23.188065641347] , [ 1098763200000 , 23.240765686738] , [ 1098849600000 , 22.304383206889] , [ 1098936000000 , 22.387804835083] , [ 1099022400000 , 23.997242736394] , [ 1099285200000 , 23.460596038298] , [ 1099371600000 , 23.382857460859] , [ 1099458000000 , 21.362278361628] , [ 1099544400000 , 21.143413395171] , [ 1099630800000 , 22.804629852184] , [ 1099890000000 , 22.753114153754] , [ 1099976400000 , 22.308729960497] , [ 1100062800000 , 22.272746270522] , [ 1100149200000 , 22.783245203563] , [ 1100235600000 , 22.775890353402] , [ 1100494800000 , 23.185607588444] , [ 1100581200000 , 21.82940204288] , [ 1100667600000 , 22.502820291752] , [ 1100754000000 , 22.379850354445] , [ 1100840400000 , 22.110429953837] , [ 1101099600000 , 22.361674556137] , [ 1101186000000 , 22.524275023246] , [ 1101272400000 , 21.900581820709] , [ 1101445200000 , 22.207349930847] , [ 1101704400000 , 21.881549405226] , [ 1101790800000 , 21.957633120137] , [ 1101877200000 , 22.17044864181] , [ 1101963600000 , 22.367574253815] , [ 1102050000000 , 22.951463592937] , [ 1102309200000 , 22.625931538911] , [ 1102395600000 , 22.103955906661] , [ 1102482000000 , 22.477792270248] , [ 1102568400000 , 22.720055377838] , [ 1102654800000 , 22.224601841384] , [ 1102914000000 , 22.177799754552] , [ 1103000400000 , 22.244472319539] , [ 1103086800000 , 21.896264211113] , [ 1103173200000 , 22.123605635153] , [ 1103259600000 , 22.89824049466] , [ 1103518800000 , 22.769850681045] , [ 1103605200000 , 23.101152533444] , [ 1103691600000 , 23.2474702024] , [ 1103778000000 , 23.353202546032] , [ 1104123600000 , 23.428164773161] , [ 1104210000000 , 23.761469178488] , [ 1104296400000 , 23.811970227979] , [ 1104382800000 , 22.053645988557] , [ 1104469200000 , 23.837387874446] , [ 1104728400000 , 22.788311956343] , [ 1104814800000 , 21.807013473423] , [ 1104901200000 , 23.986372267338] , [ 1104987600000 , 23.976865205686] , [ 1105074000000 , 23.903509394576] , [ 1105333200000 , 22.97018705308] , [ 1105419600000 , 23.039731567803] , [ 1105506000000 , 23.659672985194] , [ 1105592400000 , 23.099645411716] , [ 1105678800000 , 22.537574705101] , [ 1106024400000 , 22.870818294533] , [ 1106110800000 , 24.197816964489] , [ 1106197200000 , 23.92017568689] , [ 1106283600000 , 24.066318801579] , [ 1106542800000 , 23.690023027687] , [ 1106629200000 , 23.596535406577] , [ 1106715600000 , 23.69520786371] , [ 1106802000000 , 24.084768548503] , [ 1106888400000 , 23.472591746154] , [ 1107147600000 , 22.546788621649] , [ 1107234000000 , 23.258045524898] , [ 1107320400000 , 23.216119162924] , [ 1107406800000 , 22.562228457933] , [ 1107493200000 , 22.363221625111] , [ 1107752400000 , 22.135666602378] , [ 1107838800000 , 22.220582004241] , [ 1107925200000 , 22.34963059199] , [ 1108011600000 , 22.872322857378] , [ 1108098000000 , 23.437452894462] , [ 1108357200000 , 22.12470095394] , [ 1108443600000 , 22.231211800286] , [ 1108530000000 , 21.7623736718] , [ 1108616400000 , 22.678095212729] , [ 1108702800000 , 22.96419372684] , [ 1109048400000 , 25.194184014782] , [ 1109134800000 , 23.132155670989] , [ 1109221200000 , 23.32188574281] , [ 1109307600000 , 23.116590039209] , [ 1109566800000 , 22.941121998064] , [ 1109653200000 , 21.518588948441] , [ 1109739600000 , 22.036821237653] , [ 1109826000000 , 21.983362614837] , [ 1109912400000 , 22.64515258502] , [ 1110171600000 , 22.658965476441] , [ 1110258000000 , 22.336282873465] , [ 1110344400000 , 22.388967594312] , [ 1110430800000 , 22.81179971949] , [ 1110517200000 , 22.784722730406] , [ 1110776400000 , 22.260745763138] , [ 1110862800000 , 21.192545888542] , [ 1110949200000 , 21.513100107271] , [ 1111035600000 , 21.287356305789] , [ 1111122000000 , 21.737978227449] , [ 1111381200000 , 21.292088037944] , [ 1111467600000 , 21.822512541657] , [ 1111554000000 , 20.593097352624] , [ 1111640400000 , 21.347244824426] , [ 1111986000000 , 21.292296795504] , [ 1112072400000 , 20.933943553941] , [ 1112158800000 , 20.830648761139] , [ 1112245200000 , 20.008554354127] , [ 1112331600000 , 19.92222915956] , [ 1112587200000 , 19.651651647091] , [ 1112673600000 , 20.120343420289] , [ 1112760000000 , 19.777429658139] , [ 1112846400000 , 20.278760776431] , [ 1112932800000 , 19.852527364032] , [ 1113192000000 , 19.839957016294] , [ 1113278400000 , 20.060937152412] , [ 1113364800000 , 20.06798565859] , [ 1113451200000 , 19.739108617765] , [ 1113537600000 , 23.788284066979] , [ 1113796800000 , 22.566198442222] , [ 1113883200000 , 22.971099000729] , [ 1113969600000 , 23.069732791997] , [ 1114056000000 , 20.74096636037] , [ 1114142400000 , 22.809896306774] , [ 1114401600000 , 20.731529875719] , [ 1114488000000 , 22.882080877214] , [ 1114574400000 , 22.517347154116] , [ 1114660800000 , 23.411749917799] , [ 1114747200000 , 23.179090395579] , [ 1115006400000 , 23.557588377455] , [ 1115092800000 , 23.886047322364] , [ 1115179200000 , 23.949310371861] , [ 1115265600000 , 24.780835951678] , [ 1115352000000 , 23.849139180298] , [ 1115611200000 , 24.148953841482] , [ 1115697600000 , 24.329921634899] , [ 1115784000000 , 23.811114041933] , [ 1115870400000 , 23.788434616607] , [ 1115956800000 , 23.637715949708] , [ 1116216000000 , 23.64119689408] , [ 1116302400000 , 23.317120748076] , [ 1116388800000 , 23.812467556809] , [ 1116475200000 , 23.982405110173] , [ 1116561600000 , 24.18195432891] , [ 1116820800000 , 24.391170829899] , [ 1116907200000 , 23.841528877118] , [ 1116993600000 , 24.077109245959] , [ 1117080000000 , 22.201608086741] , [ 1117166400000 , 22.504790286828] , [ 1117512000000 , 22.630013569882] , [ 1117598400000 , 23.404504964627] , [ 1117684800000 , 23.085126228411] , [ 1117771200000 , 23.248690401656] , [ 1118030400000 , 23.256393641191] , [ 1118116800000 , 22.992919096426] , [ 1118203200000 , 23.191344100376] , [ 1118289600000 , 23.450139310017] , [ 1118376000000 , 23.324442615572] , [ 1118635200000 , 22.692106000531] , [ 1118721600000 , 21.957901717703] , [ 1118808000000 , 22.147872546362] , [ 1118894400000 , 21.79469943148] , [ 1118980800000 , 22.451958641293] , [ 1119240000000 , 22.350189888996] , [ 1119326400000 , 22.631704280603] , [ 1119412800000 , 22.427528094471] , [ 1119499200000 , 23.893835996089] , [ 1119585600000 , 23.988748698062] , [ 1119844800000 , 23.642649928892] , [ 1119931200000 , 24.068830987644] , [ 1120017600000 , 22.56720246359] , [ 1120104000000 , 24.99546628123] , [ 1120190400000 , 25.432726047103] , [ 1120536000000 , 24.43938948648] , [ 1120622400000 , 24.405779589083] , [ 1120708800000 , 24.111011393052] , [ 1120795200000 , 24.922837089358] , [ 1121054400000 , 24.927636707745] , [ 1121140800000 , 25.057917770825] , [ 1121227200000 , 24.937420101241] , [ 1121313600000 , 24.347875097745] , [ 1121400000000 , 24.574171592274] , [ 1121659200000 , 25.126013408294] , [ 1121745600000 , 25.072686421877] , [ 1121832000000 , 25.260821456271] , [ 1121918400000 , 25.596953542222] , [ 1122004800000 , 25.400792209182] , [ 1122264000000 , 24.666446433239] , [ 1122350400000 , 24.295277154765] , [ 1122436800000 , 25.089285481028] , [ 1122523200000 , 24.646806032674] , [ 1122609600000 , 24.356572428261] , [ 1122868800000 , 24.960683351891] , [ 1122955200000 , 25.549325757663] , [ 1123041600000 , 24.857664787272] , [ 1123128000000 , 25.150041173383] , [ 1123214400000 , 24.995124853776] , [ 1123473600000 , 24.990431320091] , [ 1123560000000 , 24.921532875771] , [ 1123646400000 , 25.362268036527] , [ 1123732800000 , 25.476200567557] , [ 1123819200000 , 25.244869684751] , [ 1124078400000 , 24.603016226183] , [ 1124164800000 , 23.704556481194] , [ 1124251200000 , 23.930714530168] , [ 1124337600000 , 23.702280717649] , [ 1124424000000 , 23.705926771363] , [ 1124683200000 , 23.745261019884] , [ 1124769600000 , 23.867675301904] , [ 1124856000000 , 24.480843532077] , [ 1124942400000 , 24.312361431187] , [ 1125028800000 , 24.488714153619] , [ 1125288000000 , 24.629809223467] , [ 1125374400000 , 24.47746750507] , [ 1125460800000 , 24.755638469166] , [ 1125547200000 , 25.427672976097] , [ 1125633600000 , 25.566055004721] , [ 1125979200000 , 25.676251654072] , [ 1126065600000 , 25.476497276393] , [ 1126152000000 , 26.017560468242] , [ 1126238400000 , 25.936127483998] , [ 1126497600000 , 26.059067318757] , [ 1126584000000 , 26.284790827713] , [ 1126670400000 , 26.097946527127] , [ 1126756800000 , 25.680994571817] , [ 1126843200000 , 25.219982882669] , [ 1127102400000 , 25.55341971956] , [ 1127188800000 , 25.95323179712] , [ 1127275200000 , 25.855639605436] , [ 1127361600000 , 25.302671014838] , [ 1127448000000 , 24.782969567936] , [ 1127707200000 , 24.485978295222] , [ 1127793600000 , 24.664161317193] , [ 1127880000000 , 24.922683972665] , [ 1127966400000 , 25.469475014745] , [ 1128052800000 , 31.832884219976] , [ 1128312000000 , 32.00422580579] , [ 1128398400000 , 31.012733149942] , [ 1128484800000 , 32.033755296739] , [ 1128571200000 , 32.226636515833] , [ 1128657600000 , 31.652895338555] , [ 1128916800000 , 31.825012326964] , [ 1129003200000 , 31.003476019696] , [ 1129089600000 , 31.314384992653] , [ 1129176000000 , 31.341523171026] , [ 1129262400000 , 31.784200797751] , [ 1129521600000 , 31.669952219428] , [ 1129608000000 , 31.347254597222] , [ 1129694400000 , 12.206145055635] , [ 1129780800000 , 31.473510862669] , [ 1129867200000 , 31.747099002924] , [ 1130126400000 , 31.240274960436] , [ 1130212800000 , 31.64073694867] , [ 1130299200000 , 30.801027283176] , [ 1130385600000 , 30.796451968504] , [ 1130472000000 , 31.172932024164] , [ 1130734800000 , 30.647152131554] , [ 1130821200000 , 32.072706192157] , [ 1130907600000 , 31.739864656074] , [ 1130994000000 , 32.036063794022] , [ 1131080400000 , 31.611909237799] , [ 1131339600000 , 31.733674153563] , [ 1131426000000 , 31.732636705805] , [ 1131512400000 , 32.415362885413] , [ 1131598800000 , 32.278446544564] , [ 1131685200000 , 31.097010842233] , [ 1131944400000 , 30.99444301525] , [ 1132030800000 , 31.710452266737] , [ 1132117200000 , 32.48348819077] , [ 1132203600000 , 32.073362093399] , [ 1132290000000 , 33.313418034733] , [ 1132549200000 , 31.961243771265] , [ 1132635600000 , 31.562791158413] , [ 1132722000000 , 31.53021860319] , [ 1132894800000 , 34.624189379868] , [ 1133154000000 , 32.084379040372] , [ 1133240400000 , 31.9765423891] , [ 1133326800000 , 31.984162231546] , [ 1133413200000 , 32.152674569961] , [ 1133499600000 , 31.778285608807] , [ 1133758800000 , 29.121258778258] , [ 1133845200000 , 29.311834594144] , [ 1133931600000 , 29.650199558715] , [ 1134018000000 , 29.092234692016] , [ 1134104400000 , 29.800109677029] , [ 1134363600000 , 32.085120881319] , [ 1134450000000 , 32.248988955359] , [ 1134536400000 , 30.256165327387] , [ 1134622800000 , 30.608185174303] , [ 1134709200000 , 30.412991147462] , [ 1134968400000 , 30.248358312013] , [ 1135054800000 , 29.912369358773] , [ 1135141200000 , 33.551554121293] , [ 1135227600000 , 33.533186466516] , [ 1135314000000 , 33.091647974802] , [ 1135659600000 , 33.264255806196] , [ 1135746000000 , 33.003638760148] , [ 1135832400000 , 32.514283805821] , [ 1135918800000 , 33.337098779692] , [ 1136264400000 , 25.529659425176] , [ 1136350800000 , 25.253503759086] , [ 1136437200000 , 25.667680592413] , [ 1136523600000 , 24.610404212038] , [ 1136782800000 , 24.461908447457] , [ 1136869200000 , 25.437119226817] , [ 1136955600000 , 24.943578431236] , [ 1137042000000 , 25.274617951881] , [ 1137128400000 , 25.84747162676] , [ 1137474000000 , 26.075536395048] , [ 1137560400000 , 26.708344152786] , [ 1137646800000 , 25.383003293955] , [ 1137733200000 , 25.217383650095] , [ 1137992400000 , 25.353115329768] , [ 1138078800000 , 24.954360264848] , [ 1138165200000 , 28.654765223046] , [ 1138251600000 , 28.302769507639] , [ 1138338000000 , 28.373032404194] , [ 1138597200000 , 28.163052677131] , [ 1138683600000 , 28.727503894285] , [ 1138770000000 , 28.027756157079] , [ 1138856400000 , 27.361031538257] , [ 1138942800000 , 27.402647471714] , [ 1139202000000 , 28.044230467152] , [ 1139288400000 , 28.476547862179] , [ 1139374800000 , 28.050624829875] , [ 1139461200000 , 27.915505499367] , [ 1139547600000 , 28.08611170798] , [ 1139806800000 , 28.97859125833] , [ 1139893200000 , 28.104813549959] , [ 1139979600000 , 28.240980412935] , [ 1140066000000 , 27.743968162571] , [ 1140152400000 , 27.558960443884] , [ 1140498000000 , 27.536228528067] , [ 1140584400000 , 27.500557062883] , [ 1140670800000 , 27.692039081654] , [ 1140757200000 , 27.490318497037] , [ 1141016400000 , 28.829156436114] , [ 1141102800000 , 28.450987148788] , [ 1141189200000 , 40.300330617069] , [ 1141275600000 , 41.570351501256] , [ 1141362000000 , 41.667844279089] , [ 1141621200000 , 41.607343966493] , [ 1141707600000 , 41.36959508335] , [ 1141794000000 , 41.232428456817] , [ 1141880400000 , 41.750224269446] , [ 1141966800000 , 40.821963504302] , [ 1142226000000 , 41.578527293958] , [ 1142312400000 , 41.902604471024] , [ 1142398800000 , 41.149491513676] , [ 1142485200000 , 41.175604953961] , [ 1142571600000 , 41.163121565507] , [ 1142830800000 , 40.016639353266] , [ 1142917200000 , 39.659732705306] , [ 1143003600000 , 39.584676122637] , [ 1143090000000 , 40.025666971014] , [ 1143176400000 , 39.723854886209] , [ 1143435600000 , 39.014198466242] , [ 1143522000000 , 39.025897365059] , [ 1143608400000 , 39.078011489583] , [ 1143694800000 , 39.194042018535] , [ 1143781200000 , 25.076401031907] , [ 1144036800000 , 24.749688897839] , [ 1144123200000 , 25.106301697735] , [ 1144209600000 , 25.719552294762] , [ 1144296000000 , 24.4332655269] , [ 1144382400000 , 24.362292535219] , [ 1144641600000 , 24.443115329917] , [ 1144728000000 , 24.629965330443] , [ 1144814400000 , 25.053676431536] , [ 1144900800000 , 25.553338423704] , [ 1145246400000 , 24.63853864188] , [ 1145332800000 , 24.640317578802] , [ 1145419200000 , 24.389045546756] , [ 1145505600000 , 24.264180514695] , [ 1145592000000 , 23.981966140907] , [ 1145851200000 , 23.869146013505] , [ 1145937600000 , 24.612899719958] , [ 1146024000000 , 24.553311510502] , [ 1146110400000 , 24.67686844737] , [ 1146196800000 , 24.042753146623] , [ 1146456000000 , 24.140870164853] , [ 1146542400000 , 24.381493813662] , [ 1146628800000 , 24.029031908064] , [ 1146715200000 , 21.242925011363] , [ 1146801600000 , 20.769286660932] , [ 1147060800000 , 21.141317449459] , [ 1147147200000 , 21.388633580721] , [ 1147233600000 , 20.953082345138] , [ 1147320000000 , 20.532372329159] , [ 1147406400000 , 24.303360340406] , [ 1147665600000 , 23.590839359023] , [ 1147752000000 , 23.266631012228] , [ 1147838400000 , 25.052914966934] , [ 1147924800000 , 25.043763466197] , [ 1148011200000 , 24.548527215889] , [ 1148270400000 , 24.722438408718] , [ 1148356800000 , 25.214561242106] , [ 1148443200000 , 25.634570272733] , [ 1148529600000 , 25.647165201314] , [ 1148616000000 , 25.753544167487] , [ 1148961600000 , 25.149343939348] , [ 1149048000000 , 26.854823654435] , [ 1149134400000 , 25.548585529681] , [ 1149220800000 , 26.37727083555] , [ 1149480000000 , 25.389475260201] , [ 1149566400000 , 25.396658724273] , [ 1149652800000 , 25.711045371603] , [ 1149739200000 , 26.090075952526] , [ 1149825600000 , 26.589623865854] , [ 1150084800000 , 26.478750357401] , [ 1150171200000 , 25.351679222087] , [ 1150257600000 , 26.270230537869] , [ 1150344000000 , 25.138486136012] , [ 1150430400000 , 24.912864147208] , [ 1150689600000 , 25.523276597347] , [ 1150776000000 , 25.713521178723] , [ 1150862400000 , 26.257170836193] , [ 1150948800000 , 25.997310717022] , [ 1151035200000 , 26.119086003937] , [ 1151294400000 , 26.635920589546] , [ 1151380800000 , 26.343811385476] , [ 1151467200000 , 28.124388937732] , [ 1151553600000 , 24.54731119523] , [ 1151640000000 , 31.188966156912] , [ 1151899200000 , 29.870847723237] , [ 1152072000000 , 30.688002142576] , [ 1152158400000 , 30.089827158124] , [ 1152244800000 , 31.940772585486] , [ 1152504000000 , 31.067183284601] , [ 1152590400000 , 30.924800755736] , [ 1152676800000 , 30.517136007625] , [ 1152763200000 , 31.787393493891] , [ 1152849600000 , 31.082509618961] , [ 1153108800000 , 30.894305465166] , [ 1153195200000 , 32.120863042337] , [ 1153281600000 , 31.044346734038] , [ 1153368000000 , 30.098909312396] , [ 1153454400000 , 29.530331064084] , [ 1153713600000 , 28.423433483104] , [ 1153800000000 , 29.927942135835] , [ 1153886400000 , 29.181454968641] , [ 1153972800000 , 29.333248943938] , [ 1154059200000 , 29.559442703965] , [ 1154318400000 , 30.196607322138] , [ 1154404800000 , 29.625024735712] , [ 1154491200000 , 27.025970259666] , [ 1154577600000 , 27.71523462955] , [ 1154664000000 , 28.475970074465] , [ 1154923200000 , 27.73275118605] , [ 1155009600000 , 27.531596294285] , [ 1155096000000 , 29.816437315313] , [ 1155182400000 , 31.132297764831] , [ 1155268800000 , 31.350609485479] , [ 1155528000000 , 27.4077255939] , [ 1155614400000 , 27.931060121498] , [ 1155700800000 , 27.153432710451] , [ 1155787200000 , 27.847180254777] , [ 1155873600000 , 28.115236062259] , [ 1156132800000 , 28.209521551488] , [ 1156219200000 , 27.740032215693] , [ 1156305600000 , 27.437705732559] , [ 1156392000000 , 28.080651949224] , [ 1156478400000 , 29.158903990658] , [ 1156737600000 , 26.443946908233] , [ 1156824000000 , 28.149285812323] , [ 1156910400000 , 27.606935897643] , [ 1156996800000 , 27.786851201179] , [ 1157083200000 , 27.816421928501] , [ 1157428800000 , 27.757031714495] , [ 1157515200000 , 28.109812831149] , [ 1157601600000 , 27.382887724883] , [ 1157688000000 , 27.566393964837] , [ 1157947200000 , 28.072202886242] , [ 1158033600000 , 28.339210638333] , [ 1158120000000 , 28.983363567898] , [ 1158206400000 , 28.89373971057] , [ 1158292800000 , 28.546073874183] , [ 1158552000000 , 28.569922456167] , [ 1158638400000 , 28.644564841401] , [ 1158724800000 , 29.104118011521] , [ 1158811200000 , 29.171264058902] , [ 1158897600000 , 29.174695431197] , [ 1159156800000 , 29.25146248404] , [ 1159243200000 , 29.067493265373] , [ 1159329600000 , 29.059576307809] , [ 1159416000000 , 28.792094037666] , [ 1159502400000 , 29.229903262633] , [ 1159761600000 , 29.173839342765] , [ 1159848000000 , 28.680751891991] , [ 1159934400000 , 28.844412842115] , [ 1160020800000 , 29.717735595983] , [ 1160107200000 , 29.065357982652] , [ 1160366400000 , 29.577703181664] , [ 1160452800000 , 29.388141928462] , [ 1160539200000 , 29.284519652691] , [ 1160625600000 , 29.696862390098] , [ 1160712000000 , 29.583788241009] , [ 1160971200000 , 29.717277671825] , [ 1161057600000 , 29.536517521229] , [ 1161144000000 , 30.19209470063] , [ 1161230400000 , 29.803516341494] , [ 1161316800000 , 29.762858883805] , [ 1161576000000 , 29.260692035145] , [ 1161662400000 , 28.041800630607] , [ 1161748800000 , 28.001322530788] , [ 1161835200000 , 29.254151703765] , [ 1161921600000 , 27.893380179947] , [ 1162184400000 , 28.181879353232] , [ 1162270800000 , 28.145746547181] , [ 1162357200000 , 26.2789492637] , [ 1162443600000 , 26.90231173776] , [ 1162530000000 , 26.990105956138] , [ 1162789200000 , 27.680080084703] , [ 1162875600000 , 27.564432414629] , [ 1162962000000 , 27.493107356522] , [ 1163048400000 , 27.312773824962] , [ 1163134800000 , 27.761758486306] , [ 1163394000000 , 27.537409566329] , [ 1163480400000 , 27.853753536227] , [ 1163566800000 , 27.756253824375] , [ 1163653200000 , 28.962247984012] , [ 1163739600000 , 28.365638597882] , [ 1163998800000 , 28.694093331648] , [ 1164085200000 , 29.005490800096] , [ 1164171600000 , 27.258444065642] , [ 1164344400000 , 27.61692867307] , [ 1164603600000 , 29.041615736671] , [ 1164690000000 , 29.083811356802] , [ 1164776400000 , 29.008208834138] , [ 1164862800000 , 29.285436799647] , [ 1164949200000 , 34.334496624946] , [ 1165208400000 , 32.525292751798] , [ 1165294800000 , 32.307919819272] , [ 1165381200000 , 33.373924998648] , [ 1165467600000 , 33.214072787246] , [ 1165554000000 , 32.855444052619] , [ 1165813200000 , 34.53339325839] , [ 1165899600000 , 34.518937401575] , [ 1165986000000 , 34.942214683629] , [ 1166072400000 , 32.587850416525] , [ 1166158800000 , 32.527715490379] , [ 1166418000000 , 34.364809359385] , [ 1166504400000 , 34.080545916718] , [ 1166590800000 , 34.132689605003] , [ 1166677200000 , 34.104872054323] , [ 1166763600000 , 34.323743744102] , [ 1167109200000 , 33.288380326408] , [ 1167195600000 , 34.547323073306] , [ 1167282000000 , 34.375993716023] , [ 1167368400000 , 34.050945370284] , [ 1167800400000 , 25.300692903932] , [ 1167886800000 , 25.222332899762] , [ 1167973200000 , 27.024130105771] , [ 1168232400000 , 25.2456813145] , [ 1168318800000 , 25.834632954173] , [ 1168405200000 , 25.145041463704] , [ 1168491600000 , 26.584700412957] , [ 1168578000000 , 25.847099393884] , [ 1168923600000 , 25.652151040168] , [ 1169010000000 , 25.98052974905] , [ 1169096400000 , 25.859471726107] , [ 1169182800000 , 25.077212570734] , [ 1169442000000 , 25.323172947985] , [ 1169528400000 , 25.112175095146] , [ 1169614800000 , 25.942935948696] , [ 1169701200000 , 25.395097212615] , [ 1169787600000 , 25.16933592015] , [ 1170046800000 , 25.830394390937] , [ 1170133200000 , 25.513593223622] , [ 1170219600000 , 24.36581957911] , [ 1170306000000 , 24.456646643567] , [ 1170392400000 , 24.353004508071] , [ 1170651600000 , 22.706362948211] , [ 1170738000000 , 23.773316862991] , [ 1170824400000 , 22.892314073756] , [ 1170910800000 , 23.196287432699] , [ 1170997200000 , 24.526622778603] , [ 1171256400000 , 24.444750736559] , [ 1171342800000 , 24.623535287714] , [ 1171429200000 , 23.162087403845] , [ 1171515600000 , 25.037171796906] , [ 1171602000000 , 24.350139194933] , [ 1171947600000 , 23.502911364689] , [ 1172034000000 , 23.498823181114] , [ 1172120400000 , 23.139200796032] , [ 1172206800000 , 23.742291144652] , [ 1172466000000 , 25.624758081908] , [ 1172552400000 , 24.938301474516] , [ 1172638800000 , 25.571487238295] , [ 1172725200000 , 26.527063964553] , [ 1172811600000 , 26.417975909576] , [ 1173070800000 , 26.604582192924] , [ 1173157200000 , 25.763880949593] , [ 1173243600000 , 26.420420419826] , [ 1173330000000 , 26.448933993474] , [ 1173416400000 , 27.086053003351] , [ 1173672000000 , 27.027855747942] , [ 1173758400000 , 26.990659332641] , [ 1173844800000 , 26.578320688861] , [ 1173931200000 , 26.264159657991] , [ 1174017600000 , 27.486827217766] , [ 1174276800000 , 26.259290279331] , [ 1174363200000 , 27.293928165415] , [ 1174449600000 , 27.289500680669] , [ 1174536000000 , 26.917511516188] , [ 1174622400000 , 27.545192210159] , [ 1174881600000 , 27.058783534804] , [ 1174968000000 , 28.012170827958] , [ 1175054400000 , 27.48009491153] , [ 1175140800000 , 27.130732208653] , [ 1175227200000 , 27.049918571206] , [ 1175486400000 , 17.880664598206] , [ 1175572800000 , 17.807265334563] , [ 1175659200000 , 18.202972493437] , [ 1175745600000 , 17.912649698382] , [ 1176091200000 , 17.425481268074] , [ 1176177600000 , 18.545703458137] , [ 1176264000000 , 18.613881634277] , [ 1176350400000 , 17.631685554022] , [ 1176436800000 , 17.45831457802] , [ 1176696000000 , 16.807197325678] , [ 1176782400000 , 17.537415957704] , [ 1176868800000 , 16.270090560045] , [ 1176955200000 , 15.763310958999] , [ 1177041600000 , 15.919034050236] , [ 1177300800000 , 16.037756370013] , [ 1177387200000 , 16.085193876186] , [ 1177473600000 , 14.73789421724] , [ 1177560000000 , 16.075537623262] , [ 1177646400000 , 16.136388846327] , [ 1177905600000 , 16.81063338022] , [ 1177992000000 , 16.52223459424] , [ 1178078400000 , 16.050019538099] , [ 1178164800000 , 15.637926079902] , [ 1178251200000 , 15.964954913544] , [ 1178510400000 , 16.084019150017] , [ 1178596800000 , 16.115193599934] , [ 1178683200000 , 15.29906479463] , [ 1178769600000 , 16.050303123855] , [ 1178856000000 , 15.942177052932] , [ 1179115200000 , 16.327320739846] , [ 1179201600000 , 16.567169050276] , [ 1179288000000 , 15.954884692567] , [ 1179374400000 , 15.520555372537] , [ 1179460800000 , 15.803063683541] , [ 1179720000000 , 16.058907858598] , [ 1179806400000 , 15.775392434141] , [ 1179892800000 , 15.492710738811] , [ 1179979200000 , 15.807487747828] , [ 1180065600000 , 16.460167833334] , [ 1180411200000 , 15.931278835494] , [ 1180497600000 , 15.766953824648] , [ 1180584000000 , 12.215920390306] , [ 1180670400000 , 13.383466763969] , [ 1180929600000 , 13.778081042623] , [ 1181016000000 , 13.511027657834] , [ 1181102400000 , 13.566850289866] , [ 1181188800000 , 14.212420857751] , [ 1181275200000 , 16.681046149104] , [ 1181534400000 , 17.357965625952] , [ 1181620800000 , 17.364397335248] , [ 1181707200000 , 14.113600508738] , [ 1181793600000 , 14.418535873185] , [ 1181880000000 , 14.222936582899] , [ 1182139200000 , 14.341331170428] , [ 1182225600000 , 14.700447213771] , [ 1182312000000 , 17.246935746763] , [ 1182398400000 , 14.434458966372] , [ 1182484800000 , 16.942892233606] , [ 1182744000000 , 14.302972963496] , [ 1182830400000 , 17.496053460551] , [ 1182916800000 , 17.007178523808] , [ 1183003200000 , 17.1173497837] , [ 1183089600000 , 14.738100031861] , [ 1183348800000 , 23.381360028949] , [ 1183435200000 , 23.583171411876] , [ 1183608000000 , 21.189576571504] , [ 1183694400000 , 21.379542195365] , [ 1183953600000 , 24.193565504788] , [ 1184040000000 , 23.892984361498] , [ 1184126400000 , 23.557482166335] , [ 1184212800000 , 21.398391535786] , [ 1184299200000 , 21.000192621393] , [ 1184558400000 , 21.443443411203] , [ 1184644800000 , 20.87909268732] , [ 1184731200000 , 21.106341299711] , [ 1184817600000 , 21.678832875153] , [ 1184904000000 , 21.099485258524] , [ 1185163200000 , 20.53180730183] , [ 1185249600000 , 22.753865952858] , [ 1185336000000 , 23.036155771385] , [ 1185422400000 , 22.436927650804] , [ 1185508800000 , 23.629713342946] , [ 1185768000000 , 22.973439437844] , [ 1185854400000 , 24.011681875779] , [ 1185940800000 , 23.293907291742] , [ 1186027200000 , 23.221742080601] , [ 1186113600000 , 23.136600304113] , [ 1186372800000 , 23.403613308236] , [ 1186459200000 , 24.15550391201] , [ 1186545600000 , 23.382840976484] , [ 1186632000000 , 23.569117139983] , [ 1186718400000 , 23.110364403669] , [ 1186977600000 , 22.768508508377] , [ 1187064000000 , 22.746873596873] , [ 1187150400000 , 21.912550360806] , [ 1187236800000 , 23.111375981008] , [ 1187323200000 , 22.154240319281] , [ 1187582400000 , 22.452724069829] , [ 1187668800000 , 22.971202842449] , [ 1187755200000 , 23.044703450178] , [ 1187841600000 , 22.932286638476] , [ 1187928000000 , 23.128465099576] , [ 1188187200000 , 23.053430107617] , [ 1188273600000 , 23.399278657702] , [ 1188360000000 , 22.855290558568] , [ 1188446400000 , 23.023778923147] , [ 1188532800000 , 23.30642985164] , [ 1188878400000 , 24.100190753625] , [ 1188964800000 , 23.496410386678] , [ 1189051200000 , 23.164863339011] , [ 1189137600000 , 22.984547839469] , [ 1189396800000 , 23.586261681658] , [ 1189483200000 , 23.879509037795] , [ 1189569600000 , 23.970799057706] , [ 1189656000000 , 24.203453000763] , [ 1189742400000 , 24.147554781255] , [ 1190001600000 , 23.727724576032] , [ 1190088000000 , 24.121007821814] , [ 1190174400000 , 23.547385976413] , [ 1190260800000 , 23.891283879089] , [ 1190347200000 , 24.274320682809] , [ 1190606400000 , 23.539795550406] , [ 1190692800000 , 24.124440766278] , [ 1190779200000 , 24.069128212927] , [ 1190865600000 , 23.730046995653] , [ 1190952000000 , 24.12189164708] , [ 1191211200000 , 21.828756161412] , [ 1191297600000 , 21.598908720664] , [ 1191384000000 , 22.198066739307] , [ 1191470400000 , 21.828974377747] , [ 1191556800000 , 21.865331328546] , [ 1191816000000 , 20.146481329684] , [ 1191902400000 , 22.038963127424] , [ 1191988800000 , 22.193420310202] , [ 1192075200000 , 21.902764731066] , [ 1192161600000 , 19.031850812838] , [ 1192420800000 , 22.145901417428] , [ 1192507200000 , 21.730226173364] , [ 1192593600000 , 18.717647311262] , [ 1192680000000 , 18.755527112944] , [ 1192766400000 , 18.609066458058] , [ 1193025600000 , 17.944501591207] , [ 1193112000000 , 18.274551837267] , [ 1193198400000 , 20.113228789742] , [ 1193284800000 , 22.781013325441] , [ 1193371200000 , 22.589161863023] , [ 1193630400000 , 17.461728207277] , [ 1193716800000 , 17.66706415891] , [ 1193803200000 , 17.958751721512] , [ 1193889600000 , 16.785791840302] , [ 1193976000000 , 16.757702111569] , [ 1194238800000 , 18.93409532988] , [ 1194325200000 , 19.534095495152] , [ 1194411600000 , 17.171260260302] , [ 1194498000000 , 17.736480941713] , [ 1194584400000 , 17.95514343952] , [ 1194843600000 , 16.76664120096] , [ 1194930000000 , 19.514289594417] , [ 1195016400000 , 17.907346110061] , [ 1195102800000 , 18.887036074517] , [ 1195189200000 , 18.085290433046] , [ 1195448400000 , 20.215750560331] , [ 1195534800000 , 19.728281124118] , [ 1195621200000 , 20.013901927158] , [ 1195794000000 , 20.425307638534] , [ 1196053200000 , 20.12299964298] , [ 1196139600000 , 20.615959531752] , [ 1196226000000 , 21.157573604935] , [ 1196312400000 , 21.227579026087] , [ 1196398800000 , 21.063013137686] , [ 1196658000000 , 18.952569130832] , [ 1196744400000 , 17.835169748773] , [ 1196830800000 , 18.689749074265] , [ 1196917200000 , 19.241256266257] , [ 1197003600000 , 16.106201143] , [ 1197262800000 , 18.739634285662] , [ 1197349200000 , 17.033992438966] , [ 1197435600000 , 17.526984276377] , [ 1197522000000 , 18.474421634711] , [ 1197608400000 , 18.943045807971] , [ 1197867600000 , 18.8357354204] , [ 1197954000000 , 14.317066323396] , [ 1198040400000 , 15.328387808528] , [ 1198126800000 , 15.4591742668] , [ 1198213200000 , 14.971952807451] , [ 1198472400000 , 14.486078605624] , [ 1198645200000 , 15.093829891606] , [ 1198731600000 , 14.89944253928] , [ 1198818000000 , 14.953095657488] , [ 1199077200000 , 21.14224717447] , [ 1199250000000 , 22.163125599573] , [ 1199336400000 , 25.580649670689] , [ 1199422800000 , 26.550304750539] , [ 1199682000000 , 24.92178160634] , [ 1199768400000 , 26.480917610196] , [ 1199854800000 , 26.415499888108] , [ 1199941200000 , 25.798528581908] , [ 1200027600000 , 25.968596406516] , [ 1200286800000 , 26.628155151879] , [ 1200373200000 , 26.572268363594] , [ 1200459600000 , 26.964587445107] , [ 1200546000000 , 26.021720676336] , [ 1200632400000 , 25.219318556176] , [ 1200978000000 , 25.08904004204] , [ 1201064400000 , 25.436698688495] , [ 1201150800000 , 25.705583393763] , [ 1201237200000 , 24.708314196768] , [ 1201496400000 , 25.275322535728] , [ 1201582800000 , 25.013340149085] , [ 1201669200000 , 26.087180427196] , [ 1201755600000 , 25.596819481677] , [ 1201842000000 , 27.031794299842] , [ 1202101200000 , 26.116692862418] , [ 1202187600000 , 26.18876081094] , [ 1202274000000 , 26.805914582556] , [ 1202360400000 , 26.305228563756] , [ 1202446800000 , 26.162145456199] , [ 1202706000000 , 26.078668866288] , [ 1202792400000 , 24.496696009333] , [ 1202878800000 , 24.333591780266] , [ 1202965200000 , 25.365600329799] , [ 1203051600000 , 25.073445357545] , [ 1203397200000 , 23.72831122047] , [ 1203483600000 , 22.506572846112] , [ 1203570000000 , 24.021331332996] , [ 1203656400000 , 23.66509718916] , [ 1203915600000 , 24.425976963638] , [ 1204002000000 , 24.8174208102] , [ 1204088400000 , 23.926217363698] , [ 1204174800000 , 23.12804880749] , [ 1204261200000 , 23.065751947087] , [ 1204520400000 , 22.796843375225] , [ 1204606800000 , 24.777178076373] , [ 1204693200000 , 23.972553369429] , [ 1204779600000 , 24.748169690011] , [ 1204866000000 , 24.546520937818] , [ 1205121600000 , 24.531054748032] , [ 1205208000000 , 25.050634385202] , [ 1205294400000 , 23.712509030237] , [ 1205380800000 , 22.791099148642] , [ 1205467200000 , 25.133010110595] , [ 1205726400000 , 25.729774893726] , [ 1205812800000 , 23.964300656032] , [ 1205899200000 , 24.830611435159] , [ 1205985600000 , 24.625872764332] , [ 1206331200000 , 24.167428696816] , [ 1206417600000 , 23.96580861882] , [ 1206504000000 , 23.710994480839] , [ 1206590400000 , 24.071307185252] , [ 1206676800000 , 25.578134721546] , [ 1206936000000 , 24.004366210672] , [ 1207022400000 , 23.748819146736] , [ 1207108800000 , 23.419450880062] , [ 1207195200000 , 23.977383718976] , [ 1207281600000 , 24.079681731569] , [ 1207540800000 , 23.289855010864] , [ 1207627200000 , 23.410998821727] , [ 1207713600000 , 23.516469881517] , [ 1207800000000 , 23.338729362027] , [ 1207886400000 , 23.255513637852] , [ 1208145600000 , 24.048754022449] , [ 1208232000000 , 24.082829261378] , [ 1208318400000 , 23.970518901665] , [ 1208404800000 , 24.005293898633] , [ 1208491200000 , 23.473203816222] , [ 1208750400000 , 23.533677351106] , [ 1208836800000 , 23.377124698615] , [ 1208923200000 , 23.620869290172] , [ 1209009600000 , 23.74664341712] , [ 1209096000000 , 24.310388759454] , [ 1209355200000 , 24.64043664586] , [ 1209441600000 , 24.196923166095] , [ 1209528000000 , 24.213728155036] , [ 1209614400000 , 23.92191244331] , [ 1209700800000 , 23.431732325766] , [ 1209960000000 , 23.778340073822] , [ 1210046400000 , 21.78167300827] , [ 1210132800000 , 23.022281575534] , [ 1210219200000 , 23.048837276234] , [ 1210305600000 , 23.201805997156] , [ 1210564800000 , 23.1040786704] , [ 1210651200000 , 23.965153233623] , [ 1210737600000 , 23.383754556726] , [ 1210824000000 , 23.797927960202] , [ 1210910400000 , 23.632245055346] , [ 1211169600000 , 23.04524456399] , [ 1211256000000 , 23.57340787775] , [ 1211342400000 , 23.063426658982] , [ 1211428800000 , 23.034687458765] , [ 1211515200000 , 23.065113447487] , [ 1211860800000 , 22.889624665243] , [ 1211947200000 , 22.835009873064] , [ 1212033600000 , 21.531340184817] , [ 1212120000000 , 19.575259321106] , [ 1212379200000 , 17.763724550155] , [ 1212465600000 , 17.596695125202] , [ 1212552000000 , 17.961687627204] , [ 1212638400000 , 17.671896963962] , [ 1212724800000 , 17.877674078151] , [ 1212984000000 , 17.802333395307] , [ 1213070400000 , 17.932025245841] , [ 1213156800000 , 19.615406255269] , [ 1213243200000 , 19.814081563691] , [ 1213329600000 , 17.609477469975] , [ 1213588800000 , 17.678509440137] , [ 1213675200000 , 17.856359586929] , [ 1213761600000 , 17.883324428735] , [ 1213848000000 , 17.654914600713] , [ 1213934400000 , 17.333695485667] , [ 1214193600000 , 17.09733750096] , [ 1214280000000 , 17.192721064539] , [ 1214366400000 , 17.654778485183] , [ 1214452800000 , 18.742947223993] , [ 1214539200000 , 17.954362007624] , [ 1214798400000 , 27.035541485757] , [ 1214884800000 , 25.646501324451] , [ 1214971200000 , 24.704339480623] , [ 1215057600000 , 25.528124904273] , [ 1215403200000 , 24.469221904803] , [ 1215489600000 , 24.86467084747] , [ 1215576000000 , 28.185081839725] , [ 1215662400000 , 25.931291196908] , [ 1215748800000 , 25.921172963399] , [ 1216008000000 , 26.156573606637] , [ 1216094400000 , 25.942194939115] , [ 1216180800000 , 26.372665582895] , [ 1216267200000 , 27.995468662118] , [ 1216353600000 , 28.03192309971] , [ 1216612800000 , 27.660054510448] , [ 1216699200000 , 27.033881768957] , [ 1216785600000 , 27.3314171743] , [ 1216872000000 , 27.075331862026] , [ 1216958400000 , 26.480730398212] , [ 1217217600000 , 27.168142861835] , [ 1217304000000 , 26.897933957608] , [ 1217390400000 , 27.041128147957] , [ 1217476800000 , 26.779369198304] , [ 1217563200000 , 26.574158091266] , [ 1217822400000 , 25.430941403492] , [ 1217908800000 , 25.882024678018] , [ 1217995200000 , 26.557241260329] , [ 1218081600000 , 26.592571431801] , [ 1218168000000 , 26.730520023221] , [ 1218427200000 , 24.829736435431] , [ 1218513600000 , 24.808676213762] , [ 1218600000000 , 24.761891131036] , [ 1218686400000 , 24.770206770333] , [ 1218772800000 , 25.143577874227] , [ 1219032000000 , 24.364074049182] , [ 1219118400000 , 24.508558829752] , [ 1219204800000 , 25.834189456239] , [ 1219291200000 , 26.015641689522] , [ 1219377600000 , 25.675928226745] , [ 1219636800000 , 28.411511834627] , [ 1219723200000 , 27.743761968814] , [ 1219809600000 , 27.561616699095] , [ 1219896000000 , 27.267198900374] , [ 1219982400000 , 26.768901529277] , [ 1220328000000 , 30.930829782998] , [ 1220414400000 , 32.702155801611] , [ 1220500800000 , 33.164536908551] , [ 1220587200000 , 33.0901284428] , [ 1220846400000 , 33.548026375889] , [ 1220932800000 , 32.479523954005] , [ 1221019200000 , 33.023962968015] , [ 1221105600000 , 32.518232933545] , [ 1221192000000 , 33.250608979442] , [ 1221451200000 , 32.242561777527] , [ 1221537600000 , 32.296409598697] , [ 1221624000000 , 32.626704429792] , [ 1221710400000 , 33.131294577009] , [ 1221796800000 , 32.780017106931] , [ 1222056000000 , 33.242181094218] , [ 1222142400000 , 32.949426208976] , [ 1222228800000 , 33.163455852964] , [ 1222315200000 , 32.814626929601] , [ 1222401600000 , 31.914250535078] , [ 1222660800000 , 32.805282690546] , [ 1222747200000 , 25.311667499771] , [ 1222833600000 , 23.096834463171] , [ 1222920000000 , 22.433532392245] , [ 1223006400000 , 21.855284679053] , [ 1223265600000 , 21.116434115363] , [ 1223352000000 , 20.826921172289] , [ 1223438400000 , 21.415638475657] , [ 1223524800000 , 22.725393928058] , [ 1223611200000 , 22.358739847456] , [ 1223870400000 , 22.207965001084] , [ 1223956800000 , 22.274562627241] , [ 1224043200000 , 22.507869738831] , [ 1224129600000 , 22.673218449481] , [ 1224216000000 , 23.089664277628] , [ 1224475200000 , 18.011834486638] , [ 1224561600000 , 19.500589275255] , [ 1224648000000 , 19.088347643272] , [ 1224734400000 , 17.727532675315] , [ 1224820800000 , 19.264131025944] , [ 1225080000000 , 19.943378353668] , [ 1225166400000 , 19.743342605804] , [ 1225252800000 , 17.652555994436] , [ 1225339200000 , 16.867192686438] , [ 1225425600000 , 16.544460489827] , [ 1225688400000 , 18.960925390929] , [ 1225774800000 , 19.256387931268] , [ 1225861200000 , 18.566180002383] , [ 1225947600000 , 16.024008873622] , [ 1226034000000 , 16.612438359142] , [ 1226293200000 , 16.724221319191] , [ 1226379600000 , 16.458855879352] , [ 1226466000000 , 21.593906322621] , [ 1226552400000 , 16.493261880376] , [ 1226638800000 , 19.411017873208] , [ 1226898000000 , 18.993296155293] , [ 1226984400000 , 19.159014049549] , [ 1227070800000 , 17.725731555775] , [ 1227157200000 , 20.936378007454] , [ 1227243600000 , 17.952696312063] , [ 1227502800000 , 18.700248963856] , [ 1227589200000 , 18.87332365187] , [ 1227675600000 , 17.853711923738] , [ 1227848400000 , 17.875123518555] , [ 1228107600000 , 23.854365550634] , [ 1228194000000 , 23.749540851087] , [ 1228280400000 , 21.773838225393] , [ 1228366800000 , 21.49271023225] , [ 1228453200000 , 22.215174649386] , [ 1228712400000 , 22.362045108586] , [ 1228798800000 , 24.461632267612] , [ 1228885200000 , 24.78353826837] , [ 1228971600000 , 24.547286297952] , [ 1229058000000 , 24.162234952977] , [ 1229317200000 , 27.565055857858] , [ 1229403600000 , 25.795424112755] , [ 1229490000000 , 25.507862221091] , [ 1229576400000 , 25.394514275371] , [ 1229662800000 , 25.647603062187] , [ 1229922000000 , 25.857574037331] , [ 1230008400000 , 25.180119806304] , [ 1230094800000 , 25.798192638788] , [ 1230267600000 , 25.359457083421] , [ 1230526800000 , 25.504418021474] , [ 1230613200000 , 25.60919820751] , [ 1230699600000 , 18.093063456137] , [ 1230872400000 , 18.843422158609] , [ 1231131600000 , 18.536029229138] , [ 1231218000000 , 18.880208487147] , [ 1231304400000 , 18.812077348106] , [ 1231390800000 , 18.906627265926] , [ 1231477200000 , 18.913419354209] , [ 1231736400000 , 18.814628186255] , [ 1231822800000 , 19.1706224549] , [ 1231909200000 , 19.102143486727] , [ 1231995600000 , 17.465425251457] , [ 1232082000000 , 17.599705681524] , [ 1232427600000 , 17.509814909282] , [ 1232514000000 , 17.406327433972] , [ 1232600400000 , 17.470981425726] , [ 1232686800000 , 17.530990113867] , [ 1232946000000 , 17.842813972083] , [ 1233032400000 , 18.140434304466] , [ 1233118800000 , 17.6693856356] , [ 1233205200000 , 16.978819163037] , [ 1233291600000 , 17.532772949018] , [ 1233550800000 , 17.263575771949] , [ 1233637200000 , 16.580068629166] , [ 1233723600000 , 14.824065894741] , [ 1233810000000 , 15.135730767999] , [ 1233896400000 , 15.1384624545] , [ 1234155600000 , 17.088024665479] , [ 1234242000000 , 17.004449102957] , [ 1234328400000 , 16.946486288084] , [ 1234414800000 , 17.207129217923] , [ 1234501200000 , 17.274219535868] , [ 1234846800000 , 17.165749457138] , [ 1234933200000 , 16.872328566539] , [ 1235019600000 , 17.271462712538] , [ 1235106000000 , 17.63773653607] , [ 1235365200000 , 16.923145038331] , [ 1235451600000 , 16.923103108536] , [ 1235538000000 , 18.565904750143] , [ 1235624400000 , 18.144649510144] , [ 1235710800000 , 18.561255237134] , [ 1235970000000 , 17.745719395256] , [ 1236056400000 , 17.806801922109] , [ 1236142800000 , 18.150413031812] , [ 1236229200000 , 17.309776676803] , [ 1236315600000 , 17.855132450329] , [ 1236571200000 , 17.358212313334] , [ 1236657600000 , 17.878738090715] , [ 1236744000000 , 17.867433060928] , [ 1236830400000 , 15.645269170248] , [ 1236916800000 , 15.665096191174] , [ 1237176000000 , 15.831837932892] , [ 1237262400000 , 16.556483011821] , [ 1237348800000 , 17.034555975109] , [ 1237435200000 , 15.577521066508] , [ 1237521600000 , 16.597810302851] , [ 1237780800000 , 14.537729561315] , [ 1237867200000 , 14.228041763981] , [ 1237953600000 , 14.626530704835] , [ 1238040000000 , 14.744482313161] , [ 1238126400000 , 14.339965189742] , [ 1238385600000 , 14.241431249006] , [ 1238472000000 , 20.3493662279] , [ 1238558400000 , 19.793441795222] , [ 1238644800000 , 20.579669014612] , [ 1238731200000 , 20.717037537858] , [ 1238990400000 , 20.747637125444] , [ 1239076800000 , 19.872977562246] , [ 1239163200000 , 20.658591597104] , [ 1239249600000 , 21.510069683447] , [ 1239595200000 , 21.303103619777] , [ 1239681600000 , 21.18992562077] , [ 1239768000000 , 19.883709018742] , [ 1239854400000 , 20.189045322046] , [ 1239940800000 , 20.422161239133] , [ 1240200000000 , 19.657962946924] , [ 1240286400000 , 20.918018516475] , [ 1240372800000 , 20.164627878394] , [ 1240459200000 , 21.389490434103] , [ 1240545600000 , 21.55928084029] , [ 1240804800000 , 19.93513983724] , [ 1240891200000 , 20.307326155158] , [ 1240977600000 , 20.076615200252] , [ 1241064000000 , 20.377980619966] , [ 1241150400000 , 21.502114573189] , [ 1241409600000 , 21.333842090053] , [ 1241496000000 , 21.466419194711] , [ 1241582400000 , 21.444140212785] , [ 1241668800000 , 20.650771655377] , [ 1241755200000 , 21.484763215059] , [ 1242014400000 , 21.42896252995] , [ 1242100800000 , 21.124554107238] , [ 1242187200000 , 21.597270919957] , [ 1242273600000 , 20.434117990092] , [ 1242360000000 , 20.72570990085] , [ 1242619200000 , 20.345621395289] , [ 1242705600000 , 20.705330714189] , [ 1242792000000 , 21.608527649829] , [ 1242878400000 , 20.485051690282] , [ 1242964800000 , 21.949939406529] , [ 1243310400000 , 22.574411243952] , [ 1243396800000 , 22.096216601328] , [ 1243483200000 , 22.226997007397] , [ 1243569600000 , 21.978775300645] , [ 1243828800000 , 22.759639639262] , [ 1243915200000 , 21.420671892933] , [ 1244001600000 , 21.470255024637] , [ 1244088000000 , 20.995928687618] , [ 1244174400000 , 21.522496537464] , [ 1244433600000 , 21.315298288502] , [ 1244520000000 , 21.964521450824] , [ 1244606400000 , 21.624039736813] , [ 1244692800000 , 21.401890788502] , [ 1244779200000 , 21.781807814682] , [ 1245038400000 , 21.431222616202] , [ 1245124800000 , 21.29968235956] , [ 1245211200000 , 21.180995555789] , [ 1245297600000 , 21.464139097757] , [ 1245384000000 , 21.038392851134] , [ 1245643200000 , 22.545436575189] , [ 1245729600000 , 22.074728919392] , [ 1245816000000 , 21.847986572177] , [ 1245902400000 , 21.644696203957] , [ 1245988800000 , 21.319344762663] , [ 1246248000000 , 21.474322677353] , [ 1246334400000 , 17.041786253046] , [ 1246420800000 , 16.745806924693] , [ 1246507200000 , 18.065315915016] , [ 1246852800000 , 16.067759313297] , [ 1246939200000 , 17.149399218398] , [ 1247025600000 , 17.230742402014] , [ 1247112000000 , 18.125833913957] , [ 1247198400000 , 17.203651280031] , [ 1247457600000 , 16.123584218948] , [ 1247544000000 , 18.783164750606] , [ 1247630400000 , 17.202273072063] , [ 1247716800000 , 15.628613042405] , [ 1247803200000 , 16.88693478902] , [ 1248062400000 , 16.087345982337] , [ 1248148800000 , 16.145353701807] , [ 1248235200000 , 16.826728344118] , [ 1248321600000 , 18.341761916181] , [ 1248408000000 , 18.057748750692] , [ 1248667200000 , 18.043846489699] , [ 1248753600000 , 18.194705512455] , [ 1248840000000 , 18.316101838803] , [ 1248926400000 , 19.492179039562] , [ 1249012800000 , 19.866092444726] , [ 1249272000000 , 19.5863897446] , [ 1249358400000 , 17.165108148813] , [ 1249444800000 , 16.965672370683] , [ 1249531200000 , 16.54876613592] , [ 1249617600000 , 18.099820712] , [ 1249876800000 , 17.302064800404] , [ 1249963200000 , 17.902140217521] , [ 1250049600000 , 18.027707162727] , [ 1250136000000 , 18.26385824955] , [ 1250222400000 , 17.296777192488] , [ 1250481600000 , 17.035496584359] , [ 1250568000000 , 17.319342619439] , [ 1250654400000 , 17.250945615521] , [ 1250740800000 , 17.360261177385] , [ 1250827200000 , 18.066116382468] , [ 1251086400000 , 17.308982678178] , [ 1251172800000 , 18.264915310522] , [ 1251259200000 , 18.061789277248] , [ 1251345600000 , 18.079065352463] , [ 1251432000000 , 18.565396558372] , [ 1251691200000 , 18.414552663246] , [ 1251777600000 , 17.459096724517] , [ 1251864000000 , 17.359278030104] , [ 1251950400000 , 18.477365167509] , [ 1252036800000 , 18.026975250015] , [ 1252382400000 , 17.957225302001] , [ 1252468800000 , 17.025190338259] , [ 1252555200000 , 18.04110025032] , [ 1252641600000 , 17.131512578138] , [ 1252900800000 , 19.163439930171] , [ 1252987200000 , 18.87995875185] , [ 1253073600000 , 18.893396512386] , [ 1253160000000 , 18.672376942936] , [ 1253246400000 , 16.685220454507] , [ 1253505600000 , 19.236642213738] , [ 1253592000000 , 19.609590841783] , [ 1253678400000 , 18.519089636404] , [ 1253764800000 , 18.805407620157] , [ 1253851200000 , 18.654192599505] , [ 1254110400000 , 19.024313229939] , [ 1254196800000 , 18.619862176913] , [ 1254283200000 , 20.236423704672] , [ 1254369600000 , 19.792619471893] , [ 1254456000000 , 19.66681808602] , [ 1254715200000 , 19.771041284539] , [ 1254801600000 , 18.389838011525] , [ 1254888000000 , 19.896024560924] , [ 1254974400000 , 20.467034445224] , [ 1255060800000 , 18.726208287924] , [ 1255320000000 , 19.084339434257] , [ 1255406400000 , 18.887815021506] , [ 1255492800000 , 18.784938982708] , [ 1255579200000 , 18.88089123485] , [ 1255665600000 , 18.819379905569] , [ 1255924800000 , 18.842718739355] , [ 1256011200000 , 20.618070009916] , [ 1256097600000 , 20.261192428138] , [ 1256184000000 , 20.540776234198] , [ 1256270400000 , 20.774727035528] , [ 1256529600000 , 20.866277864184] , [ 1256616000000 , 19.508262671785] , [ 1256702400000 , 19.691390854526] , [ 1256788800000 , 21.354586644388] , [ 1256875200000 , 20.511734917078] , [ 1257138000000 , 22.74043800343] , [ 1257224400000 , 23.297820087267] , [ 1257310800000 , 22.911377932421] , [ 1257397200000 , 23.092110039866] , [ 1257483600000 , 23.108860374463] , [ 1257742800000 , 21.540893186331] , [ 1257829200000 , 19.41338156802] , [ 1257915600000 , 21.538761570546] , [ 1258002000000 , 22.693144949647] , [ 1258088400000 , 19.007421987539] , [ 1258347600000 , 18.736346280782] , [ 1258434000000 , 18.979915869967] , [ 1258520400000 , 19.055883282436] , [ 1258606800000 , 19.302010218192] , [ 1258693200000 , 19.050090950757] , [ 1258952400000 , 18.877431926735] , [ 1259038800000 , 19.21397264477] , [ 1259125200000 , 18.885131361931] , [ 1259298000000 , 18.703192042869] , [ 1259557200000 , 19.106579354373] , [ 1259643600000 , 19.835588926339] , [ 1259730000000 , 19.725618708704] , [ 1259816400000 , 19.995811888843] , [ 1259902800000 , 19.49130169594] , [ 1260162000000 , 19.615487784729] , [ 1260248400000 , 19.690721644106] , [ 1260334800000 , 19.730043929742] , [ 1260421200000 , 19.962862790794] , [ 1260507600000 , 19.816320827951] , [ 1260766800000 , 19.947336537979] , [ 1260853200000 , 20.718092640299] , [ 1260939600000 , 20.4230538471] , [ 1261026000000 , 20.876969742327] , [ 1261112400000 , 20.561033236054] , [ 1261371600000 , 20.712079417203] , [ 1261458000000 , 20.454217776074] , [ 1261544400000 , 20.206792489051] , [ 1261630800000 , 19.938858516286] , [ 1261976400000 , 20.97228313499] , [ 1262062800000 , 20.073395778853] , [ 1262149200000 , 19.879278038636] , [ 1262235600000 , 31.166099502174] , [ 1262581200000 , 31.842244882842] , [ 1262667600000 , 30.435052761219] , [ 1262754000000 , 30.924329808463] , [ 1262840400000 , 31.259623681662] , [ 1262926800000 , 31.238113840482] , [ 1263186000000 , 31.082835887693] , [ 1263272400000 , 31.214767193505] , [ 1263358800000 , 31.055916746916] , [ 1263445200000 , 30.492617851659] , [ 1263531600000 , 30.809976435255] , [ 1263877200000 , 30.480065328111] , [ 1263963600000 , 30.891257006458] , [ 1264050000000 , 30.633446505165] , [ 1264136400000 , 29.64466987287] , [ 1264395600000 , 30.25761192383] , [ 1264482000000 , 29.922735930894] , [ 1264568400000 , 26.670656014875] , [ 1264654800000 , 31.519098063889] , [ 1264741200000 , 30.265672185038] , [ 1265000400000 , 31.051470338469] , [ 1265086800000 , 31.075278999204] , [ 1265173200000 , 31.328156094438] , [ 1265259600000 , 31.883533196473] , [ 1265346000000 , 31.753621185353] , [ 1265605200000 , 32.483443072721] , [ 1265691600000 , 30.887333018932] , [ 1265778000000 , 31.088478494196] , [ 1265864400000 , 31.171513578005] , [ 1265950800000 , 30.172338971532] , [ 1266296400000 , 31.631321202782] , [ 1266382800000 , 31.773284974164] , [ 1266469200000 , 32.128798050889] , [ 1266555600000 , 31.506000905348] , [ 1266814800000 , 32.543991028111] , [ 1266901200000 , 31.1510270135] , [ 1266987600000 , 31.462834206058] , [ 1267074000000 , 31.805645108837] , [ 1267160400000 , 32.565012468383] , [ 1267419600000 , 30.954586361769] , [ 1267506000000 , 30.960025145221] , [ 1267592400000 , 31.324682916881] , [ 1267678800000 , 31.804674091341] , [ 1267765200000 , 31.064445954753] , [ 1268024400000 , 30.692644563767] , [ 1268110800000 , 31.441544604149] , [ 1268197200000 , 31.372632236951] , [ 1268283600000 , 31.743207826783] , [ 1268370000000 , 31.157631103244] , [ 1268625600000 , 29.500172698299] , [ 1268712000000 , 25.856476032214] , [ 1268798400000 , 29.557877270047] , [ 1268884800000 , 25.160796729901] , [ 1268971200000 , 28.978249978658] , [ 1269230400000 , 25.288683134864] , [ 1269316800000 , 28.972614631218] , [ 1269403200000 , 29.062507286319] , [ 1269489600000 , 28.534634098897] , [ 1269576000000 , 28.170514954521] , [ 1269835200000 , 27.610926345422] , [ 1269921600000 , 28.561743640538] , [ 1270008000000 , 25.72085309218] , [ 1270094400000 , 24.143100568503] , [ 1270440000000 , 24.712126890327] , [ 1270526400000 , 24.937754133729] , [ 1270612800000 , 22.534582804873] , [ 1270699200000 , 26.60835600548] , [ 1270785600000 , 26.974488301938] , [ 1271044800000 , 24.949768369502] , [ 1271131200000 , 21.787557680229] , [ 1271217600000 , 23.156072406101] , [ 1271304000000 , 21.624412713133] , [ 1271390400000 , 20.856993995664] , [ 1271649600000 , 21.082299684764] , [ 1271736000000 , 21.394429762866] , [ 1271822400000 , 21.397625971833] , [ 1271908800000 , 18.470078083536] , [ 1271995200000 , 21.161824047677] , [ 1272254400000 , 21.788830070724] , [ 1272340800000 , 20.882644144703] , [ 1272427200000 , 20.657833498942] , [ 1272513600000 , 20.863389166903] , [ 1272600000000 , 23.835996457616] , [ 1272859200000 , 18.961702146386] , [ 1272945600000 , 22.197555756943] , [ 1273032000000 , 22.10872658541] , [ 1273118400000 , 24.336182246707] , [ 1273204800000 , 23.498064045962] , [ 1273464000000 , 19.533352258036] , [ 1273550400000 , 19.780621438586] , [ 1273636800000 , 18.043407981034] , [ 1273723200000 , 19.055325187108] , [ 1273809600000 , 20.895602982733] , [ 1274068800000 , 20.333517340938] , [ 1274155200000 , 20.094180875213] , [ 1274241600000 , 21.259520019855] , [ 1274328000000 , 23.796797254218] , [ 1274414400000 , 21.513320200099] , [ 1274673600000 , 23.517851530902] , [ 1274760000000 , 23.315153874015] , [ 1274846400000 , 23.366767890574] , [ 1274932800000 , 20.865113389037] , [ 1275019200000 , 21.024951937692] , [ 1275364800000 , 22.063226474144] , [ 1275451200000 , 22.622705338868] , [ 1275537600000 , 21.634282593345] , [ 1275624000000 , 21.771966234289] , [ 1275883200000 , 23.60652423091] , [ 1275969600000 , 23.613567386722] , [ 1276056000000 , 21.057915021657] , [ 1276142400000 , 21.99548478497] , [ 1276228800000 , 21.873527280063] , [ 1276488000000 , 21.006473672252] , [ 1276574400000 , 22.001693162211] , [ 1276660800000 , 22.106386750625] , [ 1276747200000 , 21.771228343302] , [ 1276833600000 , 21.267255977756] , [ 1277092800000 , 21.053210842176] , [ 1277179200000 , 21.343795689407] , [ 1277265600000 , 21.712872300435] , [ 1277352000000 , 21.369109965017] , [ 1277438400000 , 21.035438945093] , [ 1277697600000 , 21.525234675512] , [ 1277784000000 , 21.86404338499] , [ 1277870400000 , 27.66271259496] , [ 1277956800000 , 31.201029468826] , [ 1278043200000 , 30.369191336636] , [ 1278388800000 , 31.18896422942] , [ 1278475200000 , 31.114141889473] , [ 1278561600000 , 31.157290338903] , [ 1278648000000 , 30.92279791828] , [ 1278907200000 , 31.163937573213] , [ 1278993600000 , 31.406716077478] , [ 1279080000000 , 31.341336138768] , [ 1279166400000 , 30.097215729921] , [ 1279252800000 , 30.074765523901] , [ 1279512000000 , 30.757069606348] , [ 1279598400000 , 30.804183936829] , [ 1279684800000 , 31.813228253647] , [ 1279771200000 , 31.809354941375] , [ 1279857600000 , 31.85753806329] , [ 1280116800000 , 31.722866162199] , [ 1280203200000 , 30.741045906359] , [ 1280289600000 , 30.23563925536] , [ 1280376000000 , 28.521418206154] , [ 1280462400000 , 27.289590102591] , [ 1280721600000 , 27.755220441481] , [ 1280808000000 , 27.565942405359] , [ 1280894400000 , 26.311653811793] , [ 1280980800000 , 27.026417458782] , [ 1281067200000 , 27.994819078039] , [ 1281326400000 , 28.227948461494] , [ 1281412800000 , 27.493631089315] , [ 1281499200000 , 31.414782128485] , [ 1281585600000 , 31.399010221155] , [ 1281672000000 , 31.175796423293] , [ 1281931200000 , 30.852534293648] , [ 1282017600000 , 30.672151168827] , [ 1282104000000 , 28.350816045175] , [ 1282190400000 , 28.027792501971] , [ 1282276800000 , 26.928747617346] , [ 1282536000000 , 27.81918002094] , [ 1282622400000 , 27.479582943727] , [ 1282708800000 , 27.401896796598] , [ 1282795200000 , 25.772234596984] , [ 1282881600000 , 27.598614424648] , [ 1283140800000 , 26.550917072205] , [ 1283227200000 , 24.610446801647] , [ 1283313600000 , 28.496548160095] , [ 1283400000000 , 28.280997191492] , [ 1283486400000 , 28.391846047181] , [ 1283832000000 , 28.270233123756] , [ 1283918400000 , 29.30638346881] , [ 1284004800000 , 29.587489278456] , [ 1284091200000 , 30.021254014722] , [ 1284350400000 , 26.999956900205] , [ 1284436800000 , 26.68585346975] , [ 1284523200000 , 27.457958398696] , [ 1284609600000 , 29.945651999548] , [ 1284696000000 , 28.780050148183] , [ 1284955200000 , 26.504410525212] , [ 1285041600000 , 26.467882875554] , [ 1285128000000 , 29.572295475147] , [ 1285214400000 , 29.894729254835] , [ 1285300800000 , 25.192174183101] , [ 1285560000000 , 29.358918928152] , [ 1285646400000 , 26.81887121244] , [ 1285732800000 , 26.954758424088] , [ 1285819200000 , 26.150733527484] , [ 1285905600000 , 26.65569226731] , [ 1286164800000 , 29.948642309605] , [ 1286251200000 , 26.294147683528] , [ 1286337600000 , 26.374682869631] , [ 1286424000000 , 26.057344371343] , [ 1286510400000 , 26.544970326787] , [ 1286769600000 , 25.299375717171] , [ 1286856000000 , 28.078879867239] , [ 1286942400000 , 25.955451031994] , [ 1287028800000 , 27.189249800684] , [ 1287115200000 , 26.796275282338] , [ 1287374400000 , 25.217617743921] , [ 1287460800000 , 29.238805363492] , [ 1287547200000 , 28.946072278759] , [ 1287633600000 , 28.008506235957] , [ 1287720000000 , 27.305441046523] , [ 1287979200000 , 28.335679740985] , [ 1288065600000 , 28.220333339395] , [ 1288152000000 , 28.506512667082] , [ 1288238400000 , 27.773348759251] , [ 1288324800000 , 25.940932725812] , [ 1288584000000 , 25.59791953974] , [ 1288670400000 , 25.681175702664] , [ 1288756800000 , 25.646894232049] , [ 1288843200000 , 24.967778139194] , [ 1288929600000 , 24.891827913103] , [ 1289192400000 , 25.301225710323] , [ 1289278800000 , 25.304241006654] , [ 1289365200000 , 23.465443455061] , [ 1289451600000 , 23.666166952522] , [ 1289538000000 , 24.30829532118] , [ 1289797200000 , 25.98815437182] , [ 1289883600000 , 24.253067150498] , [ 1289970000000 , 24.589841126735] , [ 1290056400000 , 24.478150838241] , [ 1290142800000 , 24.264923577722] , [ 1290402000000 , 24.461576297796] , [ 1290488400000 , 26.687181172881] , [ 1290574800000 , 24.218795290926] , [ 1290747600000 , 23.987641827989] , [ 1291006800000 , 24.409569574947] , [ 1291093200000 , 24.327948314822] , [ 1291179600000 , 24.725033054579] , [ 1291266000000 , 24.262134759276] , [ 1291352400000 , 22.568806637867] , [ 1291611600000 , 22.967575266776] , [ 1291698000000 , 22.550488639479] , [ 1291784400000 , 23.67497086544] , [ 1291870800000 , 24.137172801979] , [ 1291957200000 , 22.981580578993] , [ 1292216400000 , 22.558038285034] , [ 1292302800000 , 22.551465967923] , [ 1292389200000 , 22.594528497073] , [ 1292475600000 , 23.025413377409] , [ 1292562000000 , 22.556822593744] , [ 1292821200000 , 21.029906943726] , [ 1292907600000 , 21.126454422318] , [ 1292994000000 , 22.737113958843] , [ 1293080400000 , 22.615473658196] , [ 1293426000000 , 22.39973019936] , [ 1293512400000 , 22.94150655225] , [ 1293598800000 , 22.643969299434] , [ 1293685200000 , 22.428258726111] , [ 1293771600000 , 21.935794150613] , [ 1294030800000 , 22.48476403799] , [ 1294117200000 , 22.422814900946] , [ 1294203600000 , 21.844187970021] , [ 1294290000000 , 24.268661124172] , [ 1294376400000 , 26.145003041675] , [ 1294635600000 , 24.091635107832] , [ 1294722000000 , 23.448108216687] , [ 1294808400000 , 24.199622375256] , [ 1294894800000 , 24.421278289587] , [ 1294981200000 , 21.259612727431] , [ 1295326800000 , 18.228849328362] , [ 1295413200000 , 22.324800869748] , [ 1295499600000 , 20.259979186891] , [ 1295586000000 , 21.878117916651] , [ 1295845200000 , 21.726336390467] , [ 1295931600000 , 23.453803728285] , [ 1296018000000 , 19.007222901012] , [ 1296104400000 , 18.958582349255] , [ 1296190800000 , 21.347589089244] , [ 1296450000000 , 21.082746351041] , [ 1296536400000 , 23.095455619962] , [ 1296622800000 , 22.412037821112] , [ 1296709200000 , 22.729984157992] , [ 1296795600000 , 22.780949220135] , [ 1297054800000 , 22.129547081673] , [ 1297141200000 , 20.7926222999] , [ 1297227600000 , 19.826288095563] , [ 1297314000000 , 19.719960604559] , [ 1297400400000 , 19.270517050316] , [ 1297659600000 , 19.773679761293] , [ 1297746000000 , 19.780429945671] , [ 1297832400000 , 18.468269341813] , [ 1297918800000 , 18.271614490515] , [ 1298005200000 , 18.531394945136] , [ 1298350800000 , 19.66539104513] , [ 1298437200000 , 21.973220001027] , [ 1298523600000 , 22.820822913293] , [ 1298610000000 , 20.187580954545] , [ 1298869200000 , 19.590340164452] , [ 1298955600000 , 22.891819768291] , [ 1299042000000 , 19.841880679018] , [ 1299128400000 , 20.330719272606] , [ 1299214800000 , 22.017232223715] , [ 1299474000000 , 22.170214817411] , [ 1299560400000 , 21.753196882447] , [ 1299646800000 , 19.708942145181] , [ 1299733200000 , 20.984970114575] , [ 1299819600000 , 21.154239281085] , [ 1300075200000 , 21.572692041089] , [ 1300161600000 , 23.211076234884] , [ 1300248000000 , 21.332720936513] , [ 1300334400000 , 21.083386364962] , [ 1300420800000 , 21.563630887333] , [ 1300680000000 , 20.078376027162] , [ 1300766400000 , 21.936057212852] , [ 1300852800000 , 21.283229802872] , [ 1300939200000 , 21.59996347062] , [ 1301025600000 , 19.981377947696] , [ 1301284800000 , 21.327816244231] , [ 1301371200000 , 20.070923644002] , [ 1301457600000 , 20.223448675649] , [ 1301544000000 , 20.378316523796] , [ 1301630400000 , 19.60384061788] , [ 1301889600000 , 20.082347129411] , [ 1301976000000 , 20.766827561109] , [ 1302062400000 , 20.56998967709] , [ 1302148800000 , 20.835522832453] , [ 1302235200000 , 20.621041131763] , [ 1302494400000 , 20.862612863662] , [ 1302580800000 , 20.949384809823] , [ 1302667200000 , 20.259674901114] , [ 1302753600000 , 20.298065987261] , [ 1302840000000 , 19.744295596235] , [ 1303099200000 , 19.834175026131] , [ 1303185600000 , 19.80597088809] , [ 1303272000000 , 19.639597995502] , [ 1303358400000 , 19.889573610719] , [ 1303704000000 , 19.376579694515] , [ 1303790400000 , 19.223546183384] , [ 1303876800000 , 18.085651157812] , [ 1303963200000 , 18.330566101579] , [ 1304049600000 , 18.533381907866] , [ 1304308800000 , 19.062961669981] , [ 1304395200000 , 22.369954028086] , [ 1304481600000 , 22.78948654317] , [ 1304568000000 , 22.202870121048] , [ 1304654400000 , 22.908323144891] , [ 1304913600000 , 23.414786154606] , [ 1305000000000 , 24.271289797312] , [ 1305086400000 , 23.783550290831] , [ 1305172800000 , 24.012484519869] , [ 1305259200000 , 24.36996382653] , [ 1305518400000 , 23.503956869244] , [ 1305604800000 , 23.870292616412] , [ 1305691200000 , 23.680020772089] , [ 1305777600000 , 21.749194229278] , [ 1305864000000 , 23.523654852151] , [ 1306123200000 , 25.057418219823] , [ 1306209600000 , 25.095989717275] , [ 1306296000000 , 25.246462677114] , [ 1306382400000 , 25.329279050008] , [ 1306468800000 , 23.731942569802] , [ 1306814400000 , 22.85305404152] , [ 1306900800000 , 22.076875455589] , [ 1306987200000 , 21.524198070308] , [ 1307073600000 , 23.972185571268] , [ 1307332800000 , 24.19768306555] , [ 1307419200000 , 24.494354673002] , [ 1307505600000 , 23.50566827752] , [ 1307592000000 , 23.524668869758] , [ 1307678400000 , 22.726351077677] , [ 1307937600000 , 22.476750334215] , [ 1308024000000 , 22.227199331415] , [ 1308110400000 , 22.087275632346] , [ 1308196800000 , 22.123918718961] , [ 1308283200000 , 21.816512853684] , [ 1308542400000 , 21.612108937632] , [ 1308628800000 , 21.491447183877] , [ 1308715200000 , 22.511746949304] , [ 1308801600000 , 21.941593903184] , [ 1308888000000 , 21.747502094317] , [ 1309147200000 , 22.815509942054] , [ 1309233600000 , 22.348003742121] , [ 1309320000000 , 22.511894720579] , [ 1309406400000 , 22.567463786775] , [ 1309492800000 , 21.448413915891] , [ 1309838400000 , 21.233016489832] , [ 1309924800000 , 23.469822957393] , [ 1310011200000 , 20.556958824859] , [ 1310097600000 , 20.368289351917] , [ 1310356800000 , 22.364638915875] , [ 1310443200000 , 22.429253041611] , [ 1310529600000 , 23.140402366033] , [ 1310616000000 , 22.786575841648] , [ 1310702400000 , 22.6535371556] , [ 1310961600000 , 22.222070370013] , [ 1311048000000 , 22.634941100329] , [ 1311134400000 , 22.577026038515] , [ 1311220800000 , 22.743173047738] , [ 1311307200000 , 19.955845367921] , [ 1311566400000 , 19.402607778325] , [ 1311652800000 , 19.253926915294] , [ 1311739200000 , 22.440497288414] , [ 1311825600000 , 20.127325131893] , [ 1311912000000 , 20.143632322935] , [ 1314763200000 , 22.312375995313] , [ 1314849600000 , 21.29036308519] , [ 1314936000000 , 21.845411255407] , [ 1315281600000 , 20.494384290589] , [ 1315368000000 , 21.001264659739] , [ 1315454400000 , 21.568705339832] , [ 1315540800000 , 21.506987601522] , [ 1315800000000 , 21.177312660135] , [ 1315886400000 , 21.868862897889] , [ 1315972800000 , 21.071764151565] , [ 1316059200000 , 21.490618475219] , [ 1316145600000 , 22.060908679368] , [ 1316404800000 , 21.362380058669] , [ 1316491200000 , 19.501621337539] , [ 1316577600000 , 19.002759253579] , [ 1316664000000 , 18.078449446615] , [ 1316750400000 , 18.949248830223] , [ 1317009600000 , 20.156156797533] , [ 1317096000000 , 20.756701014073] , [ 1317182400000 , 20.731186204217] , [ 1317268800000 , 18.771142897018] , [ 1317355200000 , 16.191064318512] , [ 1317614400000 , 15.206557534729] , [ 1317700800000 , 15.175135526032] , [ 1317787200000 , 15.866396789013] , [ 1317873600000 , 17.650368230794] , [ 1317960000000 , 17.240218968573] , [ 1318219200000 , 16.400550273503] , [ 1318305600000 , 16.3845361397] , [ 1318392000000 , 16.796836976786] , [ 1318478400000 , 16.938277456269] , [ 1318564800000 , 17.081187022189] , [ 1318824000000 , 16.451626441279] , [ 1318910400000 , 17.079582458865] , [ 1318996800000 , 17.066407588654] , [ 1319083200000 , 16.977407624556] , [ 1319169600000 , 17.446016192139] , [ 1319428800000 , 17.546943155193] , [ 1319515200000 , 17.094842621633] , [ 1319601600000 , 17.197391585973] , [ 1319688000000 , 17.670124220099] , [ 1319774400000 , 17.890559199263] , [ 1320033600000 , 17.504350123505] , [ 1320120000000 , 17.969069937755] , [ 1320206400000 , 18.369831017329] , [ 1320292800000 , 18.63351356547] , [ 1320379200000 , 18.943165342373] , [ 1320642000000 , 18.55841847658] , [ 1320728400000 , 18.333742741079] , [ 1320814800000 , 17.804195816594] , [ 1320901200000 , 18.303336555725] , [ 1320987600000 , 18.419835990016] , [ 1321246800000 , 18.564494408352] , [ 1321333200000 , 18.706475912297] , [ 1321419600000 , 18.287978832777] , [ 1321506000000 , 16.806014453248] , [ 1321592400000 , 16.573853512606] , [ 1321851600000 , 16.278677060256] , [ 1321938000000 , 15.852567514369] , [ 1322024400000 , 15.792459271772] , [ 1322197200000 , 15.771749097141] , [ 1322456400000 , 16.463980243989] , [ 1322542800000 , 17.849970037078] , [ 1322629200000 , 19.086207895423] , [ 1322715600000 , 17.984373349817] , [ 1322802000000 , 17.817600309678] , [ 1323061200000 , 18.183904534131] , [ 1323147600000 , 18.278547637501] , [ 1323234000000 , 18.098597632969] , [ 1323320400000 , 17.950155177891] , [ 1323406800000 , 17.992701543141] , [ 1323666000000 , 17.707108742335] , [ 1323752400000 , 17.106169060494] , [ 1323838800000 , 16.879044143327] , [ 1323925200000 , 15.703650051148] , [ 1324011600000 , 17.03786588506] , [ 1324270800000 , 15.730453362729] , [ 1324357200000 , 17.178449451571] , [ 1324443600000 , 16.128601580221] , [ 1324530000000 , 16.444514501668] , [ 1324616400000 , 16.367515592583] , [ 1324962000000 , 16.680559361738] , [ 1325048400000 , 16.182230963286] , [ 1325134800000 , 16.252245100018] , [ 1325221200000 , 16.848301869417] , [ 1325566800000 , 20.240025778105] , [ 1325653200000 , 20.131966646648] , [ 1325739600000 , 20.718565505576] , [ 1325826000000 , 20.852860702513] , [ 1326085200000 , 20.839150525655] , [ 1326171600000 , 20.832350512944] , [ 1326258000000 , 22.184151627169] , [ 1326344400000 , 22.440196121423] , [ 1326430800000 , 22.111700718881] , [ 1326776400000 , 22.242221555829] , [ 1326862800000 , 22.359201623444] , [ 1326949200000 , 22.412837491698] , [ 1327035600000 , 22.633953919333] , [ 1327294800000 , 22.832695812645] , [ 1327381200000 , 22.819383159278] , [ 1327467600000 , 22.121735655105] , [ 1327554000000 , 22.792767113343] , [ 1327640400000 , 23.429926311061] , [ 1327899600000 , 23.164696661813] , [ 1327986000000 , 22.446504371253] , [ 1328072400000 , 23.177192530626] , [ 1328158800000 , 20.802030833161] , [ 1328245200000 , 21.206277566764] , [ 1328504400000 , 20.803932254935] , [ 1328590800000 , 20.905318438671] , [ 1328677200000 , 21.118875695012] , [ 1328763600000 , 20.060946674808] , [ 1328850000000 , 19.976531529243] , [ 1329109200000 , 22.297368165622] , [ 1329195600000 , 22.060842770554] , [ 1329282000000 , 19.956934384488] , [ 1329368400000 , 19.640001354968] , [ 1329454800000 , 19.475145483016] , [ 1329800400000 , 22.381415384231] , [ 1329886800000 , 22.373447173711] , [ 1329973200000 , 20.320552206406] , [ 1330059600000 , 22.254781193155] , [ 1330318800000 , 22.555960613111] , [ 1330405200000 , 22.346273919032] , [ 1330491600000 , 21.728534744001] , [ 1330578000000 , 21.381268866906] , [ 1330664400000 , 21.752676586327] , [ 1330923600000 , 21.304900254731] , [ 1331010000000 , 21.603935555692] , [ 1331096400000 , 20.75840695927] , [ 1331182800000 , 20.876297133647] , [ 1331269200000 , 21.109951987892] , [ 1331524800000 , 20.974819713599] , [ 1331611200000 , 21.650754195745] , [ 1331697600000 , 21.486986393481] , [ 1331784000000 , 21.731413795962] , [ 1331870400000 , 21.559861531547] , [ 1332129600000 , 20.957089690516] , [ 1332216000000 , 21.283167163079] , [ 1332302400000 , 21.338954084611] , [ 1332388800000 , 21.3444031056] , [ 1332475200000 , 21.617798529858] , [ 1332734400000 , 21.316809806518] , [ 1332820800000 , 21.589839281434] , [ 1332907200000 , 21.100908321146] , [ 1332993600000 , 21.393302540964] , [ 1333080000000 , 21.034057096975] , [ 1333339200000 , 22.778206720699] , [ 1333425600000 , 21.191337490764] , [ 1333512000000 , 21.494718264334] , [ 1333598400000 , 21.751260379606] , [ 1333944000000 , 21.771205695747] , [ 1334030400000 , 20.674327028188] , [ 1334116800000 , 20.793809068912] , [ 1334203200000 , 21.634928440489] , [ 1334289600000 , 21.465101613771] , [ 1334548800000 , 21.308985573517] , [ 1334635200000 , 21.983740906278] , [ 1334721600000 , 21.204851850294] , [ 1334808000000 , 20.878623851535] , [ 1334894400000 , 21.258053688953] , [ 1335153600000 , 20.958670391813] , [ 1335240000000 , 20.915942167619] , [ 1335326400000 , 21.234562948807] , [ 1335412800000 , 21.356401321339] , [ 1335499200000 , 21.367305836487] , [ 1335758400000 , 21.06181346601]]} , { "key" : "Small Cap (250MM-2B)" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 3.8620804466145] , [ 1028174400000 , 4.3176385462579] , [ 1028260800000 , 4.3013687899814] , [ 1028520000000 , 4.9992072271404] , [ 1028606400000 , 4.2567717722041] , [ 1028692800000 , 4.3194153642585] , [ 1028779200000 , 4.2625960229683] , [ 1028865600000 , 4.3244261502053] , [ 1029124800000 , 4.3304321263023] , [ 1029211200000 , 4.1517675844473] , [ 1029297600000 , 4.2252288599937] , [ 1029384000000 , 4.2277354138208] , [ 1029470400000 , 4.3550826538906] , [ 1029729600000 , 3.9397586220988] , [ 1029816000000 , 3.4169329063882] , [ 1029902400000 , 3.6875005171252] , [ 1029988800000 , 4.048880287207] , [ 1030075200000 , 3.6966752430108] , [ 1030334400000 , 3.7173634274879] , [ 1030420800000 , 4.0985697320555] , [ 1030507200000 , 3.9636839178967] , [ 1030593600000 , 3.6736655970805] , [ 1030680000000 , 4.3472441144356] , [ 1031025600000 , 3.9753952237385] , [ 1031112000000 , 4.042003278398] , [ 1031198400000 , 3.8537285299803] , [ 1031284800000 , 3.8813838230856] , [ 1031544000000 , 3.886769150701] , [ 1031630400000 , 3.946636853449] , [ 1031716800000 , 3.9653973783377] , [ 1031803200000 , 3.8576474336814] , [ 1031889600000 , 3.503583669769] , [ 1032148800000 , 3.3304129380009] , [ 1032235200000 , 3.2517840425404] , [ 1032321600000 , 3.7770281064242] , [ 1032408000000 , 3.6444796613163] , [ 1032494400000 , 4.0413161436998] , [ 1032753600000 , 4.0559814432677] , [ 1032840000000 , 4.159419008864] , [ 1032926400000 , 4.2969505530807] , [ 1033012800000 , 3.9536344013462] , [ 1033099200000 , 4.0329958851123] , [ 1033358400000 , 4.2042225513188] , [ 1033444800000 , 4.4029349272723] , [ 1033531200000 , 4.2688734913153] , [ 1033617600000 , 4.2393724624568] , [ 1033704000000 , 4.1467954465149] , [ 1033963200000 , 4.2285843239393] , [ 1034049600000 , 3.9801269716178] , [ 1034136000000 , 6.7502461367378] , [ 1034222400000 , 6.4239719546122] , [ 1034308800000 , 6.5755784647836] , [ 1034568000000 , 6.4600234054698] , [ 1034654400000 , 4.9077041342217] , [ 1034740800000 , 7.0194713263893] , [ 1034827200000 , 6.4543919846838] , [ 1034913600000 , 4.2701743643567] , [ 1035172800000 , 4.3368409963081] , [ 1035259200000 , 4.3296368544987] , [ 1035345600000 , 4.3167044883653] , [ 1035432000000 , 4.3024226581884] , [ 1035518400000 , 4.4778979611573] , [ 1035781200000 , 4.4390846060489] , [ 1035867600000 , 4.2524183988711] , [ 1035954000000 , 4.3126546455849] , [ 1036040400000 , 4.2858053159855] , [ 1036126800000 , 4.7515173925457] , [ 1036386000000 , 3.5555998429186] , [ 1036472400000 , 5.7654634512653] , [ 1036558800000 , 5.7255756620025] , [ 1036645200000 , 5.9746872504727] , [ 1036731600000 , 6.7032763577582] , [ 1036990800000 , 6.9283967898845] , [ 1037077200000 , 6.9267184132045] , [ 1037163600000 , 6.9490440785846] , [ 1037250000000 , 5.5289423498995] , [ 1037336400000 , 5.5439096533014] , [ 1037595600000 , 5.6607510916596] , [ 1037682000000 , 5.5708091639207] , [ 1037768400000 , 5.5947299232259] , [ 1037854800000 , 5.558087070657] , [ 1037941200000 , 5.6332497181246] , [ 1038200400000 , 5.7602562089301] , [ 1038286800000 , 5.6560592961571] , [ 1038373200000 , 5.7612278728759] , [ 1038546000000 , 3.6703847832416] , [ 1038805200000 , 5.8325229693334] , [ 1038891600000 , 5.506222051039] , [ 1038978000000 , 5.5739180445041] , [ 1039064400000 , 5.4927283974812] , [ 1039150800000 , 6.5665782959799] , [ 1039410000000 , 6.0670025991213] , [ 1039496400000 , 5.5479592919401] , [ 1039582800000 , 5.3983033339071] , [ 1039669200000 , 4.7367972355009] , [ 1039755600000 , 5.2877795417463] , [ 1040014800000 , 5.1451262856279] , [ 1040101200000 , 5.0295471424258] , [ 1040187600000 , 5.075571884014] , [ 1040274000000 , 5.2272436330748] , [ 1040360400000 , 5.6472310815817] , [ 1040619600000 , 5.2524528987366] , [ 1040706000000 , 5.2716790785115] , [ 1040878800000 , 5.1944294030096] , [ 1040965200000 , 5.813213477744] , [ 1041224400000 , 5.5328250389927] , [ 1041310800000 , 4.5976535990161] , [ 1041483600000 , 4.7510089011021] , [ 1041570000000 , 4.2695752124746] , [ 1041829200000 , 4.3046603378027] , [ 1041915600000 , 4.3964087087907] , [ 1042002000000 , 4.6964465006103] , [ 1042088400000 , 4.2183770748391] , [ 1042174800000 , 4.4348438232503] , [ 1042434000000 , 4.2803453692337] , [ 1042520400000 , 4.2920671874758] , [ 1042606800000 , 4.3645393578616] , [ 1042693200000 , 4.3127070019325] , [ 1042779600000 , 4.8440471863362] , [ 1043125200000 , 4.5413725030532] , [ 1043211600000 , 4.5262659222684] , [ 1043298000000 , 4.4474430068025] , [ 1043384400000 , 4.3524741832798] , [ 1043643600000 , 4.8466747335975] , [ 1043730000000 , 4.5932416285603] , [ 1043816400000 , 4.4695988446547] , [ 1043902800000 , 4.5530600392767] , [ 1043989200000 , 4.5177932953535] , [ 1044248400000 , 5.0059916347378] , [ 1044334800000 , 4.5164500117588] , [ 1044421200000 , 5.2874820145085] , [ 1044507600000 , 5.5426436844915] , [ 1044594000000 , 5.4932938658274] , [ 1044853200000 , 5.5423945802748] , [ 1044939600000 , 5.4101450573171] , [ 1045026000000 , 5.3087690884921] , [ 1045112400000 , 5.2880558456399] , [ 1045198800000 , 5.415722724421] , [ 1045544400000 , 4.9796472716613] , [ 1045630800000 , 5.3454582961108] , [ 1045717200000 , 5.307348397439] , [ 1045803600000 , 4.6831289181459] , [ 1046062800000 , 5.2367400263671] , [ 1046149200000 , 4.8317426862041] , [ 1046235600000 , 4.76122676879] , [ 1046322000000 , 4.7097821987599] , [ 1046408400000 , 4.7789711464909] , [ 1046667600000 , 4.6852034745146] , [ 1046754000000 , 4.5509207836993] , [ 1046840400000 , 5.0439314247003] , [ 1046926800000 , 4.9143831614728] , [ 1047013200000 , 4.3685655621745] , [ 1047272400000 , 4.884194720098] , [ 1047358800000 , 4.6984178208758] , [ 1047445200000 , 4.7806486265743] , [ 1047531600000 , 4.5015962809188] , [ 1047618000000 , 4.5387956234262] , [ 1047877200000 , 4.5307751600788] , [ 1047963600000 , 4.1149410094866] , [ 1048050000000 , 4.2149631589866] , [ 1048136400000 , 4.2097564889472] , [ 1048222800000 , 4.3788933698418] , [ 1048482000000 , 4.761270364544] , [ 1048568400000 , 4.7140550401528] , [ 1048654800000 , 4.5616983700234] , [ 1048741200000 , 4.564023981857] , [ 1048827600000 , 4.606219528503] , [ 1049086800000 , 5.4408913825225] , [ 1049173200000 , 5.5033561472653] , [ 1049259600000 , 5.2285135957919] , [ 1049346000000 , 5.7718095490645] , [ 1049432400000 , 5.7499966552938] , [ 1049688000000 , 5.8478661017785] , [ 1049774400000 , 5.9043047706447] , [ 1049860800000 , 5.7872986193248] , [ 1049947200000 , 5.8613489584169] , [ 1050033600000 , 6.0948261270436] , [ 1050292800000 , 6.0740464796495] , [ 1050379200000 , 6.1367845594565] , [ 1050465600000 , 5.9073058432377] , [ 1050552000000 , 5.9082215955743] , [ 1050897600000 , 5.9988182051613] , [ 1050984000000 , 3.9684729973834] , [ 1051070400000 , 4.0370328544847] , [ 1051156800000 , 5.5018299467167] , [ 1051243200000 , 5.6244660300099] , [ 1051502400000 , 3.9572529793979] , [ 1051588800000 , 4.0006857020832] , [ 1051675200000 , 4.0567930226932] , [ 1051761600000 , 3.900894588467] , [ 1051848000000 , 3.9150614570377] , [ 1052107200000 , 4.1300852174433] , [ 1052193600000 , 3.9920739498757] , [ 1052280000000 , 4.1020694295758] , [ 1052366400000 , 4.0156937473639] , [ 1052452800000 , 3.934814534074] , [ 1052712000000 , 4.018609992625] , [ 1052798400000 , 4.1506946404048] , [ 1052884800000 , 4.1993789123694] , [ 1052971200000 , 3.6937778411279] , [ 1053057600000 , 3.3155547642052] , [ 1053316800000 , 4.0696072870642] , [ 1053403200000 , 4.0910202611485] , [ 1053489600000 , 4.016355720699] , [ 1053576000000 , 4.0015329399337] , [ 1053662400000 , 4.0418469364687] , [ 1054008000000 , 3.7836336561428] , [ 1054094400000 , 3.7815960559094] , [ 1054180800000 , 3.8685130610845] , [ 1054267200000 , 2.8375964678971] , [ 1054526400000 , 3.0260170206941] , [ 1054612800000 , 3.8517760868521] , [ 1054699200000 , 4.0871889720479] , [ 1054785600000 , 3.1406171088481] , [ 1054872000000 , 4.1772702788735] , [ 1055131200000 , 4.0345728383825] , [ 1055217600000 , 4.0534566287035] , [ 1055304000000 , 3.3706921203709] , [ 1055390400000 , 3.472022034094] , [ 1055476800000 , 3.4525092749528] , [ 1055736000000 , 3.3534418931261] , [ 1055822400000 , 3.440373564283] , [ 1055908800000 , 3.4259275639372] , [ 1055995200000 , 3.3207687964276] , [ 1056081600000 , 3.3859717115628] , [ 1056340800000 , 3.2578786594837] , [ 1056427200000 , 3.3082214535467] , [ 1056513600000 , 3.2731689681795] , [ 1056600000000 , 3.325954221235] , [ 1056686400000 , 3.3226270589837] , [ 1056945600000 , 2.5708967342479] , [ 1057032000000 , 2.6164118611278] , [ 1057118400000 , 2.6920972001194] , [ 1057204800000 , 2.6458626837908] , [ 1057550400000 , 2.7034148470947] , [ 1057636800000 , 2.6997040482666] , [ 1057723200000 , 2.7140627555433] , [ 1057809600000 , 2.7614903874923] , [ 1057896000000 , 2.7576567615574] , [ 1058155200000 , 2.8105965829945] , [ 1058241600000 , 2.5528552750512] , [ 1058328000000 , 2.5026384478339] , [ 1058414400000 , 2.7008233949462] , [ 1058500800000 , 2.7703410547957] , [ 1058760000000 , 2.7175788890086] , [ 1058846400000 , 2.0185751224298] , [ 1058932800000 , 1.9724988489976] , [ 1059019200000 , 1.9577664980851] , [ 1059105600000 , 1.9200041827333] , [ 1059364800000 , 1.9935335111628] , [ 1059451200000 , 1.9491948446029] , [ 1059537600000 , 1.8943179030446] , [ 1059624000000 , 1.985909780469] , [ 1059710400000 , 1.9423587948316] , [ 1059969600000 , 1.9151728635918] , [ 1060056000000 , 2.7389993527887] , [ 1060142400000 , 2.6956984647066] , [ 1060228800000 , 2.6105098034892] , [ 1060315200000 , 2.6057163219235] , [ 1060574400000 , 2.5989871633281] , [ 1060660800000 , 2.6587323530382] , [ 1060747200000 , 2.6566910961028] , [ 1060833600000 , 2.554223770043] , [ 1060920000000 , 2.7015130041478] , [ 1061179200000 , 1.9442552327487] , [ 1061265600000 , 1.8890822131991] , [ 1061352000000 , 1.957779918149] , [ 1061438400000 , 1.8957815147709] , [ 1061524800000 , 1.8728337703864] , [ 1061784000000 , 1.9021460845255] , [ 1061870400000 , 1.8994290016279] , [ 1061956800000 , 2.0036671055018] , [ 1062043200000 , 1.3940226063746] , [ 1062129600000 , 1.3243621143698] , [ 1062475200000 , 1.3854722578043] , [ 1062561600000 , 1.3298180185616] , [ 1062648000000 , 1.3673894620209] , [ 1062734400000 , 1.3316049431981] , [ 1062993600000 , 1.340020412481] , [ 1063080000000 , 1.3026716314854] , [ 1063166400000 , 1.3207463795227] , [ 1063252800000 , 1.8628566804193] , [ 1063339200000 , 1.8482891853909] , [ 1063598400000 , 1.9045916584585] , [ 1063684800000 , 1.837742353553] , [ 1063771200000 , 1.9024754973246] , [ 1063857600000 , 1.8607688729118] , [ 1063944000000 , 1.3096795532289] , [ 1064203200000 , 1.8338364105511] , [ 1064289600000 , 1.8003208581704] , [ 1064376000000 , 1.811090963193] , [ 1064462400000 , 1.8002083517034] , [ 1064548800000 , 1.765936224515] , [ 1064808000000 , 1.7605645888026] , [ 1064894400000 , 2.3533837103512] , [ 1064980800000 , 2.5578066779139] , [ 1065067200000 , 2.6021325845301] , [ 1065153600000 , 2.610160353775] , [ 1065412800000 , 2.3995649422623] , [ 1065499200000 , 2.4188553889039] , [ 1065585600000 , 2.3601292493772] , [ 1065672000000 , 2.4142632443561] , [ 1065758400000 , 2.332472625984] , [ 1066017600000 , 2.3821342709168] , [ 1066104000000 , 2.3253429229386] , [ 1066190400000 , 2.3664716603706] , [ 1066276800000 , 2.4233217832875] , [ 1066363200000 , 2.3744114954904] , [ 1066622400000 , 2.3242267756738] , [ 1066708800000 , 2.3170454505916] , [ 1066795200000 , 2.3198028213604] , [ 1066881600000 , 2.3448199873629] , [ 1066968000000 , 2.2738078648518] , [ 1067230800000 , 2.2765201113944] , [ 1067317200000 , 2.3588346399806] , [ 1067403600000 , 2.3212752066114] , [ 1067490000000 , 2.3163255863937] , [ 1067576400000 , 2.3745825813123] , [ 1067835600000 , 2.3462733095574] , [ 1067922000000 , 2.2932927987058] , [ 1068008400000 , 2.3373215034755] , [ 1068094800000 , 2.2725306567513] , [ 1068181200000 , 2.3917906270981] , [ 1068440400000 , 2.2655553659808] , [ 1068526800000 , 2.310910959511] , [ 1068613200000 , 2.3195770502019] , [ 1068699600000 , 2.2912225722456] , [ 1068786000000 , 2.2569818877933] , [ 1069045200000 , 2.2289448833129] , [ 1069131600000 , 2.218422685586] , [ 1069218000000 , 2.2376872406885] , [ 1069304400000 , 2.2375961111559] , [ 1069390800000 , 2.2149950848478] , [ 1069650000000 , 2.2393607354044] , [ 1069736400000 , 2.2481596978119] , [ 1069822800000 , 1.7585060687227] , [ 1069995600000 , 1.7788982163799] , [ 1070254800000 , 1.9148614258469] , [ 1070341200000 , 1.8927511306448] , [ 1070427600000 , 1.8918271126637] , [ 1070514000000 , 1.9549925531458] , [ 1070600400000 , 1.8923430458209] , [ 1070859600000 , 1.9364165361772] , [ 1070946000000 , 1.4769360533289] , [ 1071032400000 , 1.4513767210474] , [ 1071118800000 , 1.4710731378087] , [ 1071205200000 , 1.4205989301242] , [ 1071464400000 , 1.4234994752185] , [ 1071550800000 , 1.8427770516821] , [ 1071637200000 , 1.8638708455538] , [ 1071723600000 , 1.9497158345991] , [ 1071810000000 , 1.9635521651203] , [ 1072069200000 , 1.8689155075034] , [ 1072155600000 , 1.9260144738829] , [ 1072242000000 , 1.8827565428604] , [ 1072414800000 , 1.9192658985892] , [ 1072674000000 , 1.8963393900065] , [ 1072760400000 , 1.8679186621707] , [ 1072846800000 , 2.5726272542883] , [ 1073019600000 , 2.6031822324428] , [ 1073278800000 , 2.6628120857886] , [ 1073365200000 , 2.6285242251023] , [ 1073451600000 , 2.6679861214776] , [ 1073538000000 , 2.3143736151973] , [ 1073624400000 , 2.6160317373105] , [ 1073883600000 , 2.2854270547956] , [ 1073970000000 , 2.5324487245205] , [ 1074056400000 , 2.2267342184644] , [ 1074142800000 , 2.3036203276638] , [ 1074229200000 , 2.3354761247737] , [ 1074574800000 , 2.405556806451] , [ 1074661200000 , 2.3291039355677] , [ 1074747600000 , 2.3467433074347] , [ 1074834000000 , 2.3997917116702] , [ 1075093200000 , 2.3690925799406] , [ 1075179600000 , 2.3062259085558] , [ 1075266000000 , 2.3229987814369] , [ 1075352400000 , 2.676578933804] , [ 1075438800000 , 2.5563937985446] , [ 1075698000000 , 2.7638503104826] , [ 1075784400000 , 2.7274850479449] , [ 1075870800000 , 2.6455838118095] , [ 1075957200000 , 2.7163042315533] , [ 1076043600000 , 2.6932253554656] , [ 1076302800000 , 2.6684383753015] , [ 1076389200000 , 2.7381170486182] , [ 1076475600000 , 2.7691902636693] , [ 1076562000000 , 2.8100168385674] , [ 1076648400000 , 2.6243482647816] , [ 1076994000000 , 2.7891693137676] , [ 1077080400000 , 2.6482123891634] , [ 1077166800000 , 2.5980511302957] , [ 1077253200000 , 2.6065792628998] , [ 1077512400000 , 2.5818909995678] , [ 1077598800000 , 2.5185711818756] , [ 1077685200000 , 2.5826209270431] , [ 1077771600000 , 2.5677991742216] , [ 1077858000000 , 2.5595132570808] , [ 1078117200000 , 2.6464015515661] , [ 1078203600000 , 2.7064377516549] , [ 1078290000000 , 2.7488882320609] , [ 1078376400000 , 2.7994078870317] , [ 1078462800000 , 2.8046592463289] , [ 1078722000000 , 2.7442701268229] , [ 1078808400000 , 2.7563266220511] , [ 1078894800000 , 2.7004794191501] , [ 1078981200000 , 2.735182958215] , [ 1079067600000 , 2.8053434005564] , [ 1079326800000 , 2.74684290332] , [ 1079413200000 , 2.7400749365906] , [ 1079499600000 , 2.7711386760201] , [ 1079586000000 , 2.849317559965] , [ 1079672400000 , 2.7741963276387] , [ 1079931600000 , 2.7803484316719] , [ 1080018000000 , 2.6772244108077] , [ 1080104400000 , 2.7821179684294] , [ 1080190800000 , 2.7360695694336] , [ 1080277200000 , 2.8251718224838] , [ 1080536400000 , 2.6223600417862] , [ 1080622800000 , 2.7035844074053] , [ 1080709200000 , 4.5147962184039] , [ 1080795600000 , 4.4399920083068] , [ 1080882000000 , 4.4946106384606] , [ 1081137600000 , 4.5670198594378] , [ 1081224000000 , 4.5402896231891] , [ 1081310400000 , 4.4666349162319] , [ 1081396800000 , 4.9174215501555] , [ 1081742400000 , 4.9246858252862] , [ 1081828800000 , 4.8028149108115] , [ 1081915200000 , 4.7144297817274] , [ 1082001600000 , 4.9728924475777] , [ 1082088000000 , 4.7864459221529] , [ 1082347200000 , 4.8561519263269] , [ 1082433600000 , 4.9009729198413] , [ 1082520000000 , 4.9352245164731] , [ 1082606400000 , 4.7757724520827] , [ 1082692800000 , 4.739422776248] , [ 1082952000000 , 4.7175897011702] , [ 1083038400000 , 5.3043181087674] , [ 1083124800000 , 5.2110987484839] , [ 1083211200000 , 4.6067295248307] , [ 1083297600000 , 4.6761846657013] , [ 1083556800000 , 4.7107137199876] , [ 1083643200000 , 4.7380465440178] , [ 1083729600000 , 4.6464503096187] , [ 1083816000000 , 4.7031898386398] , [ 1083902400000 , 4.6113970455103] , [ 1084161600000 , 4.5190838745349] , [ 1084248000000 , 4.6858240112362] , [ 1084334400000 , 4.645967591812] , [ 1084420800000 , 4.6179790801251] , [ 1084507200000 , 5.2501883804061] , [ 1084766400000 , 5.1783911914071] , [ 1084852800000 , 5.1599386920316] , [ 1084939200000 , 4.6518407898129] , [ 1085025600000 , 5.1780656946077] , [ 1085112000000 , 4.6065725955714] , [ 1085371200000 , 4.6521841635481] , [ 1085457600000 , 4.6647949744288] , [ 1085544000000 , 4.7466682563513] , [ 1085630400000 , 4.7209150506386] , [ 1085716800000 , 4.7009438069063] , [ 1086062400000 , 4.7786628065728] , [ 1086148800000 , 4.7006906862278] , [ 1086235200000 , 4.6189487109535] , [ 1086321600000 , 4.6622697599192] , [ 1086580800000 , 4.7062443082143] , [ 1086667200000 , 4.695677428209] , [ 1086753600000 , 4.6706939793075] , [ 1086840000000 , 4.6740459501668] , [ 1087185600000 , 4.5985200096429] , [ 1087272000000 , 4.8653223546769] , [ 1087358400000 , 4.7689698668777] , [ 1087444800000 , 4.7655140713915] , [ 1087531200000 , 4.9063134360249] , [ 1087790400000 , 4.9618791369691] , [ 1087876800000 , 4.8123002907696] , [ 1087963200000 , 4.7775900637098] , [ 1088049600000 , 4.8453040653958] , [ 1088136000000 , 5.4993674450859] , [ 1088395200000 , 5.4129139149322] , [ 1088481600000 , 5.6474668272735] , [ 1088568000000 , 2.9459514024824] , [ 1088654400000 , 2.8636355267192] , [ 1088740800000 , 2.8823758685952] , [ 1089086400000 , 2.765983593394] , [ 1089172800000 , 2.7906919735841] , [ 1089259200000 , 2.7754951779381] , [ 1089345600000 , 2.7847741457906] , [ 1089604800000 , 2.7887029312795] , [ 1089691200000 , 2.7378583801055] , [ 1089777600000 , 2.7771996196711] , [ 1089864000000 , 2.7193973654833] , [ 1089950400000 , 3.0367387079229] , [ 1090209600000 , 2.9102192685492] , [ 1090296000000 , 2.8863284789122] , [ 1090382400000 , 3.5312012993652] , [ 1090468800000 , 2.9132639655391] , [ 1090555200000 , 3.4563660018193] , [ 1090814400000 , 4.064914860099] , [ 1090900800000 , 3.9808955904664] , [ 1090987200000 , 3.3774648639094] , [ 1091073600000 , 3.3932975139182] , [ 1091160000000 , 3.3634435898808] , [ 1091419200000 , 2.6842232650317] , [ 1091505600000 , 2.6992141448213] , [ 1091592000000 , 3.2365110908137] , [ 1091678400000 , 3.2880379304585] , [ 1091764800000 , 3.1593178568862] , [ 1092024000000 , 3.6516532687154] , [ 1092110400000 , 3.5880646873506] , [ 1092196800000 , 3.1771635204813] , [ 1092283200000 , 3.1721876084837] , [ 1092369600000 , 3.2176177089476] , [ 1092628800000 , 3.2034353772176] , [ 1092715200000 , 3.1868270970914] , [ 1092801600000 , 3.3758225221765] , [ 1092888000000 , 3.2870659277483] , [ 1092974400000 , 3.4094981100458] , [ 1093233600000 , 3.2989085311695] , [ 1093320000000 , 3.3372163179485] , [ 1093406400000 , 3.3241181864077] , [ 1093492800000 , 3.3251202222669] , [ 1093579200000 , 3.2627525320187] , [ 1093838400000 , 3.2804366461928] , [ 1093924800000 , 3.2930816029164] , [ 1094011200000 , 3.2987775832752] , [ 1094097600000 , 3.3504114777327] , [ 1094184000000 , 3.3349874738248] , [ 1094529600000 , 3.3649169666716] , [ 1094616000000 , 3.2821155345039] , [ 1094702400000 , 3.2891033424462] , [ 1094788800000 , 3.3209056210498] , [ 1095048000000 , 3.3132523658143] , [ 1095134400000 , 3.3206869264932] , [ 1095220800000 , 3.2317761078221] , [ 1095307200000 , 3.3040686152239] , [ 1095393600000 , 3.283511287374] , [ 1095652800000 , 3.3197806267901] , [ 1095739200000 , 3.2435626612214] , [ 1095825600000 , 3.2219521895184] , [ 1095912000000 , 3.1028400493867] , [ 1095998400000 , 3.1615455213674] , [ 1096257600000 , 3.1156196407849] , [ 1096344000000 , 3.0914153080422] , [ 1096430400000 , 3.1865217462048] , [ 1096516800000 , 5.0518488419329] , [ 1096603200000 , 5.1570027799701] , [ 1096862400000 , 5.1536745182102] , [ 1096948800000 , 5.1213918743958] , [ 1097035200000 , 5.1966721080305] , [ 1097121600000 , 5.147048844527] , [ 1097208000000 , 5.0706856339838] , [ 1097467200000 , 5.0859530864383] , [ 1097553600000 , 5.0456830476274] , [ 1097640000000 , 5.2595396043871] , [ 1097726400000 , 5.1886141975887] , [ 1097812800000 , 5.178771850935] , [ 1098072000000 , 5.2103490038157] , [ 1098158400000 , 5.3672215044239] , [ 1098244800000 , 5.2942004144955] , [ 1098331200000 , 5.4616306787947] , [ 1098417600000 , 5.3846121749445] , [ 1098676800000 , 5.4121370915606] , [ 1098763200000 , 5.3867988364543] , [ 1098849600000 , 5.3348689003449] , [ 1098936000000 , 5.3713139402836] , [ 1099022400000 , 5.2694840386517] , [ 1099285200000 , 5.36152576613] , [ 1099371600000 , 5.1946013377303] , [ 1099458000000 , 5.147797320317] , [ 1099544400000 , 5.2218787979086] , [ 1099630800000 , 4.2297240196598] , [ 1099890000000 , 4.3309996380213] , [ 1099976400000 , 4.2301546979833] , [ 1100062800000 , 4.3092762880921] , [ 1100149200000 , 4.307769155997] , [ 1100235600000 , 4.3466461736789] , [ 1100494800000 , 4.3219280775212] , [ 1100581200000 , 5.2494205578466] , [ 1100667600000 , 5.2222488985055] , [ 1100754000000 , 5.1258653405894] , [ 1100840400000 , 5.3784172255961] , [ 1101099600000 , 5.0530060175812] , [ 1101186000000 , 5.0772183022875] , [ 1101272400000 , 5.8191089470477] , [ 1101445200000 , 5.1400084985938] , [ 1101704400000 , 5.7740779365756] , [ 1101790800000 , 5.6271381282359] , [ 1101877200000 , 5.0786111486537] , [ 1101963600000 , 4.7395062837164] , [ 1102050000000 , 4.3642819135339] , [ 1102309200000 , 4.8788473714279] , [ 1102395600000 , 4.8651500746862] , [ 1102482000000 , 4.7969720465654] , [ 1102568400000 , 4.706529240595] , [ 1102654800000 , 4.7872099248515] , [ 1102914000000 , 4.7220062790497] , [ 1103000400000 , 4.7968609240264] , [ 1103086800000 , 4.8390614998498] , [ 1103173200000 , 4.8517329290184] , [ 1103259600000 , 4.3149441239551] , [ 1103518800000 , 4.4871738839086] , [ 1103605200000 , 3.9127123546198] , [ 1103691600000 , 3.9490697882161] , [ 1103778000000 , 3.8642590501991] , [ 1104123600000 , 3.8193328881285] , [ 1104210000000 , 3.9444313530846] , [ 1104296400000 , 3.7876611108132] , [ 1104382800000 , 3.786520050655] , [ 1104469200000 , 4.5193477806708] , [ 1104728400000 , 4.6228055593582] , [ 1104814800000 , 4.8822117528037] , [ 1104901200000 , 4.8376908745624] , [ 1104987600000 , 4.7186448795618] , [ 1105074000000 , 4.7944353399991] , [ 1105333200000 , 4.7499493594108] , [ 1105419600000 , 4.7152481485596] , [ 1105506000000 , 4.772652831848] , [ 1105592400000 , 4.6959478389054] , [ 1105678800000 , 4.7469735829486] , [ 1106024400000 , 4.700055727508] , [ 1106110800000 , 4.697406415453] , [ 1106197200000 , 4.6541969609288] , [ 1106283600000 , 4.6482497273687] , [ 1106542800000 , 4.7464410887304] , [ 1106629200000 , 4.5581822800085] , [ 1106715600000 , 4.7046903882937] , [ 1106802000000 , 4.7541955629748] , [ 1106888400000 , 4.5410596563869] , [ 1107147600000 , 4.6068136491387] , [ 1107234000000 , 4.5518194614078] , [ 1107320400000 , 4.6760744238685] , [ 1107406800000 , 4.6122377389551] , [ 1107493200000 , 4.5517592985478] , [ 1107752400000 , 4.5262026746869] , [ 1107838800000 , 4.5453732289779] , [ 1107925200000 , 4.4473264714529] , [ 1108011600000 , 4.7486248237487] , [ 1108098000000 , 4.3628256743521] , [ 1108357200000 , 4.6350356292471] , [ 1108443600000 , 4.6879508818898] , [ 1108530000000 , 4.7824841159706] , [ 1108616400000 , 4.3679659491428] , [ 1108702800000 , 4.6216278685826] , [ 1109048400000 , 5.0512830899827] , [ 1109134800000 , 4.9211833720648] , [ 1109221200000 , 4.6689827360489] , [ 1109307600000 , 4.863177886258] , [ 1109566800000 , 5.0522229845508] , [ 1109653200000 , 4.511951347999] , [ 1109739600000 , 4.7421185783007] , [ 1109826000000 , 4.8763919650863] , [ 1109912400000 , 4.4655489144326] , [ 1110171600000 , 4.4003887205356] , [ 1110258000000 , 4.2953499182215] , [ 1110344400000 , 4.6376552766927] , [ 1110430800000 , 4.7273017292405] , [ 1110517200000 , 4.4087084832154] , [ 1110776400000 , 4.4959542727429] , [ 1110862800000 , 4.8104082635702] , [ 1110949200000 , 4.7689933615242] , [ 1111035600000 , 4.7290525724545] , [ 1111122000000 , 4.6908243119261] , [ 1111381200000 , 4.7793483789065] , [ 1111467600000 , 4.8343465634531] , [ 1111554000000 , 4.8997877767796] , [ 1111640400000 , 4.8446879555825] , [ 1111986000000 , 4.8481563557883] , [ 1112072400000 , 4.8330724960001] , [ 1112158800000 , 4.7915416460397] , [ 1112245200000 , 6.2851880755965] , [ 1112331600000 , 6.0343751778325] , [ 1112587200000 , 5.8527118910045] , [ 1112673600000 , 5.4393652884031] , [ 1112760000000 , 5.4421286369427] , [ 1112846400000 , 5.5758975468671] , [ 1112932800000 , 5.6819929926343] , [ 1113192000000 , 5.5775841136945] , [ 1113278400000 , 5.5436377143446] , [ 1113364800000 , 5.5710773060502] , [ 1113451200000 , 5.6254394490962] , [ 1113537600000 , 5.4684023389132] , [ 1113796800000 , 5.4895294685053] , [ 1113883200000 , 5.5482334857125] , [ 1113969600000 , 5.5547188393831] , [ 1114056000000 , 5.4129389488944] , [ 1114142400000 , 5.4374148337587] , [ 1114401600000 , 5.3847641501296] , [ 1114488000000 , 5.2878280467455] , [ 1114574400000 , 5.4522034975318] , [ 1114660800000 , 5.3594521060002] , [ 1114747200000 , 5.2420588572943] , [ 1115006400000 , 5.6606276336631] , [ 1115092800000 , 5.5230178473803] , [ 1115179200000 , 5.6290839485141] , [ 1115265600000 , 4.9727712469807] , [ 1115352000000 , 5.6618827725862] , [ 1115611200000 , 5.5643892977865] , [ 1115697600000 , 5.6004068853173] , [ 1115784000000 , 5.7133872418109] , [ 1115870400000 , 5.7555576420187] , [ 1115956800000 , 5.5711349943511] , [ 1116216000000 , 5.5540805620757] , [ 1116302400000 , 6.0415482872175] , [ 1116388800000 , 5.2798618603948] , [ 1116475200000 , 5.3538777835574] , [ 1116561600000 , 5.3767075153524] , [ 1116820800000 , 5.3656989670854] , [ 1116907200000 , 5.3894549111646] , [ 1116993600000 , 5.2959602507749] , [ 1117080000000 , 5.3041603116453] , [ 1117166400000 , 5.3513265402817] , [ 1117512000000 , 5.3042597402154] , [ 1117598400000 , 5.3830940036574] , [ 1117684800000 , 5.3640915337733] , [ 1117771200000 , 5.2424641357493] , [ 1118030400000 , 5.220943223473] , [ 1118116800000 , 5.390274597948] , [ 1118203200000 , 5.2258922939887] , [ 1118289600000 , 5.226609757616] , [ 1118376000000 , 5.4241507056066] , [ 1118635200000 , 5.2671654281895] , [ 1118721600000 , 5.2675085931666] , [ 1118808000000 , 5.3402953205449] , [ 1118894400000 , 5.3312231728129] , [ 1118980800000 , 5.0804183721655] , [ 1119240000000 , 5.0295133836202] , [ 1119326400000 , 4.9513098601892] , [ 1119412800000 , 4.9733875472667] , [ 1119499200000 , 5.4503638757024] , [ 1119585600000 , 5.1121850966213] , [ 1119844800000 , 5.4943135481574] , [ 1119931200000 , 5.2080595906057] , [ 1120017600000 , 5.5279877588814] , [ 1120104000000 , 6.679540024101] , [ 1120190400000 , 6.9579667464873] , [ 1120536000000 , 7.1861560991052] , [ 1120622400000 , 7.2488553459862] , [ 1120708800000 , 6.9281123977891] , [ 1120795200000 , 7.0183954097991] , [ 1121054400000 , 6.982471995471] , [ 1121140800000 , 7.0530086023473] , [ 1121227200000 , 6.7858799110069] , [ 1121313600000 , 6.865939748525] , [ 1121400000000 , 6.7136842364154] , [ 1121659200000 , 6.7058108447848] , [ 1121745600000 , 6.8286034893536] , [ 1121832000000 , 6.227348446981] , [ 1121918400000 , 6.4103267595588] , [ 1122004800000 , 6.4384541916729] , [ 1122264000000 , 6.8012976048913] , [ 1122350400000 , 6.6304863689862] , [ 1122436800000 , 6.6024051589843] , [ 1122523200000 , 6.5578403981454] , [ 1122609600000 , 7.0699793158618] , [ 1122868800000 , 5.70297128511] , [ 1122955200000 , 5.8599346884581] , [ 1123041600000 , 6.0432721160469] , [ 1123128000000 , 5.7085272847698] , [ 1123214400000 , 5.7739066238223] , [ 1123473600000 , 5.7407851580676] , [ 1123560000000 , 5.7503098774641] , [ 1123646400000 , 5.7350139819431] , [ 1123732800000 , 5.6387901284675] , [ 1123819200000 , 5.7064626266876] , [ 1124078400000 , 5.7735426785386] , [ 1124164800000 , 6.4849136987097] , [ 1124251200000 , 6.6216153591168] , [ 1124337600000 , 6.4980641465358] , [ 1124424000000 , 6.7613539095681] , [ 1124683200000 , 6.6865783336323] , [ 1124769600000 , 6.5712499184434] , [ 1124856000000 , 6.720170741489] , [ 1124942400000 , 6.6361956498457] , [ 1125028800000 , 6.6587153318771] , [ 1125288000000 , 6.6516914763688] , [ 1125374400000 , 6.82084224252] , [ 1125460800000 , 6.8110358144544] , [ 1125547200000 , 6.93647319994] , [ 1125633600000 , 7.0374937733289] , [ 1125979200000 , 6.7846258756745] , [ 1126065600000 , 6.9040591153524] , [ 1126152000000 , 7.0974970881943] , [ 1126238400000 , 7.1756222202082] , [ 1126497600000 , 7.0472408026096] , [ 1126584000000 , 7.0339920341342] , [ 1126670400000 , 7.2021353939179] , [ 1126756800000 , 7.0609073552108] , [ 1126843200000 , 7.004014797849] , [ 1127102400000 , 7.0400680159534] , [ 1127188800000 , 6.9843450335467] , [ 1127275200000 , 6.8880814585353] , [ 1127361600000 , 6.8543614829283] , [ 1127448000000 , 7.0464002464949] , [ 1127707200000 , 7.0173986373994] , [ 1127793600000 , 7.1143386429723] , [ 1127880000000 , 6.8611034625139] , [ 1127966400000 , 6.7545471669357] , [ 1128052800000 , 3.4108623316298] , [ 1128312000000 , 3.2358146304076] , [ 1128398400000 , 3.3486810900721] , [ 1128484800000 , 3.4841658501152] , [ 1128571200000 , 3.4581662089712] , [ 1128657600000 , 3.3815137620761] , [ 1128916800000 , 3.4974231565404] , [ 1129003200000 , 3.450184099932] , [ 1129089600000 , 3.5583842836352] , [ 1129176000000 , 3.5169603454358] , [ 1129262400000 , 3.5176978114038] , [ 1129521600000 , 3.3703592890602] , [ 1129608000000 , 3.4834570618648] , [ 1129694400000 , 1.8818434260168] , [ 1129780800000 , 3.4718401809501] , [ 1129867200000 , 3.5173146296481] , [ 1130126400000 , 3.4894834671858] , [ 1130212800000 , 3.5004514572279] , [ 1130299200000 , 3.5580877425531] , [ 1130385600000 , 3.4264846692522] , [ 1130472000000 , 3.5087175132563] , [ 1130734800000 , 3.4747366147276] , [ 1130821200000 , 3.5001994930828] , [ 1130907600000 , 3.6005100233634] , [ 1130994000000 , 3.5872694064345] , [ 1131080400000 , 3.5260521925989] , [ 1131339600000 , 3.5288462351855] , [ 1131426000000 , 3.4641649535546] , [ 1131512400000 , 3.5161931620784] , [ 1131598800000 , 3.5502260598773] , [ 1131685200000 , 3.3609479209577] , [ 1131944400000 , 3.4564684628572] , [ 1132030800000 , 3.518457312288] , [ 1132117200000 , 3.4173122983952] , [ 1132203600000 , 3.3661287991231] , [ 1132290000000 , 3.4341347614207] , [ 1132549200000 , 3.4315453279347] , [ 1132635600000 , 3.5582235129132] , [ 1132722000000 , 3.3601403083907] , [ 1132894800000 , 11.735042456197] , [ 1133154000000 , 3.2279033178203] , [ 1133240400000 , 3.2288989003019] , [ 1133326800000 , 3.1216762273473] , [ 1133413200000 , 3.3191236808366] , [ 1133499600000 , 3.1406633162912] , [ 1133758800000 , 3.1676854514161] , [ 1133845200000 , 3.1387667999364] , [ 1133931600000 , 3.2582847188262] , [ 1134018000000 , 3.2525397510316] , [ 1134104400000 , 3.1153164621531] , [ 1134363600000 , 3.2006472433155] , [ 1134450000000 , 3.1687478035612] , [ 1134536400000 , 3.1970372882292] , [ 1134622800000 , 3.4548380138956] , [ 1134709200000 , 3.3118805464002] , [ 1134968400000 , 3.326419498422] , [ 1135054800000 , 3.0390970647306] , [ 1135141200000 , 3.0782412643899] , [ 1135227600000 , 3.0929544166694] , [ 1135314000000 , 3.0818306419712] , [ 1135659600000 , 3.003312413436] , [ 1135746000000 , 3.1936998906631] , [ 1135832400000 , 3.3177551038824] , [ 1135918800000 , 3.3091613215865] , [ 1136264400000 , 2.9826177401196] , [ 1136350800000 , 2.9154923123459] , [ 1136437200000 , 3.0820319719165] , [ 1136523600000 , 3.0553583919313] , [ 1136782800000 , 3.2355273415524] , [ 1136869200000 , 3.2353049551277] , [ 1136955600000 , 3.2886317917394] , [ 1137042000000 , 3.0471701528585] , [ 1137128400000 , 3.0624568073826] , [ 1137474000000 , 3.0613364441599] , [ 1137560400000 , 3.0363355218647] , [ 1137646800000 , 3.0906664613847] , [ 1137733200000 , 3.0119817495933] , [ 1137992400000 , 3.0309654952976] , [ 1138078800000 , 3.1128124514124] , [ 1138165200000 , 3.0647154212153] , [ 1138251600000 , 3.0650605610577] , [ 1138338000000 , 3.1034627958758] , [ 1138597200000 , 3.0936374143393] , [ 1138683600000 , 3.1063435877576] , [ 1138770000000 , 3.0275743089727] , [ 1138856400000 , 2.9599684917255] , [ 1138942800000 , 3.0337617881862] , [ 1139202000000 , 3.0092058548414] , [ 1139288400000 , 3.0144780363617] , [ 1139374800000 , 2.9429987280183] , [ 1139461200000 , 2.984701201969] , [ 1139547600000 , 2.8951920125066] , [ 1139806800000 , 2.9978485844379] , [ 1139893200000 , 2.9190386448572] , [ 1139979600000 , 2.9003641090428] , [ 1140066000000 , 2.9737031873536] , [ 1140152400000 , 2.9316646939122] , [ 1140498000000 , 2.9970074993554] , [ 1140584400000 , 2.9987365595401] , [ 1140670800000 , 2.9660648090045] , [ 1140757200000 , 3.0116951121326] , [ 1141016400000 , 2.9674379764029] , [ 1141102800000 , 2.9115345133322] , [ 1141189200000 , 4.0344503315141] , [ 1141275600000 , 3.8326688104873] , [ 1141362000000 , 3.8320478551816] , [ 1141621200000 , 4.1875486284883] , [ 1141707600000 , 4.3285115138254] , [ 1141794000000 , 4.3982087935507] , [ 1141880400000 , 4.2790239034568] , [ 1141966800000 , 4.4067653344059] , [ 1142226000000 , 4.3707218547662] , [ 1142312400000 , 3.7855492134696] , [ 1142398800000 , 4.1853720862276] , [ 1142485200000 , 4.2206641653384] , [ 1142571600000 , 4.4950711219116] , [ 1142830800000 , 4.3800075450183] , [ 1142917200000 , 4.8205423187517] , [ 1143003600000 , 4.3872105163909] , [ 1143090000000 , 4.4227936414572] , [ 1143176400000 , 4.4701267766602] , [ 1143435600000 , 4.7445205307774] , [ 1143522000000 , 4.7471202084025] , [ 1143608400000 , 4.8113331137801] , [ 1143694800000 , 4.6967554281063] , [ 1143781200000 , 5.9781494476828] , [ 1144036800000 , 5.8882232918224] , [ 1144123200000 , 5.5645236773128] , [ 1144209600000 , 5.5353638892072] , [ 1144296000000 , 5.4980370986983] , [ 1144382400000 , 5.5846124418955] , [ 1144641600000 , 5.4555363382638] , [ 1144728000000 , 5.3869979612657] , [ 1144814400000 , 5.4675143705442] , [ 1144900800000 , 5.5086675311517] , [ 1145246400000 , 5.5906646811935] , [ 1145332800000 , 5.4833760916669] , [ 1145419200000 , 5.6197194837927] , [ 1145505600000 , 5.6880792497766] , [ 1145592000000 , 5.4575700123977] , [ 1145851200000 , 5.5173370831613] , [ 1145937600000 , 5.5299203373151] , [ 1146024000000 , 5.387648786116] , [ 1146110400000 , 5.2674121240033] , [ 1146196800000 , 5.4964006280171] , [ 1146456000000 , 5.579620146143] , [ 1146542400000 , 5.4972307401747] , [ 1146628800000 , 5.5488320813617] , [ 1146715200000 , 5.5010861828696] , [ 1146801600000 , 5.5872167903393] , [ 1147060800000 , 5.5673110174086] , [ 1147147200000 , 5.5885861590286] , [ 1147233600000 , 5.4797245551396] , [ 1147320000000 , 5.3304784516943] , [ 1147406400000 , 5.4252888938226] , [ 1147665600000 , 5.4351902591804] , [ 1147752000000 , 5.4861470797122] , [ 1147838400000 , 5.3539716890961] , [ 1147924800000 , 5.3418524585426] , [ 1148011200000 , 5.4109814034757] , [ 1148270400000 , 5.4143097431759] , [ 1148356800000 , 5.5022387992138] , [ 1148443200000 , 5.4933946997972] , [ 1148529600000 , 5.5255343422712] , [ 1148616000000 , 5.5705519403969] , [ 1148961600000 , 5.5743282380083] , [ 1149048000000 , 5.5221677872914] , [ 1149134400000 , 5.5913258249393] , [ 1149220800000 , 5.4890290204671] , [ 1149480000000 , 5.3513484107681] , [ 1149566400000 , 5.2952846332451] , [ 1149652800000 , 5.3809941241474] , [ 1149739200000 , 5.1807728121848] , [ 1149825600000 , 5.4015136223237] , [ 1150084800000 , 5.0948328195786] , [ 1150171200000 , 5.040817069216] , [ 1150257600000 , 5.2190053225359] , [ 1150344000000 , 4.987180477474] , [ 1150430400000 , 4.9224737306547] , [ 1150689600000 , 4.9480789412185] , [ 1150776000000 , 4.7905677717437] , [ 1150862400000 , 4.896112525399] , [ 1150948800000 , 4.8503941051066] , [ 1151035200000 , 5.0918526954809] , [ 1151294400000 , 5.0211030099049] , [ 1151380800000 , 5.0571441989304] , [ 1151467200000 , 4.5508625784706] , [ 1151553600000 , 4.5380226872913] , [ 1151640000000 , 6.6623465740296] , [ 1151899200000 , 6.6950261251744] , [ 1152072000000 , 6.5207939376521] , [ 1152158400000 , 6.5172737724921] , [ 1152244800000 , 6.3254714481969] , [ 1152504000000 , 6.6543540942611] , [ 1152590400000 , 6.2181048020914] , [ 1152676800000 , 6.6355576155026] , [ 1152763200000 , 6.1506956981831] , [ 1152849600000 , 6.5254563609616] , [ 1153108800000 , 6.4229380681102] , [ 1153195200000 , 6.4267393400886] , [ 1153281600000 , 6.151901373457] , [ 1153368000000 , 6.729525603133] , [ 1153454400000 , 6.6690569426284] , [ 1153713600000 , 8.1103304960696] , [ 1153800000000 , 6.445789660103] , [ 1153886400000 , 6.9812673500591] , [ 1153972800000 , 7.0211889294387] , [ 1154059200000 , 6.9687346671468] , [ 1154318400000 , 6.5961804321699] , [ 1154404800000 , 6.7373242629452] , [ 1154491200000 , 7.0300224654331] , [ 1154577600000 , 7.0031824973822] , [ 1154664000000 , 6.6620252125201] , [ 1154923200000 , 6.9573760194666] , [ 1155009600000 , 6.9486767083333] , [ 1155096000000 , 6.9404306158952] , [ 1155182400000 , 6.878361612199] , [ 1155268800000 , 6.8457420087184] , [ 1155528000000 , 6.9413203057534] , [ 1155614400000 , 7.1460233013256] , [ 1155700800000 , 7.2079148876614] , [ 1155787200000 , 7.150254983246] , [ 1155873600000 , 6.9421709366599] , [ 1156132800000 , 6.9475138904927] , [ 1156219200000 , 6.8080230073973] , [ 1156305600000 , 7.0339338125578] , [ 1156392000000 , 7.1193976160325] , [ 1156478400000 , 6.7160059917598] , [ 1156737600000 , 7.0844543078971] , [ 1156824000000 , 6.836665506475] , [ 1156910400000 , 6.6901412217505] , [ 1156996800000 , 7.1683903789179] , [ 1157083200000 , 6.819046312698] , [ 1157428800000 , 6.8255448366096] , [ 1157515200000 , 6.5253838879686] , [ 1157601600000 , 6.7747008690913] , [ 1157688000000 , 6.5606360796599] , [ 1157947200000 , 6.0710545360895] , [ 1158033600000 , 6.1468209558297] , [ 1158120000000 , 6.0920132683077] , [ 1158206400000 , 5.9514599625321] , [ 1158292800000 , 5.9152150415048] , [ 1158552000000 , 5.4885371988375] , [ 1158638400000 , 5.3529183330919] , [ 1158724800000 , 5.2268271486007] , [ 1158811200000 , 5.2632401820804] , [ 1158897600000 , 5.3761008893123] , [ 1159156800000 , 5.343343969615] , [ 1159243200000 , 5.1802644058266] , [ 1159329600000 , 5.1955066022022] , [ 1159416000000 , 5.2103052365711] , [ 1159502400000 , 5.2084626961236] , [ 1159761600000 , 2.8840888297049] , [ 1159848000000 , 3.2943030991496] , [ 1159934400000 , 2.7728246415702] , [ 1160020800000 , 2.8108425906082] , [ 1160107200000 , 2.9382729973757] , [ 1160366400000 , 2.8950025461164] , [ 1160452800000 , 3.0093478296508] , [ 1160539200000 , 2.9006448001696] , [ 1160625600000 , 3.0223681975413] , [ 1160712000000 , 3.0394975797056] , [ 1160971200000 , 3.131680903118] , [ 1161057600000 , 3.0463297219216] , [ 1161144000000 , 3.1180252293295] , [ 1161230400000 , 3.130091086302] , [ 1161316800000 , 3.066326072633] , [ 1161576000000 , 3.0336144148462] , [ 1161662400000 , 4.3270779423662] , [ 1161748800000 , 4.2820633154218] , [ 1161835200000 , 3.0921691457346] , [ 1161921600000 , 4.1567001237107] , [ 1162184400000 , 4.1342160586191] , [ 1162270800000 , 4.4201838733711] , [ 1162357200000 , 4.0601760116035] , [ 1162443600000 , 3.9226312951714] , [ 1162530000000 , 4.1727741508378] , [ 1162789200000 , 4.1751639139824] , [ 1162875600000 , 4.2104062763294] , [ 1162962000000 , 4.1294443133884] , [ 1163048400000 , 4.2279826023735] , [ 1163134800000 , 4.2476664933844] , [ 1163394000000 , 4.163004868497] , [ 1163480400000 , 4.3282212484836] , [ 1163566800000 , 4.3095618979983] , [ 1163653200000 , 3.0885817597712] , [ 1163739600000 , 3.076355031762] , [ 1163998800000 , 3.1715177595682] , [ 1164085200000 , 2.9935201304051] , [ 1164171600000 , 2.9505588485613] , [ 1164344400000 , 3.0040653109772] , [ 1164603600000 , 2.983071705957] , [ 1164690000000 , 3.0371467604301] , [ 1164776400000 , 3.0274381543998] , [ 1164862800000 , 3.1346408080373] , [ 1164949200000 , 3.4087737977505] , [ 1165208400000 , 3.4254924739731] , [ 1165294800000 , 3.5343918595576] , [ 1165381200000 , 3.4125407926515] , [ 1165467600000 , 3.5198360671703] , [ 1165554000000 , 3.5365570181792] , [ 1165813200000 , 3.5681992574741] , [ 1165899600000 , 3.6494092817253] , [ 1165986000000 , 3.5310150526919] , [ 1166072400000 , 3.5439775113761] , [ 1166158800000 , 3.5592274821478] , [ 1166418000000 , 3.5867485487725] , [ 1166504400000 , 3.5764165692897] , [ 1166590800000 , 3.4518894365921] , [ 1166677200000 , 3.5380784887815] , [ 1166763600000 , 3.533640313869] , [ 1167109200000 , 3.6644855856847] , [ 1167195600000 , 3.6271132635643] , [ 1167282000000 , 3.4631205159228] , [ 1167368400000 , 3.430151414344] , [ 1167800400000 , 5.8016688576954] , [ 1167886800000 , 5.8561012507285] , [ 1167973200000 , 5.9000670179267] , [ 1168232400000 , 5.9263896806362] , [ 1168318800000 , 5.8543796802947] , [ 1168405200000 , 5.7673741262945] , [ 1168491600000 , 5.8344654051468] , [ 1168578000000 , 5.8151063287842] , [ 1168923600000 , 5.7793199458949] , [ 1169010000000 , 5.8532551829404] , [ 1169096400000 , 5.9034808610366] , [ 1169182800000 , 6.2619220923265] , [ 1169442000000 , 6.2994314613823] , [ 1169528400000 , 6.3906818506851] , [ 1169614800000 , 6.425415967321] , [ 1169701200000 , 6.3440949416215] , [ 1169787600000 , 6.384556597427] , [ 1170046800000 , 6.2566253792346] , [ 1170133200000 , 6.2979627715121] , [ 1170219600000 , 6.3195197098848] , [ 1170306000000 , 6.3123489066732] , [ 1170392400000 , 6.4516205217967] , [ 1170651600000 , 6.4993536967398] , [ 1170738000000 , 6.4124443740349] , [ 1170824400000 , 6.757657132213] , [ 1170910800000 , 6.3680878374669] , [ 1170997200000 , 6.5581337362589] , [ 1171256400000 , 6.3072373462631] , [ 1171342800000 , 6.3873626954538] , [ 1171429200000 , 6.4240682680756] , [ 1171515600000 , 5.9671496300102] , [ 1171602000000 , 6.037507658937] , [ 1171947600000 , 6.1062250589464] , [ 1172034000000 , 6.2801262477535] , [ 1172120400000 , 6.302066296315] , [ 1172206800000 , 6.4887595917266] , [ 1172466000000 , 6.4467217927379] , [ 1172552400000 , 6.389548704248] , [ 1172638800000 , 6.1278454619334] , [ 1172725200000 , 6.9211809156189] , [ 1172811600000 , 6.9615876634985] , [ 1173070800000 , 6.9604977762869] , [ 1173157200000 , 6.9326942508034] , [ 1173243600000 , 6.9589612884303] , [ 1173330000000 , 6.7777321699871] , [ 1173416400000 , 6.8923887293863] , [ 1173672000000 , 6.7517726115965] , [ 1173758400000 , 7.023147151802] , [ 1173844800000 , 6.7245022171818] , [ 1173931200000 , 7.0743269506687] , [ 1174017600000 , 6.4584074364592] , [ 1174276800000 , 6.8742726853711] , [ 1174363200000 , 6.5873076915895] , [ 1174449600000 , 6.5814033590606] , [ 1174536000000 , 7.2462045395149] , [ 1174622400000 , 6.7630455587597] , [ 1174881600000 , 6.79757865691] , [ 1174968000000 , 6.7319453489698] , [ 1175054400000 , 6.7524033957435] , [ 1175140800000 , 6.7249864218552] , [ 1175227200000 , 7.1959861930335] , [ 1175486400000 , 5.5034477669994] , [ 1175572800000 , 5.5536199499359] , [ 1175659200000 , 5.5683896272104] , [ 1175745600000 , 5.3661847852395] , [ 1176091200000 , 5.3681810358806] , [ 1176177600000 , 5.3796042695304] , [ 1176264000000 , 5.2927411078476] , [ 1176350400000 , 5.4032484228754] , [ 1176436800000 , 5.2419903116433] , [ 1176696000000 , 5.287599012843] , [ 1176782400000 , 5.4691235182112] , [ 1176868800000 , 5.3771769229628] , [ 1176955200000 , 5.9053806042607] , [ 1177041600000 , 6.1057089416699] , [ 1177300800000 , 6.015503426755] , [ 1177387200000 , 5.9465881177914] , [ 1177473600000 , 6.3395994655322] , [ 1177560000000 , 5.7744036174212] , [ 1177646400000 , 5.5231895043329] , [ 1177905600000 , 5.6558448488497] , [ 1177992000000 , 5.5860638502864] , [ 1178078400000 , 5.459359650014] , [ 1178164800000 , 6.2050696116216] , [ 1178251200000 , 5.4292571311168] , [ 1178510400000 , 5.4791270687287] , [ 1178596800000 , 5.3040118648128] , [ 1178683200000 , 5.2873031992628] , [ 1178769600000 , 5.3210779246389] , [ 1178856000000 , 5.3400026357415] , [ 1179115200000 , 5.293939815581] , [ 1179201600000 , 5.3708317127123] , [ 1179288000000 , 5.3475210104787] , [ 1179374400000 , 5.2540920001683] , [ 1179460800000 , 5.3952642205536] , [ 1179720000000 , 5.2813482135364] , [ 1179806400000 , 5.4124510959808] , [ 1179892800000 , 5.5035421086896] , [ 1179979200000 , 5.4960663121103] , [ 1180065600000 , 5.4616352053186] , [ 1180411200000 , 5.5557436718824] , [ 1180497600000 , 5.5723551711376] , [ 1180584000000 , 5.3533738156704] , [ 1180670400000 , 5.9374805717135] , [ 1180929600000 , 6.070211947] , [ 1181016000000 , 6.1495771176188] , [ 1181102400000 , 6.1212709443999] , [ 1181188800000 , 5.8981165186278] , [ 1181275200000 , 6.1574300768597] , [ 1181534400000 , 6.0408959483815] , [ 1181620800000 , 5.9743807515105] , [ 1181707200000 , 6.0241707399628] , [ 1181793600000 , 6.0471828073556] , [ 1181880000000 , 6.0231956020193] , [ 1182139200000 , 5.8062793529953] , [ 1182225600000 , 5.8947211623182] , [ 1182312000000 , 5.9167961848519] , [ 1182398400000 , 5.9424652653682] , [ 1182484800000 , 5.8806090703762] , [ 1182744000000 , 5.7299888447741] , [ 1182830400000 , 5.9066810232948] , [ 1182916800000 , 5.8341177954444] , [ 1183003200000 , 5.9129760135708] , [ 1183089600000 , 5.9945552989675] , [ 1183348800000 , 5.3299023432099] , [ 1183435200000 , 5.5327509208748] , [ 1183608000000 , 5.4679149798396] , [ 1183694400000 , 5.321027188349] , [ 1183953600000 , 5.5403186088645] , [ 1184040000000 , 5.3532172072605] , [ 1184126400000 , 5.4146524564901] , [ 1184212800000 , 5.4116029343603] , [ 1184299200000 , 5.5596046002215] , [ 1184558400000 , 5.4963271012754] , [ 1184644800000 , 5.5285285896202] , [ 1184731200000 , 5.602508176099] , [ 1184817600000 , 5.5271120290838] , [ 1184904000000 , 5.6787884781165] , [ 1185163200000 , 6.2449614526858] , [ 1185249600000 , 6.2338400405605] , [ 1185336000000 , 6.1903596084878] , [ 1185422400000 , 6.0055059085675] , [ 1185508800000 , 5.9346003801545] , [ 1185768000000 , 5.9905732220651] , [ 1185854400000 , 6.0999445264832] , [ 1185940800000 , 5.7393997675728] , [ 1186027200000 , 5.9856751678157] , [ 1186113600000 , 5.8983987083987] , [ 1186372800000 , 5.8986708020035] , [ 1186459200000 , 5.844235572237] , [ 1186545600000 , 5.8996131867044] , [ 1186632000000 , 5.8255302060964] , [ 1186718400000 , 5.6149242344805] , [ 1186977600000 , 5.73472051311] , [ 1187064000000 , 5.8068166954067] , [ 1187150400000 , 5.729516260903] , [ 1187236800000 , 5.8112325352025] , [ 1187323200000 , 5.7449344656735] , [ 1187582400000 , 5.8154490136989] , [ 1187668800000 , 5.5910253062061] , [ 1187755200000 , 5.6409093357668] , [ 1187841600000 , 5.6684119675685] , [ 1187928000000 , 5.7475041526529] , [ 1188187200000 , 5.6871327863607] , [ 1188273600000 , 5.7037098436441] , [ 1188360000000 , 5.811101788082] , [ 1188446400000 , 5.4648944238788] , [ 1188532800000 , 5.6043541592909] , [ 1188878400000 , 5.6661461983708] , [ 1188964800000 , 5.7778417392083] , [ 1189051200000 , 5.8219018814405] , [ 1189137600000 , 5.7797660510698] , [ 1189396800000 , 5.6238295072176] , [ 1189483200000 , 5.6044766919031] , [ 1189569600000 , 5.7571550661925] , [ 1189656000000 , 5.6010490111957] , [ 1189742400000 , 5.7432881994906] , [ 1190001600000 , 5.6652449794256] , [ 1190088000000 , 5.6290799514664] , [ 1190174400000 , 5.6691890845799] , [ 1190260800000 , 5.5059968368363] , [ 1190347200000 , 5.6482979155196] , [ 1190606400000 , 5.3118510791031] , [ 1190692800000 , 5.1610898454063] , [ 1190779200000 , 5.2918392926565] , [ 1190865600000 , 5.4934523651225] , [ 1190952000000 , 5.3071617372149] , [ 1191211200000 , 7.531583603958] , [ 1191297600000 , 7.6309179887693] , [ 1191384000000 , 7.7475612851779] , [ 1191470400000 , 7.530998665759] , [ 1191556800000 , 7.5052768495204] , [ 1191816000000 , 7.3392760770741] , [ 1191902400000 , 7.5123552038565] , [ 1191988800000 , 7.4304766314143] , [ 1192075200000 , 7.5510139656757] , [ 1192161600000 , 7.3478862182543] , [ 1192420800000 , 7.4114198714548] , [ 1192507200000 , 7.2190603208315] , [ 1192593600000 , 7.3648933467876] , [ 1192680000000 , 7.2521365252803] , [ 1192766400000 , 7.5138792968593] , [ 1193025600000 , 7.5268260503433] , [ 1193112000000 , 7.2866924102812] , [ 1193198400000 , 7.3292193432641] , [ 1193284800000 , 7.0889666924132] , [ 1193371200000 , 7.3894936731886] , [ 1193630400000 , 7.4807562909254] , [ 1193716800000 , 7.4710525940586] , [ 1193803200000 , 7.2232358174515] , [ 1193889600000 , 7.1679314068527] , [ 1193976000000 , 7.0432978541917] , [ 1194238800000 , 7.0798348151984] , [ 1194325200000 , 6.9036648063505] , [ 1194411600000 , 8.370612728316] , [ 1194498000000 , 8.2104852640355] , [ 1194584400000 , 8.21190559032] , [ 1194843600000 , 8.9441911238644] , [ 1194930000000 , 7.2791523696694] , [ 1195016400000 , 8.4730149160941] , [ 1195102800000 , 8.209185956679] , [ 1195189200000 , 8.0011719666435] , [ 1195448400000 , 8.4778945672244] , [ 1195534800000 , 8.1219789507817] , [ 1195621200000 , 8.1291027449849] , [ 1195794000000 , 7.6854413203628] , [ 1196053200000 , 8.2394627589421] , [ 1196139600000 , 7.6000223598168] , [ 1196226000000 , 7.8489027600031] , [ 1196312400000 , 7.9388039747927] , [ 1196398800000 , 8.6805483342203] , [ 1196658000000 , 7.819093258259] , [ 1196744400000 , 7.7328736519041] , [ 1196830800000 , 7.8067506366048] , [ 1196917200000 , 6.5017053051142] , [ 1197003600000 , 6.1775351770769] , [ 1197262800000 , 6.3697699960877] , [ 1197349200000 , 7.4308824002833] , [ 1197435600000 , 7.5040897820745] , [ 1197522000000 , 7.5038617774347] , [ 1197608400000 , 7.2308756320739] , [ 1197867600000 , 7.3876330451792] , [ 1197954000000 , 7.3677231200441] , [ 1198040400000 , 7.4997185766307] , [ 1198126800000 , 7.3812934068041] , [ 1198213200000 , 7.52504039022] , [ 1198472400000 , 7.428638935131] , [ 1198645200000 , 7.5778555365401] , [ 1198731600000 , 7.6527475801177] , [ 1198818000000 , 7.3175189110682] , [ 1199077200000 , 7.3371271757066] , [ 1199250000000 , 7.2857225868223] , [ 1199336400000 , 7.1636990523452] , [ 1199422800000 , 7.1709616119198] , [ 1199682000000 , 7.1589364622782] , [ 1199768400000 , 7.1421873228132] , [ 1199854800000 , 6.9760466250496] , [ 1199941200000 , 6.9426058335034] , [ 1200027600000 , 6.7349851141438] , [ 1200286800000 , 6.6388480580742] , [ 1200373200000 , 6.8102317749132] , [ 1200459600000 , 6.9238179784892] , [ 1200546000000 , 7.6830543729485] , [ 1200632400000 , 7.425318532414] , [ 1200978000000 , 7.3857247273437] , [ 1201064400000 , 7.7083061793365] , [ 1201150800000 , 8.2583336829393] , [ 1201237200000 , 8.0128040886069] , [ 1201496400000 , 8.0358480692245] , [ 1201582800000 , 8.2671543182705] , [ 1201669200000 , 8.1161243143207] , [ 1201755600000 , 7.4107747544517] , [ 1201842000000 , 7.5294510611935] , [ 1202101200000 , 7.2113531120373] , [ 1202187600000 , 7.8864587947242] , [ 1202274000000 , 6.9586132197617] , [ 1202360400000 , 7.0281940962194] , [ 1202446800000 , 7.1447318591793] , [ 1202706000000 , 6.9935545311206] , [ 1202792400000 , 7.2883839931897] , [ 1202878800000 , 6.8361262907914] , [ 1202965200000 , 7.045918453252] , [ 1203051600000 , 6.8486631874079] , [ 1203397200000 , 6.8640500433739] , [ 1203483600000 , 6.8575958252384] , [ 1203570000000 , 6.7251897963912] , [ 1203656400000 , 6.6399026114773] , [ 1203915600000 , 6.8764282448817] , [ 1204002000000 , 6.7348063208959] , [ 1204088400000 , 7.7837095774772] , [ 1204174800000 , 7.0420456338856] , [ 1204261200000 , 6.9909081255568] , [ 1204520400000 , 7.131596990042] , [ 1204606800000 , 6.988562066534] , [ 1204693200000 , 6.9050375888978] , [ 1204779600000 , 6.546453758899] , [ 1204866000000 , 6.4087398018081] , [ 1205121600000 , 6.4589849850596] , [ 1205208000000 , 6.7042664457473] , [ 1205294400000 , 7.6568395392123] , [ 1205380800000 , 8.5402215462225] , [ 1205467200000 , 6.5463875174652] , [ 1205726400000 , 7.2179123617086] , [ 1205812800000 , 7.5810592003363] , [ 1205899200000 , 6.7979916806379] , [ 1205985600000 , 6.6322561510492] , [ 1206331200000 , 7.0681121398936] , [ 1206417600000 , 6.9023924998489] , [ 1206504000000 , 7.0389663853819] , [ 1206590400000 , 6.7662664840578] , [ 1206676800000 , 6.8266199445058] , [ 1206936000000 , 6.4383120442898] , [ 1207022400000 , 6.3647386363738] , [ 1207108800000 , 6.4786095779231] , [ 1207195200000 , 6.6539452625097] , [ 1207281600000 , 6.4080871268417] , [ 1207540800000 , 6.3709462512131] , [ 1207627200000 , 6.4178074036765] , [ 1207713600000 , 6.2886973966323] , [ 1207800000000 , 6.3496231600179] , [ 1207886400000 , 6.364158873025] , [ 1208145600000 , 6.0652076854316] , [ 1208232000000 , 6.1936331476093] , [ 1208318400000 , 6.0445426863227] , [ 1208404800000 , 6.1585521703334] , [ 1208491200000 , 6.1043624228944] , [ 1208750400000 , 6.3307197349304] , [ 1208836800000 , 6.1576593011564] , [ 1208923200000 , 6.3612863667708] , [ 1209009600000 , 6.3419854183664] , [ 1209096000000 , 6.3914985838301] , [ 1209355200000 , 6.6406534589316] , [ 1209441600000 , 6.3307424536973] , [ 1209528000000 , 6.1006329967357] , [ 1209614400000 , 6.1050692944877] , [ 1209700800000 , 6.2416533654448] , [ 1209960000000 , 6.0323755356142] , [ 1210046400000 , 5.8808279864141] , [ 1210132800000 , 5.8602372119567] , [ 1210219200000 , 5.8301290507881] , [ 1210305600000 , 5.9306036835352] , [ 1210564800000 , 5.8535113492263] , [ 1210651200000 , 5.869024671798] , [ 1210737600000 , 5.9968915060212] , [ 1210824000000 , 6.4841046190145] , [ 1210910400000 , 6.3911843735792] , [ 1211169600000 , 6.4279145976681] , [ 1211256000000 , 6.3344615627902] , [ 1211342400000 , 6.5451435993219] , [ 1211428800000 , 6.3263257246883] , [ 1211515200000 , 6.3834858918468] , [ 1211860800000 , 6.2756674350876] , [ 1211947200000 , 6.4087274603138] , [ 1212033600000 , 6.4056567020406] , [ 1212120000000 , 6.4668213862667] , [ 1212379200000 , 5.6899479336982] , [ 1212465600000 , 5.6571493593707] , [ 1212552000000 , 5.6420741867959] , [ 1212638400000 , 5.7125783186014] , [ 1212724800000 , 5.7095761377505] , [ 1212984000000 , 5.8214360886338] , [ 1213070400000 , 5.5929840492055] , [ 1213156800000 , 5.6736904761447] , [ 1213243200000 , 5.6378543169519] , [ 1213329600000 , 5.6654766298683] , [ 1213588800000 , 5.6141677216839] , [ 1213675200000 , 5.4895830900975] , [ 1213761600000 , 5.4418314612881] , [ 1213848000000 , 5.4089360286943] , [ 1213934400000 , 5.4103978864671] , [ 1214193600000 , 5.2772486632171] , [ 1214280000000 , 5.303434238248] , [ 1214366400000 , 5.3465810683818] , [ 1214452800000 , 5.31748624571] , [ 1214539200000 , 5.3256225817229] , [ 1214798400000 , 4.5634711885535] , [ 1214884800000 , 4.3352054133566] , [ 1214971200000 , 5.2858518479538] , [ 1215057600000 , 4.3089240878568] , [ 1215403200000 , 5.3310390210237] , [ 1215489600000 , 4.3994931570144] , [ 1215576000000 , 4.5262376681773] , [ 1215662400000 , 5.6201952995306] , [ 1215748800000 , 5.7241281187916] , [ 1216008000000 , 5.5945309751232] , [ 1216094400000 , 5.6549814025292] , [ 1216180800000 , 5.7173450472402] , [ 1216267200000 , 4.8222871994727] , [ 1216353600000 , 4.7662777688314] , [ 1216612800000 , 4.8973254357168] , [ 1216699200000 , 5.1341869729148] , [ 1216785600000 , 5.3227315843504] , [ 1216872000000 , 5.1605346178496] , [ 1216958400000 , 5.1779217784942] , [ 1217217600000 , 5.1627260249415] , [ 1217304000000 , 5.151367795375] , [ 1217390400000 , 5.2540963371903] , [ 1217476800000 , 5.2434106263894] , [ 1217563200000 , 5.123242170685] , [ 1217822400000 , 5.1151102720743] , [ 1217908800000 , 5.1571751778012] , [ 1217995200000 , 5.2813409796102] , [ 1218081600000 , 5.1878006573389] , [ 1218168000000 , 5.1633338429958] , [ 1218427200000 , 5.1658687536577] , [ 1218513600000 , 5.1963762301985] , [ 1218600000000 , 5.1904592425375] , [ 1218686400000 , 5.4599132933833] , [ 1218772800000 , 5.2951023740641] , [ 1219032000000 , 5.257190974208] , [ 1219118400000 , 5.205960747901] , [ 1219204800000 , 5.1564752380303] , [ 1219291200000 , 5.244274327757] , [ 1219377600000 , 5.3199814862531] , [ 1219636800000 , 5.2124082442509] , [ 1219723200000 , 5.2148884814248] , [ 1219809600000 , 5.2660924194272] , [ 1219896000000 , 5.3333946450071] , [ 1219982400000 , 5.4030897227976] , [ 1220328000000 , 6.1632828416656] , [ 1220414400000 , 6.1792048822181] , [ 1220500800000 , 5.9713757976894] , [ 1220587200000 , 5.8521299391245] , [ 1220846400000 , 5.9436493095157] , [ 1220932800000 , 5.9817984783499] , [ 1221019200000 , 5.7172182770579] , [ 1221105600000 , 5.7666370648538] , [ 1221192000000 , 5.944964277141] , [ 1221451200000 , 5.9719257119302] , [ 1221537600000 , 5.9802942073043] , [ 1221624000000 , 6.0256936190406] , [ 1221710400000 , 6.1091144225631] , [ 1221796800000 , 6.3904862634985] , [ 1222056000000 , 6.0592851258076] , [ 1222142400000 , 6.256156252881] , [ 1222228800000 , 6.1073080430961] , [ 1222315200000 , 6.2344500218342] , [ 1222401600000 , 6.0278578646831] , [ 1222660800000 , 6.2886980700582] , [ 1222747200000 , 6.3715867597887] , [ 1222833600000 , 6.1004828190244] , [ 1222920000000 , 6.8705724589124] , [ 1223006400000 , 7.3931897046016] , [ 1223265600000 , 7.1966014906334] , [ 1223352000000 , 7.1552556121799] , [ 1223438400000 , 6.9617585633052] , [ 1223524800000 , 6.9162489852899] , [ 1223611200000 , 6.4650063901045] , [ 1223870400000 , 5.8889901580469] , [ 1223956800000 , 6.3124352251941] , [ 1224043200000 , 7.0534241910929] , [ 1224129600000 , 6.928171307307] , [ 1224216000000 , 6.7743655360364] , [ 1224475200000 , 6.7381698308339] , [ 1224561600000 , 6.7054370506226] , [ 1224648000000 , 6.406504822482] , [ 1224734400000 , 7.103382664093] , [ 1224820800000 , 6.879053118491] , [ 1225080000000 , 7.0501530951534] , [ 1225166400000 , 7.2410219315205] , [ 1225252800000 , 7.2149734232993] , [ 1225339200000 , 6.1000750580465] , [ 1225425600000 , 6.5608998237398] , [ 1225688400000 , 7.123988980106] , [ 1225774800000 , 6.8776171218083] , [ 1225861200000 , 7.0158464310889] , [ 1225947600000 , 8.8410075944503] , [ 1226034000000 , 8.2074921164754] , [ 1226293200000 , 7.9855856702348] , [ 1226379600000 , 7.4313803657221] , [ 1226466000000 , 7.7020191147112] , [ 1226552400000 , 7.8028444105143] , [ 1226638800000 , 7.6554780192622] , [ 1226898000000 , 7.4595847958205] , [ 1226984400000 , 6.994906649404] , [ 1227070800000 , 7.4482824027772] , [ 1227157200000 , 7.3874704107731] , [ 1227243600000 , 6.9798023195892] , [ 1227502800000 , 7.4400257060602] , [ 1227589200000 , 7.7210407467182] , [ 1227675600000 , 7.4732422248789] , [ 1227848400000 , 7.7684304152306] , [ 1228107600000 , 8.5329094785625] , [ 1228194000000 , 8.8060305674656] , [ 1228280400000 , 8.899784335492] , [ 1228366800000 , 9.2784500142104] , [ 1228453200000 , 9.6759213234865] , [ 1228712400000 , 9.7785689323747] , [ 1228798800000 , 9.6499277173316] , [ 1228885200000 , 9.7585714821212] , [ 1228971600000 , 9.2122768495179] , [ 1229058000000 , 9.2526029184492] , [ 1229317200000 , 8.6706050462054] , [ 1229403600000 , 8.9780128399008] , [ 1229490000000 , 8.8057156535541] , [ 1229576400000 , 8.6966973743454] , [ 1229662800000 , 9.2140451310059] , [ 1229922000000 , 9.1309435083258] , [ 1230008400000 , 8.9109121975657] , [ 1230094800000 , 9.3464773473523] , [ 1230267600000 , 9.3610012655273] , [ 1230526800000 , 9.1827417030369] , [ 1230613200000 , 9.2670916903893] , [ 1230699600000 , 6.3431080048202] , [ 1230872400000 , 6.3013750687934] , [ 1231131600000 , 6.5099489965673] , [ 1231218000000 , 6.55849743454] , [ 1231304400000 , 6.4714630756925] , [ 1231390800000 , 6.5833998310811] , [ 1231477200000 , 6.5683112215553] , [ 1231736400000 , 6.3757002218161] , [ 1231822800000 , 6.693592184847] , [ 1231909200000 , 6.3253456974111] , [ 1231995600000 , 6.5288974953258] , [ 1232082000000 , 6.781495037238] , [ 1232427600000 , 6.4610451189687] , [ 1232514000000 , 6.6136023626372] , [ 1232600400000 , 6.3608139695636] , [ 1232686800000 , 6.2558795703405] , [ 1232946000000 , 6.4523686249378] , [ 1233032400000 , 6.3062428270396] , [ 1233118800000 , 6.6540931467275] , [ 1233205200000 , 6.4700292566789] , [ 1233291600000 , 6.2781833062823] , [ 1233550800000 , 5.9819810437366] , [ 1233637200000 , 6.3209702844141] , [ 1233723600000 , 6.1530614913748] , [ 1233810000000 , 6.323527908308] , [ 1233896400000 , 6.6574310261787] , [ 1234155600000 , 6.5778720158356] , [ 1234242000000 , 6.1761520311553] , [ 1234328400000 , 6.3875582022497] , [ 1234414800000 , 6.3842803816596] , [ 1234501200000 , 6.490716781387] , [ 1234846800000 , 6.3497435072981] , [ 1234933200000 , 6.116823917335] , [ 1235019600000 , 5.8740416534912] , [ 1235106000000 , 6.0737212906119] , [ 1235365200000 , 5.9585726083343] , [ 1235451600000 , 5.9455614640799] , [ 1235538000000 , 6.0341211768721] , [ 1235624400000 , 6.162371611965] , [ 1235710800000 , 6.1017574140154] , [ 1235970000000 , 5.1678350615926] , [ 1236056400000 , 5.4399137126506] , [ 1236142800000 , 5.5206558716544] , [ 1236229200000 , 5.0152715717628] , [ 1236315600000 , 5.0283432202879] , [ 1236571200000 , 5.0074448658938] , [ 1236657600000 , 5.5939616394314] , [ 1236744000000 , 5.5935741355267] , [ 1236830400000 , 5.8287996728334] , [ 1236916800000 , 6.0898295176408] , [ 1237176000000 , 5.9620067963125] , [ 1237262400000 , 5.9302401949611] , [ 1237348800000 , 6.0326010616645] , [ 1237435200000 , 5.9990119435174] , [ 1237521600000 , 5.8410716927224] , [ 1237780800000 , 6.0566484324084] , [ 1237867200000 , 5.9635888651044] , [ 1237953600000 , 6.0073272944344] , [ 1238040000000 , 6.0275162466085] , [ 1238126400000 , 6.0410443686856] , [ 1238385600000 , 5.9336174190192] , [ 1238472000000 , 6.7129522346788] , [ 1238558400000 , 6.6993943724472] , [ 1238644800000 , 6.9072938528227] , [ 1238731200000 , 6.8033335096449] , [ 1238990400000 , 6.8972173755438] , [ 1239076800000 , 6.8920177315134] , [ 1239163200000 , 6.8443892558542] , [ 1239249600000 , 7.4497699131442] , [ 1239595200000 , 7.5019861785881] , [ 1239681600000 , 7.3053193582125] , [ 1239768000000 , 7.2216169837015] , [ 1239854400000 , 7.5661499648819] , [ 1239940800000 , 7.6449159503907] , [ 1240200000000 , 7.5582219882489] , [ 1240286400000 , 7.4343755826028] , [ 1240372800000 , 7.6417895324212] , [ 1240459200000 , 7.6681262804388] , [ 1240545600000 , 7.7043797010563] , [ 1240804800000 , 7.4958396526881] , [ 1240891200000 , 7.815451554867] , [ 1240977600000 , 7.6676074512792] , [ 1241064000000 , 7.9572070113902] , [ 1241150400000 , 8.2096937565281] , [ 1241409600000 , 8.1187033449036] , [ 1241496000000 , 8.372275134873] , [ 1241582400000 , 8.0538722912475] , [ 1241668800000 , 7.9602754200426] , [ 1241755200000 , 7.6576599608334] , [ 1242014400000 , 7.4966913546928] , [ 1242100800000 , 7.2651112892492] , [ 1242187200000 , 7.1633791818655] , [ 1242273600000 , 7.1687650149386] , [ 1242360000000 , 7.3531937924814] , [ 1242619200000 , 7.4209658497273] , [ 1242705600000 , 7.5783182685381] , [ 1242792000000 , 7.4080483609847] , [ 1242878400000 , 7.277883223155] , [ 1242964800000 , 7.1453915393307] , [ 1243310400000 , 7.6300760130558] , [ 1243396800000 , 7.3772429744079] , [ 1243483200000 , 7.5724491217571] , [ 1243569600000 , 7.7562411442798] , [ 1243828800000 , 8.5403406835842] , [ 1243915200000 , 8.3017346807485] , [ 1244001600000 , 8.2455714820194] , [ 1244088000000 , 8.1419984291921] , [ 1244174400000 , 7.9302409712334] , [ 1244433600000 , 7.9514072720379] , [ 1244520000000 , 8.0555753559815] , [ 1244606400000 , 7.7992630274994] , [ 1244692800000 , 8.1167920735932] , [ 1244779200000 , 8.0712996157991] , [ 1245038400000 , 7.9545182134471] , [ 1245124800000 , 7.8830443320321] , [ 1245211200000 , 7.7760102856737] , [ 1245297600000 , 7.6688197716909] , [ 1245384000000 , 7.9738365319208] , [ 1245643200000 , 7.6816079796342] , [ 1245729600000 , 7.5975299439674] , [ 1245816000000 , 7.8071824002366] , [ 1245902400000 , 7.9398421894786] , [ 1245988800000 , 8.1599201203201] , [ 1246248000000 , 8.0475899158279] , [ 1246334400000 , 8.311713958035] , [ 1246420800000 , 8.0633325894994] , [ 1246507200000 , 8.1665001701375] , [ 1246852800000 , 8.6243924912214] , [ 1246939200000 , 8.5584631826924] , [ 1247025600000 , 8.3342287434369] , [ 1247112000000 , 7.785433826246] , [ 1247198400000 , 8.4304734788353] , [ 1247457600000 , 8.6310657763842] , [ 1247544000000 , 7.6709901103497] , [ 1247630400000 , 7.9145909860609] , [ 1247716800000 , 8.6738324194706] , [ 1247803200000 , 8.703463208222] , [ 1248062400000 , 8.8318115926649] , [ 1248148800000 , 8.8183631328174] , [ 1248235200000 , 8.9069614482835] , [ 1248321600000 , 8.1767345390385] , [ 1248408000000 , 8.3690934952353] , [ 1248667200000 , 8.0475374043464] , [ 1248753600000 , 7.9487085942204] , [ 1248840000000 , 8.0193179357719] , [ 1248926400000 , 6.7077240648159] , [ 1249012800000 , 6.3820502542407] , [ 1249272000000 , 6.1508557498966] , [ 1249358400000 , 6.2521137538601] , [ 1249444800000 , 6.1577643631846] , [ 1249531200000 , 6.2104717030372] , [ 1249617600000 , 5.4085385559598] , [ 1249876800000 , 6.1531235400728] , [ 1249963200000 , 5.4621932110819] , [ 1250049600000 , 5.4080882037869] , [ 1250136000000 , 5.4311338457152] , [ 1250222400000 , 5.9769504776449] , [ 1250481600000 , 6.1282576846105] , [ 1250568000000 , 5.9944952168109] , [ 1250654400000 , 5.9421157852003] , [ 1250740800000 , 6.0876497115901] , [ 1250827200000 , 5.3604129875169] , [ 1251086400000 , 5.9175421072838] , [ 1251172800000 , 5.0536189904237] , [ 1251259200000 , 5.2120512417561] , [ 1251345600000 , 5.203757025882] , [ 1251432000000 , 5.1944500854188] , [ 1251691200000 , 5.1506994391916] , [ 1251777600000 , 5.963103135814] , [ 1251864000000 , 6.0495921115292] , [ 1251950400000 , 4.6989879935359] , [ 1252036800000 , 4.8071428653778] , [ 1252382400000 , 4.8834539692467] , [ 1252468800000 , 6.0296791157326] , [ 1252555200000 , 5.3336486975701] , [ 1252641600000 , 5.7910847756212] , [ 1252900800000 , 4.2290028078144] , [ 1252987200000 , 4.3410520831618] , [ 1253073600000 , 3.6473356187603] , [ 1253160000000 , 3.7752491852878] , [ 1253246400000 , 4.6472183730829] , [ 1253505600000 , 3.5460608419439] , [ 1253592000000 , 3.6159341985379] , [ 1253678400000 , 3.9888812541473] , [ 1253764800000 , 4.0926619786259] , [ 1253851200000 , 3.9932972482998] , [ 1254110400000 , 3.9977003875474] , [ 1254196800000 , 4.1141840782386] , [ 1254283200000 , 3.4932618582594] , [ 1254369600000 , 2.8882406454852] , [ 1254456000000 , 2.8091023150487] , [ 1254715200000 , 2.9162883955448] , [ 1254801600000 , 2.9412596935434] , [ 1254888000000 , 2.9577064322097] , [ 1254974400000 , 2.9944107330291] , [ 1255060800000 , 2.9995959618688] , [ 1255320000000 , 2.8722133670363] , [ 1255406400000 , 3.1701861875583] , [ 1255492800000 , 3.1278205668598] , [ 1255579200000 , 3.1466051179389] , [ 1255665600000 , 3.1248428156261] , [ 1255924800000 , 3.1381573762212] , [ 1256011200000 , 2.8908983945294] , [ 1256097600000 , 2.8461903532938] , [ 1256184000000 , 2.9580400309269] , [ 1256270400000 , 2.8789406735397] , [ 1256529600000 , 2.8551257008863] , [ 1256616000000 , 3.6125500653153] , [ 1256702400000 , 4.259680329504] , [ 1256788800000 , 3.4449103324616] , [ 1256875200000 , 3.304360280782] , [ 1257138000000 , 3.4701958196407] , [ 1257224400000 , 3.5573661999414] , [ 1257310800000 , 3.5123579991949] , [ 1257397200000 , 3.8140115032809] , [ 1257483600000 , 3.741625333296] , [ 1257742800000 , 3.6480817158465] , [ 1257829200000 , 3.7597321524559] , [ 1257915600000 , 3.6614252110407] , [ 1258002000000 , 3.6303647352521] , [ 1258088400000 , 3.7106128331078] , [ 1258347600000 , 3.7522393948775] , [ 1258434000000 , 3.7692229502309] , [ 1258520400000 , 3.56446232961] , [ 1258606800000 , 3.4093546635484] , [ 1258693200000 , 3.4903814041113] , [ 1258952400000 , 3.4885064029992] , [ 1259038800000 , 3.4651593256137] , [ 1259125200000 , 3.520194463029] , [ 1259298000000 , 3.3499432520851] , [ 1259557200000 , 3.3863490553439] , [ 1259643600000 , 3.578300846024] , [ 1259730000000 , 3.5501534681494] , [ 1259816400000 , 3.6848141865906] , [ 1259902800000 , 3.6987593331625] , [ 1260162000000 , 3.8187466064014] , [ 1260248400000 , 3.7014237572608] , [ 1260334800000 , 3.6746390252432] , [ 1260421200000 , 3.6835972927098] , [ 1260507600000 , 3.7284637339994] , [ 1260766800000 , 3.7527788884899] , [ 1260853200000 , 3.7564093160659] , [ 1260939600000 , 3.6755594970563] , [ 1261026000000 , 3.7270065166822] , [ 1261112400000 , 3.5906816388481] , [ 1261371600000 , 3.5645799858099] , [ 1261458000000 , 3.5435699544913] , [ 1261544400000 , 3.6727689970369] , [ 1261630800000 , 3.5981692177625] , [ 1261976400000 , 3.5214854653168] , [ 1262062800000 , 3.5552432172187] , [ 1262149200000 , 3.6044667019261] , [ 1262235600000 , 3.6418917027612] , [ 1262581200000 , 3.7874348786051] , [ 1262667600000 , 3.7504992194283] , [ 1262754000000 , 3.7784983325609] , [ 1262840400000 , 3.8014246854259] , [ 1262926800000 , 3.8431625893614] , [ 1263186000000 , 3.8526169051741] , [ 1263272400000 , 3.7355795345891] , [ 1263358800000 , 3.7890845555981] , [ 1263445200000 , 3.7253525072644] , [ 1263531600000 , 3.7114285897826] , [ 1263877200000 , 3.9626938365861] , [ 1263963600000 , 3.8060318406823] , [ 1264050000000 , 3.8337575418691] , [ 1264136400000 , 4.3294528812616] , [ 1264395600000 , 3.8442033930898] , [ 1264482000000 , 4.285271912028] , [ 1264568400000 , 4.2087269266923] , [ 1264654800000 , 3.8284915672164] , [ 1264741200000 , 4.1534036336602] , [ 1265000400000 , 4.4103995236919] , [ 1265086800000 , 4.4068295134496] , [ 1265173200000 , 4.4450474282245] , [ 1265259600000 , 4.38131267142] , [ 1265346000000 , 4.3791201508327] , [ 1265605200000 , 4.3258532615489] , [ 1265691600000 , 4.3252719549325] , [ 1265778000000 , 4.439002994072] , [ 1265864400000 , 4.5021254673678] , [ 1265950800000 , 5.44279235516] , [ 1266296400000 , 4.4139668626965] , [ 1266382800000 , 4.5667133332052] , [ 1266469200000 , 4.1979778225181] , [ 1266555600000 , 4.2578024361996] , [ 1266814800000 , 4.4268665227754] , [ 1266901200000 , 4.2825958579183] , [ 1266987600000 , 4.3195187815662] , [ 1267074000000 , 4.3298386326078] , [ 1267160400000 , 4.3586027570776] , [ 1267419600000 , 5.3860474686307] , [ 1267506000000 , 5.4526661717604] , [ 1267592400000 , 5.5501903215109] , [ 1267678800000 , 4.4466915452437] , [ 1267765200000 , 4.4617567500702] , [ 1268024400000 , 4.5484652625856] , [ 1268110800000 , 4.0921504402963] , [ 1268197200000 , 4.1517292063227] , [ 1268283600000 , 3.9295314192248] , [ 1268370000000 , 3.9539302585784] , [ 1268625600000 , 4.6214983327108] , [ 1268712000000 , 4.6114298729669] , [ 1268798400000 , 4.6388514236374] , [ 1268884800000 , 4.5714128942135] , [ 1268971200000 , 4.5877698426337] , [ 1269230400000 , 4.5787682614556] , [ 1269316800000 , 4.6093366151174] , [ 1269403200000 , 4.5937465579186] , [ 1269489600000 , 4.4945887601257] , [ 1269576000000 , 4.6301712102649] , [ 1269835200000 , 5.6030370183914] , [ 1269921600000 , 4.5873880318819] , [ 1270008000000 , 6.7313170382762] , [ 1270094400000 , 6.3013364884648] , [ 1270440000000 , 6.3086708861358] , [ 1270526400000 , 6.3030248058021] , [ 1270612800000 , 5.0118128852357] , [ 1270699200000 , 4.2419204544294] , [ 1270785600000 , 4.2135618406375] , [ 1271044800000 , 5.5335754506193] , [ 1271131200000 , 5.6513423131026] , [ 1271217600000 , 5.5181910838466] , [ 1271304000000 , 6.3707681681438] , [ 1271390400000 , 6.4476424669834] , [ 1271649600000 , 6.2278322889791] , [ 1271736000000 , 6.3014029951744] , [ 1271822400000 , 6.4014287080629] , [ 1271908800000 , 6.4001208825908] , [ 1271995200000 , 6.4153411602686] , [ 1272254400000 , 5.8790677126048] , [ 1272340800000 , 7.5186042792919] , [ 1272427200000 , 7.1615679501375] , [ 1272513600000 , 7.4285879457305] , [ 1272600000000 , 7.2469142548274] , [ 1272859200000 , 7.0302923287331] , [ 1272945600000 , 6.845682640463] , [ 1273032000000 , 6.6936898649737] , [ 1273118400000 , 6.5069405456542] , [ 1273204800000 , 6.3535780217133] , [ 1273464000000 , 6.7572946011937] , [ 1273550400000 , 6.7036206630127] , [ 1273636800000 , 6.8717725702439] , [ 1273723200000 , 6.7438906008853] , [ 1273809600000 , 6.7468934213555] , [ 1274068800000 , 6.1905712092223] , [ 1274155200000 , 6.5614923074055] , [ 1274241600000 , 6.2405707617847] , [ 1274328000000 , 6.024849567078] , [ 1274414400000 , 6.2142465132603] , [ 1274673600000 , 6.3021277989086] , [ 1274760000000 , 6.1784138076069] , [ 1274846400000 , 6.4556681652926] , [ 1274932800000 , 6.5793719488947] , [ 1275019200000 , 6.7233612707586] , [ 1275364800000 , 6.6596716243564] , [ 1275451200000 , 6.8288444742104] , [ 1275537600000 , 7.0098406835512] , [ 1275624000000 , 6.5722192314075] , [ 1275883200000 , 6.3524539219733] , [ 1275969600000 , 6.3567308191669] , [ 1276056000000 , 6.3489727497217] , [ 1276142400000 , 6.7793768789175] , [ 1276228800000 , 7.0709702694795] , [ 1276488000000 , 7.1114219908892] , [ 1276574400000 , 7.2862410915964] , [ 1276660800000 , 7.3298640288706] , [ 1276747200000 , 7.2696972332242] , [ 1276833600000 , 7.1953625718325] , [ 1277092800000 , 7.0056100992571] , [ 1277179200000 , 6.9231922026185] , [ 1277265600000 , 6.973088291103] , [ 1277352000000 , 6.9668437225422] , [ 1277438400000 , 6.998525042556] , [ 1277697600000 , 6.9613707055658] , [ 1277784000000 , 6.7509446137765] , [ 1277870400000 , 7.9151638243465] , [ 1277956800000 , 8.850444759974] , [ 1278043200000 , 8.9508248297278] , [ 1278388800000 , 8.8308135377559] , [ 1278475200000 , 9.1557376811178] , [ 1278561600000 , 9.4389243100087] , [ 1278648000000 , 9.3526122655858] , [ 1278907200000 , 9.3695881682679] , [ 1278993600000 , 9.6143885027659] , [ 1279080000000 , 9.6793199374183] , [ 1279166400000 , 9.6797100364861] , [ 1279252800000 , 9.6687744185617] , [ 1279512000000 , 9.1860315020889] , [ 1279598400000 , 9.3724878519175] , [ 1279684800000 , 9.2574079918223] , [ 1279771200000 , 9.5402332610866] , [ 1279857600000 , 9.7999184466266] , [ 1280116800000 , 9.8346281260191] , [ 1280203200000 , 10.391316880569] , [ 1280289600000 , 10.307945373908] , [ 1280376000000 , 10.382694151976] , [ 1280462400000 , 10.619001469575] , [ 1280721600000 , 8.6910859252501] , [ 1280808000000 , 8.2780924741914] , [ 1280894400000 , 9.8210785323957] , [ 1280980800000 , 9.4482871403957] , [ 1281067200000 , 8.2540187693677] , [ 1281326400000 , 8.4215543980314] , [ 1281412800000 , 8.1324369126758] , [ 1281499200000 , 7.8419852840216] , [ 1281585600000 , 7.673037031483] , [ 1281672000000 , 7.8295547289505] , [ 1281931200000 , 7.6567786924202] , [ 1282017600000 , 7.6847540895582] , [ 1282104000000 , 7.7892363698546] , [ 1282190400000 , 7.84393381543] , [ 1282276800000 , 7.8735865802755] , [ 1282536000000 , 7.5653960395666] , [ 1282622400000 , 7.4264318973513] , [ 1282708800000 , 7.6585710369492] , [ 1282795200000 , 9.0392455531444] , [ 1282881600000 , 7.7701188723663] , [ 1283140800000 , 8.8071182900156] , [ 1283227200000 , 10.12550800946] , [ 1283313600000 , 7.7711870423724] , [ 1283400000000 , 8.1821413814992] , [ 1283486400000 , 8.3161795858023] , [ 1283832000000 , 8.1562096933006] , [ 1283918400000 , 7.2981142345076] , [ 1284004800000 , 7.3823745187454] , [ 1284091200000 , 7.5089371933272] , [ 1284350400000 , 7.6119210106499] , [ 1284436800000 , 7.3219012303246] , [ 1284523200000 , 7.3539574616439] , [ 1284609600000 , 7.391155228862] , [ 1284696000000 , 7.7910323736516] , [ 1284955200000 , 7.9891977154861] , [ 1285041600000 , 7.9845113231898] , [ 1285128000000 , 8.0280687385235] , [ 1285214400000 , 8.0220124881512] , [ 1285300800000 , 8.1721960978357] , [ 1285560000000 , 7.3762484505685] , [ 1285646400000 , 7.1849774487922] , [ 1285732800000 , 7.0881168760289] , [ 1285819200000 , 7.6165006632813] , [ 1285905600000 , 7.9281403493209] , [ 1286164800000 , 7.6877892047954] , [ 1286251200000 , 7.5545371151247] , [ 1286337600000 , 7.6163830521595] , [ 1286424000000 , 7.4660122402952] , [ 1286510400000 , 7.4747232801966] , [ 1286769600000 , 6.6670381670041] , [ 1286856000000 , 7.4362967095541] , [ 1286942400000 , 7.4098656539097] , [ 1287028800000 , 7.4308547802326] , [ 1287115200000 , 7.2787840708622] , [ 1287374400000 , 7.361186970691] , [ 1287460800000 , 7.2071009569313] , [ 1287547200000 , 7.488227566033] , [ 1287633600000 , 7.1729577071294] , [ 1287720000000 , 7.1165470501276] , [ 1287979200000 , 7.1835191848776] , [ 1288065600000 , 6.6349220593647] , [ 1288152000000 , 6.5143255314096] , [ 1288238400000 , 6.5093341407168] , [ 1288324800000 , 6.6896752601614] , [ 1288584000000 , 6.4310441067758] , [ 1288670400000 , 6.2630848540459] , [ 1288756800000 , 6.4141428045196] , [ 1288843200000 , 6.9522207665479] , [ 1288929600000 , 7.0751669468923] , [ 1289192400000 , 7.0957173039567] , [ 1289278800000 , 7.0122861213564] , [ 1289365200000 , 7.4884041899658] , [ 1289451600000 , 6.4024254287865] , [ 1289538000000 , 6.7756715157074] , [ 1289797200000 , 6.5292816699702] , [ 1289883600000 , 6.1519776284104] , [ 1289970000000 , 6.3930471671954] , [ 1290056400000 , 6.2839136396227] , [ 1290142800000 , 6.0320314051674] , [ 1290402000000 , 6.1956189210192] , [ 1290488400000 , 6.4028476068441] , [ 1290574800000 , 6.3245283221227] , [ 1290747600000 , 6.4086956263512] , [ 1291006800000 , 6.2512340532516] , [ 1291093200000 , 6.5282484862389] , [ 1291179600000 , 6.736006633423] , [ 1291266000000 , 6.4838112911972] , [ 1291352400000 , 7.2729012263385] , [ 1291611600000 , 7.3376652279673] , [ 1291698000000 , 7.4596873623813] , [ 1291784400000 , 7.0979514825498] , [ 1291870800000 , 7.0512484800374] , [ 1291957200000 , 7.0423918643231] , [ 1292216400000 , 6.9460849020085] , [ 1292302800000 , 6.7249153590091] , [ 1292389200000 , 6.9493884700924] , [ 1292475600000 , 6.9731285187246] , [ 1292562000000 , 6.9351463103721] , [ 1292821200000 , 8.2413807215699] , [ 1292907600000 , 7.9646775997402] , [ 1292994000000 , 6.8365448172611] , [ 1293080400000 , 6.9943194582886] , [ 1293426000000 , 6.7970448427131] , [ 1293512400000 , 6.8562130664842] , [ 1293598800000 , 6.8469233284141] , [ 1293685200000 , 6.8757556495549] , [ 1293771600000 , 6.6976782597699] , [ 1294030800000 , 7.015559070577] , [ 1294117200000 , 7.0626567313096] , [ 1294203600000 , 6.8032104947785] , [ 1294290000000 , 6.9352611689083] , [ 1294376400000 , 6.7857414697848] , [ 1294635600000 , 6.8633059616158] , [ 1294722000000 , 6.6808324212783] , [ 1294808400000 , 6.779464286231] , [ 1294894800000 , 7.8578611910869] , [ 1294981200000 , 6.6289795492906] , [ 1295326800000 , 7.7350355242243] , [ 1295413200000 , 7.8778729932565] , [ 1295499600000 , 7.7131378785653] , [ 1295586000000 , 7.7761093777833] , [ 1295845200000 , 7.8811340173465] , [ 1295931600000 , 7.5154894904157] , [ 1296018000000 , 7.6154099268751] , [ 1296104400000 , 7.4913704458081] , [ 1296190800000 , 7.4130494146429] , [ 1296450000000 , 7.4229098636973] , [ 1296536400000 , 6.4159596258075] , [ 1296622800000 , 6.6683657415423] , [ 1296709200000 , 6.4171737502757] , [ 1296795600000 , 6.4079790334457] , [ 1297054800000 , 6.3577488567458] , [ 1297141200000 , 6.552907119049] , [ 1297227600000 , 7.7742705226911] , [ 1297314000000 , 7.5988649174825] , [ 1297400400000 , 7.552005535535] , [ 1297659600000 , 7.9791540246632] , [ 1297746000000 , 7.7179473869873] , [ 1297832400000 , 7.6620128768293] , [ 1297918800000 , 7.9535210584646] , [ 1298005200000 , 7.8352981913095] , [ 1298350800000 , 7.6818406674459] , [ 1298437200000 , 7.441032734805] , [ 1298523600000 , 7.6264178309908] , [ 1298610000000 , 7.7511248043048] , [ 1298869200000 , 7.5983874373561] , [ 1298955600000 , 7.6328955664289] , [ 1299042000000 , 7.5712604372079] , [ 1299128400000 , 7.6943733241434] , [ 1299214800000 , 7.6908137510547] , [ 1299474000000 , 8.0394377732533] , [ 1299560400000 , 7.7006439351331] , [ 1299646800000 , 7.9939193256762] , [ 1299733200000 , 8.0146855617036] , [ 1299819600000 , 8.0652390767127] , [ 1300075200000 , 8.2111961074116] , [ 1300161600000 , 7.9977564987315] , [ 1300248000000 , 8.0094768132623] , [ 1300334400000 , 8.1670785086275] , [ 1300420800000 , 8.1911137136314] , [ 1300680000000 , 8.2122733755099] , [ 1300766400000 , 8.0278517190718] , [ 1300852800000 , 8.159377330552] , [ 1300939200000 , 8.0660341238415] , [ 1301025600000 , 7.9802936768258] , [ 1301284800000 , 8.1117644672074] , [ 1301371200000 , 8.5256638547532] , [ 1301457600000 , 8.3724148847511] , [ 1301544000000 , 8.1704221272491] , [ 1301630400000 , 8.1465935016053] , [ 1301889600000 , 8.2963751060228] , [ 1301976000000 , 8.3139066983581] , [ 1302062400000 , 8.5802750824218] , [ 1302148800000 , 8.282351658262] , [ 1302235200000 , 8.3523375679133] , [ 1302494400000 , 8.3086593229883] , [ 1302580800000 , 8.3060139547942] , [ 1302667200000 , 8.4194477655831] , [ 1302753600000 , 8.1825495239296] , [ 1302840000000 , 8.2032677516527] , [ 1303099200000 , 8.3577429427569] , [ 1303185600000 , 7.8096399779485] , [ 1303272000000 , 8.3617888252644] , [ 1303358400000 , 7.6535505430347] , [ 1303704000000 , 8.1015005464385] , [ 1303790400000 , 8.0967638446531] , [ 1303876800000 , 8.2331001032509] , [ 1303963200000 , 8.0746013906815] , [ 1304049600000 , 7.9581619431196] , [ 1304308800000 , 8.0510521992935] , [ 1304395200000 , 8.249775979159] , [ 1304481600000 , 8.0723102129181] , [ 1304568000000 , 8.0465551385201] , [ 1304654400000 , 7.8419655326199] , [ 1304913600000 , 7.8671847711793] , [ 1305000000000 , 7.9138733612804] , [ 1305086400000 , 8.1690091773467] , [ 1305172800000 , 8.1035499811016] , [ 1305259200000 , 8.2308063620259] , [ 1305518400000 , 7.825523257168] , [ 1305604800000 , 7.939293479624] , [ 1305691200000 , 7.1600370970528] , [ 1305777600000 , 7.352404651612] , [ 1305864000000 , 7.3427064169702] , [ 1306123200000 , 7.2348040826747] , [ 1306209600000 , 7.3355971509463] , [ 1306296000000 , 7.1256863273265] , [ 1306382400000 , 7.1717784277581] , [ 1306468800000 , 6.3334834365537] , [ 1306814400000 , 6.2138512486489] , [ 1306900800000 , 6.1801441591354] , [ 1306987200000 , 7.4877212752515] , [ 1307073600000 , 7.5585768235624] , [ 1307332800000 , 7.3051507363699] , [ 1307419200000 , 7.3307885537127] , [ 1307505600000 , 7.0800524850003] , [ 1307592000000 , 7.3251482222031] , [ 1307678400000 , 7.8167261821593] , [ 1307937600000 , 7.8661342217414] , [ 1308024000000 , 8.0754824328073] , [ 1308110400000 , 7.722336974834] , [ 1308196800000 , 7.7487873054549] , [ 1308283200000 , 8.2601931397118] , [ 1308542400000 , 8.8340692171413] , [ 1308628800000 , 8.8141442040852] , [ 1308715200000 , 7.3885682273556] , [ 1308801600000 , 8.524371173273] , [ 1308888000000 , 8.6577402854431] , [ 1309147200000 , 7.6707502806202] , [ 1309233600000 , 7.4978055094839] , [ 1309320000000 , 7.3818097405847] , [ 1309406400000 , 7.1612677684123] , [ 1309492800000 , 6.368782882442] , [ 1309838400000 , 6.1071313978876] , [ 1309924800000 , 6.1565523090354] , [ 1310011200000 , 6.1475887352994] , [ 1310097600000 , 6.2263430904332] , [ 1310356800000 , 6.9611041985641] , [ 1310443200000 , 7.0242315085635] , [ 1310529600000 , 7.0075843366218] , [ 1310616000000 , 6.9207678449217] , [ 1310702400000 , 7.0524800125284] , [ 1310961600000 , 6.8224030921167] , [ 1311048000000 , 6.8857127873696] , [ 1311134400000 , 6.896303722488] , [ 1311220800000 , 6.2515825214884] , [ 1311307200000 , 6.2646841372931] , [ 1311566400000 , 6.2496084036737] , [ 1311652800000 , 5.9764452251568] , [ 1311739200000 , 6.7304204313871] , [ 1311825600000 , 7.5632953623456] , [ 1311912000000 , 7.4832095921011] , [ 1314763200000 , 6.6199965715845] , [ 1314849600000 , 6.6379081921771] , [ 1314936000000 , 6.3073123029369] , [ 1315281600000 , 6.5545564105314] , [ 1315368000000 , 6.1632696315425] , [ 1315454400000 , 5.95584772283] , [ 1315540800000 , 6.3384259819469] , [ 1315800000000 , 6.1048543229922] , [ 1315886400000 , 6.1280001833333] , [ 1315972800000 , 6.1319318026661] , [ 1316059200000 , 6.1902023394527] , [ 1316145600000 , 5.4545475153717] , [ 1316404800000 , 5.4508003127033] , [ 1316491200000 , 6.6097418079225] , [ 1316577600000 , 6.2695648367966] , [ 1316664000000 , 6.5479656953968] , [ 1316750400000 , 6.1491805140902] , [ 1317009600000 , 4.8301610598105] , [ 1317096000000 , 4.8480010785993] , [ 1317182400000 , 4.5299190756869] , [ 1317268800000 , 5.8831706632668] , [ 1317355200000 , 4.9857318296672] , [ 1317614400000 , 4.729945726575] , [ 1317700800000 , 4.9627773970443] , [ 1317787200000 , 4.9572436376201] , [ 1317873600000 , 3.8804438380164] , [ 1317960000000 , 3.6313005804066] , [ 1318219200000 , 3.5099617228093] , [ 1318305600000 , 3.5809298492224] , [ 1318392000000 , 3.7509968761579] , [ 1318478400000 , 3.6976682399698] , [ 1318564800000 , 3.7554071402231] , [ 1318824000000 , 3.5532516508573] , [ 1318910400000 , 3.7157353115832] , [ 1318996800000 , 3.5546276844061] , [ 1319083200000 , 3.5726560999166] , [ 1319169600000 , 3.6278642583202] , [ 1319428800000 , 3.7698485583911] , [ 1319515200000 , 3.6957429704312] , [ 1319601600000 , 3.8119283813009] , [ 1319688000000 , 4.145999408378] , [ 1319774400000 , 4.2544005194032] , [ 1320033600000 , 3.8560840314136] , [ 1320120000000 , 4.0071099487515] , [ 1320206400000 , 3.8666864871989] , [ 1320292800000 , 3.7520383060086] , [ 1320379200000 , 3.7981325257823] , [ 1320642000000 , 3.7783368665557] , [ 1320728400000 , 3.9903973239273] , [ 1320814800000 , 3.8390780793766] , [ 1320901200000 , 3.9681792562828] , [ 1320987600000 , 4.1202577150874] , [ 1321246800000 , 3.8928918358591] , [ 1321333200000 , 3.6107778154799] , [ 1321419600000 , 3.6805629885085] , [ 1321506000000 , 5.1391631801351] , [ 1321592400000 , 4.8682926150708] , [ 1321851600000 , 4.8254893415811] , [ 1321938000000 , 5.0026171811767] , [ 1322024400000 , 5.1148078013213] , [ 1322197200000 , 5.1056031414338] , [ 1322456400000 , 5.3577325625205] , [ 1322542800000 , 3.9808664894058] , [ 1322629200000 , 4.0986002512641] , [ 1322715600000 , 3.8799962016475] , [ 1322802000000 , 3.9157907805421] , [ 1323061200000 , 4.0476244311429] , [ 1323147600000 , 4.0417379581542] , [ 1323234000000 , 4.109589045041] , [ 1323320400000 , 3.9129560226233] , [ 1323406800000 , 3.9359286132744] , [ 1323666000000 , 3.8737572501197] , [ 1323752400000 , 3.6607533440426] , [ 1323838800000 , 3.6363837386103] , [ 1323925200000 , 4.8560748249197] , [ 1324011600000 , 3.5473901577107] , [ 1324270800000 , 4.8264820658614] , [ 1324357200000 , 3.712469118749] , [ 1324443600000 , 5.0038460000171] , [ 1324530000000 , 5.065494206939] , [ 1324616400000 , 4.7531055960121] , [ 1324962000000 , 4.586323111206] , [ 1325048400000 , 4.5646901099934] , [ 1325134800000 , 4.6107139340923] , [ 1325221200000 , 4.6440461794016] , [ 1325566800000 , 4.3891725117992] , [ 1325653200000 , 4.1966238762838] , [ 1325739600000 , 4.2709900163805] , [ 1325826000000 , 4.3165911723595] , [ 1326085200000 , 4.311249907868] , [ 1326171600000 , 4.4779903572094] , [ 1326258000000 , 3.4076298835166] , [ 1326344400000 , 3.382259226764] , [ 1326430800000 , 3.4488850513864] , [ 1326776400000 , 3.4251262880477] , [ 1326862800000 , 3.3841248437391] , [ 1326949200000 , 3.2725238514] , [ 1327035600000 , 3.2522017539503] , [ 1327294800000 , 3.3809923924243] , [ 1327381200000 , 3.3682669807671] , [ 1327467600000 , 3.2717862699826] , [ 1327554000000 , 3.3970348092886] , [ 1327640400000 , 3.4297652819983] , [ 1327899600000 , 3.4286456277102] , [ 1327986000000 , 3.327524189929] , [ 1328072400000 , 3.5746074207567] , [ 1328158800000 , 3.4635795356803] , [ 1328245200000 , 3.6534724128571] , [ 1328504400000 , 3.5442830502491] , [ 1328590800000 , 3.5751719472643] , [ 1328677200000 , 3.694082546661] , [ 1328763600000 , 3.8173331135166] , [ 1328850000000 , 3.6330485898246] , [ 1329109200000 , 3.9163251063404] , [ 1329195600000 , 3.7718684252196] , [ 1329282000000 , 3.6993204637789] , [ 1329368400000 , 3.708025224958] , [ 1329454800000 , 3.797475561552] , [ 1329800400000 , 3.685289823613] , [ 1329886800000 , 3.5089097057604] , [ 1329973200000 , 3.5263770512642] , [ 1330059600000 , 3.4828938715903] , [ 1330318800000 , 3.4638916777746] , [ 1330405200000 , 3.570874631622] , [ 1330491600000 , 3.4180163343957] , [ 1330578000000 , 3.5312571551772] , [ 1330664400000 , 3.5885544133415] , [ 1330923600000 , 3.5386532308631] , [ 1331010000000 , 3.4458371857556] , [ 1331096400000 , 3.4590048086457] , [ 1331182800000 , 3.4360300363807] , [ 1331269200000 , 3.4261074878453] , [ 1331524800000 , 3.3806482189354] , [ 1331611200000 , 3.4235699326804] , [ 1331697600000 , 3.5553861596051] , [ 1331784000000 , 3.501713836318] , [ 1331870400000 , 3.4271538928069] , [ 1332129600000 , 3.3976754036284] , [ 1332216000000 , 3.4456618390394] , [ 1332302400000 , 3.2901221394091] , [ 1332388800000 , 3.4438000224947] , [ 1332475200000 , 3.5291340142731] , [ 1332734400000 , 3.4422907821278] , [ 1332820800000 , 3.4113809615801] , [ 1332907200000 , 3.4612055653647] , [ 1332993600000 , 3.3765715559162] , [ 1333080000000 , 3.3314488964373] , [ 1333339200000 , 3.7464512805593] , [ 1333425600000 , 4.1979174021391] , [ 1333512000000 , 4.2181907632685] , [ 1333598400000 , 4.0679256157396] , [ 1333944000000 , 4.1025618393266] , [ 1334030400000 , 4.1012098570324] , [ 1334116800000 , 4.1927181173986] , [ 1334203200000 , 4.2668812204674] , [ 1334289600000 , 4.1829131112528] , [ 1334548800000 , 4.1026702994764] , [ 1334635200000 , 4.1833726531351] , [ 1334721600000 , 4.2637794845203] , [ 1334808000000 , 4.1914723019635] , [ 1334894400000 , 4.1792869293066] , [ 1335153600000 , 4.1302379932279] , [ 1335240000000 , 4.0588546259813] , [ 1335326400000 , 3.9975632294602] , [ 1335412800000 , 4.0631056148253] , [ 1335499200000 , 4.1752138560418] , [ 1335758400000 , 4.8433599248432]]} , { "key" : "Micro Cap (<250MM)" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 0.025581267278939] , [ 1028174400000 , 0.029736731672885] , [ 1028260800000 , 0.052794288001074] , [ 1028520000000 , 0.048830079056433] , [ 1028606400000 , 0.04830795755802] , [ 1028692800000 , 0.046694386733552] , [ 1028779200000 , 0.046048825010111] , [ 1028865600000 , 0.043968440546513] , [ 1029124800000 , 0.044179113886454] , [ 1029211200000 , 0.045862261142808] , [ 1029297600000 , 0.047735224729697] , [ 1029384000000 , 0.027402404982823] , [ 1029470400000 , 0.051283228742547] , [ 1029729600000 , 0.029734803031494] , [ 1029816000000 , 0.029447282204104] , [ 1029902400000 , 0.0081947343639122] , [ 1029988800000 , 0.0082875016441072] , [ 1030075200000 , 0.0084812154336843] , [ 1030334400000 , 0.0082494971845111] , [ 1030420800000 , 0.0087524913426621] , [ 1030507200000 , 0.0083171127501928] , [ 1030593600000 , 0.0088632848912256] , [ 1030680000000 , 0.030524537250295] , [ 1031025600000 , 0.027179553700435] , [ 1031112000000 , 0.029202412960846] , [ 1031198400000 , 0.025577102082837] , [ 1031284800000 , 0.027218780963533] , [ 1031544000000 , 0.026682952617785] , [ 1031630400000 , 0.025820358037713] , [ 1031716800000 , 0.02864180610564] , [ 1031803200000 , 0.029522574975908] , [ 1031889600000 , 0.029701526933449] , [ 1032148800000 , 0.025413548641451] , [ 1032235200000 , 0.048679365811936] , [ 1032321600000 , 0.046128734036551] , [ 1032408000000 , 0.097800944656213] , [ 1032494400000 , 0.074682035703262] , [ 1032753600000 , 0.088183756583354] , [ 1032840000000 , 0.059489216840767] , [ 1032926400000 , 0.063363353550999] , [ 1033012800000 , 0.091208294489438] , [ 1033099200000 , 0.091446537701664] , [ 1033358400000 , 0.077090765941227] , [ 1033444800000 , 0.062054377143362] , [ 1033531200000 , 0.11806649580567] , [ 1033617600000 , 0.11540633323035] , [ 1033704000000 , 0.16183853123234] , [ 1033963200000 , 0.15594632997253] , [ 1034049600000 , 0.14501347271368] , [ 1034136000000 , 0.1444919104572] , [ 1034222400000 , 0.14658465912131] , [ 1034308800000 , 0.1525043573541] , [ 1034568000000 , 0.15775913417711] , [ 1034654400000 , 0.089002682309892] , [ 1034740800000 , 0.13206548036825] , [ 1034827200000 , 0.094793857715554] , [ 1034913600000 , 0.067535937208267] , [ 1035172800000 , 0.039107073567352] , [ 1035259200000 , 0.04188756531426] , [ 1035345600000 , 0.043602389024547] , [ 1035432000000 , 0.042460499066148] , [ 1035518400000 , 0.024746193680077] , [ 1035781200000 , 0.02487105197651] , [ 1035867600000 , 0.024692166201586] , [ 1035954000000 , 0.044021787571216] , [ 1036040400000 , 0.090169160763172] , [ 1036126800000 , 0.045182782591776] , [ 1036386000000 , 0.0040918570463389] , [ 1036472400000 , 0.0044895567346257] , [ 1036558800000 , 0.0042247195544619] , [ 1036645200000 , 0.0045196884263424] , [ 1036731600000 , 0.0047440551087516] , [ 1036990800000 , 0.0047858895207734] , [ 1037077200000 , 0.004971642899429] , [ 1037163600000 , 0.0047317044827047] , [ 1037250000000 , 0.0048305425834295] , [ 1037336400000 , 0.004781439217492] , [ 1037595600000 , 0.0043689807284714] , [ 1037682000000 , 0.022253462556731] , [ 1037768400000 , 0.026890274987304] , [ 1037854800000 , 0.022485140609694] , [ 1037941200000 , 0.024723721850142] , [ 1038200400000 , 0.023444631235535] , [ 1038286800000 , 0.026729266213532] , [ 1038373200000 , 0.024916652064622] , [ 1038546000000 , 0.0237846202167] , [ 1038805200000 , 0.026376464287141] , [ 1038891600000 , 0.024033645621089] , [ 1038978000000 , 0.026191550654288] , [ 1039064400000 , 0.023248895677599] , [ 1039150800000 , 0.023243901324975] , [ 1039410000000 , 0.022479954846225] , [ 1039496400000 , 0.01955550559204] , [ 1039582800000 , 0.021456798675209] , [ 1039669200000 , 0.020558740057583] , [ 1039755600000 , 0.019106427636736] , [ 1040014800000 , 0.020710174382726] , [ 1040101200000 , 0.039712497140162] , [ 1040187600000 , 0.036802792986977] , [ 1040274000000 , 0.033606397107795] , [ 1040360400000 , 0.034075662443729] , [ 1040619600000 , 0.030958691503978] , [ 1040706000000 , 0.032604853627586] , [ 1040878800000 , 0.034465358435239] , [ 1040965200000 , 0.034676178668772] , [ 1041224400000 , 0.029097526549999] , [ 1041310800000 , 0.0044449861991488] , [ 1041483600000 , 0.0044757138046207] , [ 1041570000000 , 0.0043652404522661] , [ 1041829200000 , 0.0045893913619599] , [ 1041915600000 , 0.0043848645185263] , [ 1042002000000 , 0.03158039316712] , [ 1042088400000 , 0.004225792718503] , [ 1042174800000 , 0.0043573268247214] , [ 1042434000000 , 0.0044716623546281] , [ 1042520400000 , 0.0043682663976702] , [ 1042606800000 , 0.051929595182646] , [ 1042693200000 , 0.051270012888802] , [ 1042779600000 , 0.050178473278066] , [ 1043125200000 , 0.079459123607893] , [ 1043211600000 , 0.076861898628379] , [ 1043298000000 , 0.071371340078594] , [ 1043384400000 , 0.065395420495007] , [ 1043643600000 , 0.062287201691008] , [ 1043730000000 , 0.066276678772633] , [ 1043816400000 , 0.063832036839109] , [ 1043902800000 , 0.058481466049929] , [ 1043989200000 , 0.064383103276217] , [ 1044248400000 , 0.061181424454157] , [ 1044334800000 , 0.050001097388248] , [ 1044421200000 , 0.051447477328196] , [ 1044507600000 , 0.049162937407877] , [ 1044594000000 , 0.048224258492721] , [ 1044853200000 , 0.048446875849919] , [ 1044939600000 , 0.047703096485975] , [ 1045026000000 , 0.053712919634203] , [ 1045112400000 , 0.049263395326262] , [ 1045198800000 , 0.055243564152776] , [ 1045544400000 , 0.056366522915878] , [ 1045630800000 , 0.060553413901827] , [ 1045717200000 , 0.062769208889923] , [ 1045803600000 , 0.056711903116187] , [ 1046062800000 , 0.057990403185434] , [ 1046149200000 , 0.041380540161162] , [ 1046235600000 , 0.047823294172337] , [ 1046322000000 , 0.052248205388428] , [ 1046408400000 , 0.047172729131362] , [ 1046667600000 , 0.04405251866959] , [ 1046754000000 , 0.043194364152296] , [ 1046840400000 , 0.044360594447895] , [ 1046926800000 , 0.042564787358729] , [ 1047013200000 , 0.039079216183048] , [ 1047272400000 , 0.037938494395436] , [ 1047358800000 , 0.037448434943879] , [ 1047445200000 , 0.033718749626009] , [ 1047531600000 , 0.037932878282205] , [ 1047618000000 , 0.039314724782477] , [ 1047877200000 , 0.037658953860599] , [ 1047963600000 , 0.037762971944543] , [ 1048050000000 , 0.03871520488552] , [ 1048136400000 , 0.037349385270628] , [ 1048222800000 , 0.036011871294001] , [ 1048482000000 , 0.033739216797907] , [ 1048568400000 , 0.03589259731374] , [ 1048654800000 , 0.03737314388633] , [ 1048741200000 , 0.037481913711678] , [ 1048827600000 , 0.033454616742699] , [ 1049086800000 , 0.012507674209947] , [ 1049173200000 , 0.013105750883335] , [ 1049259600000 , 0.013018450336839] , [ 1049346000000 , 0.013707510247831] , [ 1049432400000 , 0.012990677774848] , [ 1049688000000 , 0.012564358974202] , [ 1049774400000 , 0.012801376647984] , [ 1049860800000 , 0.012613707240633] , [ 1049947200000 , 0.012552830610678] , [ 1050033600000 , 0.013200264923986] , [ 1050292800000 , 0.012872428048094] , [ 1050379200000 , 0.013210572903832] , [ 1050465600000 , 0.012968091392463] , [ 1050552000000 , 0.0042788032700636] , [ 1050897600000 , 0.0039344830528271] , [ 1050984000000 , 0.0039018367447018] , [ 1051070400000 , 0.003701306809606] , [ 1051156800000 , 0.0037373530626153] , [ 1051243200000 , 0.0038624302404062] , [ 1051502400000 , 0.0039986263360063] , [ 1051588800000 , 0.0037820446282556] , [ 1051675200000 , 0.0038901628495959] , [ 1051761600000 , 0.0041171016188502] , [ 1051848000000 , 0.0038836988933912] , [ 1052107200000 , 0.003621686788833] , [ 1052193600000 , 0.0042625972368624] , [ 1052280000000 , 0.0038269981093598] , [ 1052366400000 , 0.0037956020746228] , [ 1052452800000 , 0.0037860462253253] , [ 1052712000000 , 0.0037422250400484] , [ 1052798400000 , 0.0037026556033026] , [ 1052884800000 , 0.0038002884256296] , [ 1052971200000 , 0.0038472697130329] , [ 1053057600000 , 0.0036882588478701] , [ 1053316800000 , 0.0040364411324761] , [ 1053403200000 , 0.0040798276511065] , [ 1053489600000 , 0.003840596050564] , [ 1053576000000 , 0.0038336035126208] , [ 1053662400000 , 0.0039009660495121] , [ 1054008000000 , 0.004422002859048] , [ 1054094400000 , 0.0041860559959442] , [ 1054180800000 , 0.0043606836309608] , [ 1054267200000 , 0.0043416565265813] , [ 1054526400000 , 0.0041295814088803] , [ 1054612800000 , 0.0042963522225601] , [ 1054699200000 , 0.0042386625505222] , [ 1054785600000 , 0.0043457762698409] , [ 1054872000000 , 0.0041019360686612] , [ 1055131200000 , 0.0040616807890817] , [ 1055217600000 , 0.0043274383850849] , [ 1055304000000 , 0.0042899480830675] , [ 1055390400000 , 0.0042455668071843] , [ 1055476800000 , 0.0045749481726146] , [ 1055736000000 , 0.0044634464769408] , [ 1055822400000 , 0.0044977442312724] , [ 1055908800000 , 0.003999833396281] , [ 1055995200000 , 0.0042336290691125] , [ 1056081600000 , 0.0044770856161414] , [ 1056340800000 , 0.0044384290447745] , [ 1056427200000 , 0.004108400019291] , [ 1056513600000 , 0.0046157162910058] , [ 1056600000000 , 0.0048438038025096] , [ 1056686400000 , 0.0046748757489901] , [ 1056945600000 , 0.0041625649899761] , [ 1057032000000 , 0.0037157217666868] , [ 1057118400000 , 0.003708355330733] , [ 1057204800000 , 0.0037330351723062] , [ 1057550400000 , 0.0037187614081074] , [ 1057636800000 , 0.0038013361729803] , [ 1057723200000 , 0.0039679897321484] , [ 1057809600000 , 0.0037976430836964] , [ 1057896000000 , 0.0035868623917725] , [ 1058155200000 , 0.0035525745498187] , [ 1058241600000 , 0.0039026649865817] , [ 1058328000000 , 0.0037560146536565] , [ 1058414400000 , 0.0033891745167867] , [ 1058500800000 , 0.0033188545812138] , [ 1058760000000 , 0.003499238593776] , [ 1058846400000 , 0.0035189556376036] , [ 1058932800000 , 0.0035857553754461] , [ 1059019200000 , 0.0037630753676146] , [ 1059105600000 , 0.0035138251358084] , [ 1059364800000 , 0.0036971501123804] , [ 1059451200000 , 0.0034858490402712] , [ 1059537600000 , 0.0036694310601687] , [ 1059624000000 , 0.0030797110100797] , [ 1059710400000 , 0.003046989647545] , [ 1059969600000 , 0.0033219780674728] , [ 1060056000000 , 0.0030841714099078] , [ 1060142400000 , 0.0030472639733462] , [ 1060228800000 , 0.0029646517727957] , [ 1060315200000 , 0.0030360371652247] , [ 1060574400000 , 0.0030567111190777] , [ 1060660800000 , 0.0029746548667045] , [ 1060747200000 , 0.0028308520505102] , [ 1060833600000 , 0.0029134906418826] , [ 1060920000000 , 0.0030729314286277] , [ 1061179200000 , 0.0030316406081977] , [ 1061265600000 , 0.0030797652444305] , [ 1061352000000 , 0.0030941235796122] , [ 1061438400000 , 0.0032439084687081] , [ 1061524800000 , 0.0029552076091776] , [ 1061784000000 , 0.003282451962204] , [ 1061870400000 , 0.0029142650727789] , [ 1061956800000 , 0.0030057735100026] , [ 1062043200000 , 0.0029607647613211] , [ 1062129600000 , 0.0028558144252586] , [ 1062475200000 , 0.0029508890560702] , [ 1062561600000 , 0.0028612017105935] , [ 1062648000000 , 0.002765424444091] , [ 1062734400000 , 0.0026816827871882] , [ 1062993600000 , 0.0027934474181613] , [ 1063080000000 , 0.0028771146712526] , [ 1063166400000 , 0.0028206806742064] , [ 1063252800000 , 0.0028429443447262] , [ 1063339200000 , 0.0027126299959] , [ 1063598400000 , 0.0027648894585895] , [ 1063684800000 , 0.0029164325119996] , [ 1063771200000 , 0.0027075898441596] , [ 1063857600000 , 0.0027629859383951] , [ 1063944000000 , 0.0028710035970681] , [ 1064203200000 , 0.0028121948200106] , [ 1064289600000 , 0.0028979055225736] , [ 1064376000000 , 0.0026357785050804] , [ 1064462400000 , 0.0025855374186268] , [ 1064548800000 , 0.0026944841950042] , [ 1064808000000 , 0.0028469519608374] , [ 1064894400000 , 0.28450817412486] , [ 1064980800000 , 0.31109111101317] , [ 1065067200000 , 0.30186408684386] , [ 1065153600000 , 0.30249680948414] , [ 1065412800000 , 0.2865400635939] , [ 1065499200000 , 0.31793686980739] , [ 1065585600000 , 0.29721249885027] , [ 1065672000000 , 0.31224905608148] , [ 1065758400000 , 0.29828756004301] , [ 1066017600000 , 0.29823222376042] , [ 1066104000000 , 0.29848422539315] , [ 1066190400000 , 0.32615452875859] , [ 1066276800000 , 0.30781706307439] , [ 1066363200000 , 0.31999926538106] , [ 1066622400000 , 0.30846621267775] , [ 1066708800000 , 0.31350986157648] , [ 1066795200000 , 0.29488524651126] , [ 1066881600000 , 0.28140710689657] , [ 1066968000000 , 0.29808636614419] , [ 1067230800000 , 0.30856294304693] , [ 1067317200000 , 0.28957259176879] , [ 1067403600000 , 0.28574594167472] , [ 1067490000000 , 0.31397082372905] , [ 1067576400000 , 0.28098899739321] , [ 1067835600000 , 0.29580008798477] , [ 1067922000000 , 0.28124260869349] , [ 1068008400000 , 0.29030454217497] , [ 1068094800000 , 0.29381621565781] , [ 1068181200000 , 0.28413763662147] , [ 1068440400000 , 0.29133978452184] , [ 1068526800000 , 0.2974691241592] , [ 1068613200000 , 0.27785739697111] , [ 1068699600000 , 0.28692237955946] , [ 1068786000000 , 0.3025430975109] , [ 1069045200000 , 0.27974024019066] , [ 1069131600000 , 0.28205204096901] , [ 1069218000000 , 0.27891578500471] , [ 1069304400000 , 0.28621399096311] , [ 1069390800000 , 0.30611724687275] , [ 1069650000000 , 0.29522193733073] , [ 1069736400000 , 0.31041433675291] , [ 1069822800000 , 0.30207273938285] , [ 1069995600000 , 0.28077746495088] , [ 1070254800000 , 0.30790142300384] , [ 1070341200000 , 0.32391042322391] , [ 1070427600000 , 0.34713120693035] , [ 1070514000000 , 0.3130639380082] , [ 1070600400000 , 0.35277991114677] , [ 1070859600000 , 0.34951269944728] , [ 1070946000000 , 0.33728676441237] , [ 1071032400000 , 0.32858316551564] , [ 1071118800000 , 0.34763771488822] , [ 1071205200000 , 0.31112426298048] , [ 1071464400000 , 0.31403635126568] , [ 1071550800000 , 0.32993619699926] , [ 1071637200000 , 0.31744271908573] , [ 1071723600000 , 0.34230352522983] , [ 1071810000000 , 0.33204474901422] , [ 1072069200000 , 0.31508659873016] , [ 1072155600000 , 0.30865482857886] , [ 1072242000000 , 0.33797905101825] , [ 1072414800000 , 0.31028066128089] , [ 1072674000000 , 0.31253897726674] , [ 1072760400000 , 0.32921073586772] , [ 1072846800000 , 0.14257457669076] , [ 1073019600000 , 0.13791540423409] , [ 1073278800000 , 0.14432340497197] , [ 1073365200000 , 0.15731652697115] , [ 1073451600000 , 0.14355785855527] , [ 1073538000000 , 0.16181965532861] , [ 1073624400000 , 0.15938892375434] , [ 1073883600000 , 0.15612820664935] , [ 1073970000000 , 0.16074839713582] , [ 1074056400000 , 0.15669429168927] , [ 1074142800000 , 0.15252977201682] , [ 1074229200000 , 0.14604668084587] , [ 1074574800000 , 0.15730724457241] , [ 1074661200000 , 0.16180469669709] , [ 1074747600000 , 0.14482627470363] , [ 1074834000000 , 0.14922715192894] , [ 1075093200000 , 0.1551228043648] , [ 1075179600000 , 0.15461983207271] , [ 1075266000000 , 0.15924640096304] , [ 1075352400000 , 0.14347045313405] , [ 1075438800000 , 0.14088687051379] , [ 1075698000000 , 0.15458807863583] , [ 1075784400000 , 0.15606294751813] , [ 1075870800000 , 0.14460768492755] , [ 1075957200000 , 0.14017923217902] , [ 1076043600000 , 0.1448942047385] , [ 1076302800000 , 0.15973701641069] , [ 1076389200000 , 0.15226261560714] , [ 1076475600000 , 0.15789748591526] , [ 1076562000000 , 0.15573299785437] , [ 1076648400000 , 0.14564531768807] , [ 1076994000000 , 0.14980257281745] , [ 1077080400000 , 0.14667065102403] , [ 1077166800000 , 0.13754541763094] , [ 1077253200000 , 0.13300705129563] , [ 1077512400000 , 0.13930940301128] , [ 1077598800000 , 0.14000243690974] , [ 1077685200000 , 0.14962969085648] , [ 1077771600000 , 0.14056323655239] , [ 1077858000000 , 0.13422382457535] , [ 1078117200000 , 0.14210937327344] , [ 1078203600000 , 0.14700633353328] , [ 1078290000000 , 0.13922688521116] , [ 1078376400000 , 0.14429758068854] , [ 1078462800000 , 0.15506959894598] , [ 1078722000000 , 0.14294018272796] , [ 1078808400000 , 0.14048959983036] , [ 1078894800000 , 0.13602811904017] , [ 1078981200000 , 0.13834202833344] , [ 1079067600000 , 0.14919796731091] , [ 1079326800000 , 0.13369419896477] , [ 1079413200000 , 0.14255082934923] , [ 1079499600000 , 0.13484850822421] , [ 1079586000000 , 0.15109195448804] , [ 1079672400000 , 0.13905057529637] , [ 1079931600000 , 0.13735280549285] , [ 1080018000000 , 0.13381725746529] , [ 1080104400000 , 0.13673513876199] , [ 1080190800000 , 0.1280950099741] , [ 1080277200000 , 0.13638870404742] , [ 1080536400000 , 0.13447210188141] , [ 1080622800000 , 0.13037846707069] , [ 1080709200000 , 0.043079993242009] , [ 1080795600000 , 0.040283747607273] , [ 1080882000000 , 0.044430430484027] , [ 1081137600000 , 0.040653587592269] , [ 1081224000000 , 0.043823771403589] , [ 1081310400000 , 0.041411458422106] , [ 1081396800000 , 0.040402011530743] , [ 1081742400000 , 0.042057438639387] , [ 1081828800000 , 0.042452570156989] , [ 1081915200000 , 0.038165859581189] , [ 1082001600000 , 0.039800435677929] , [ 1082088000000 , 0.038702582698507] , [ 1082347200000 , 0.037749891296561] , [ 1082433600000 , 0.040562005953138] , [ 1082520000000 , 0.038558873688731] , [ 1082606400000 , 0.040439454716736] , [ 1082692800000 , 0.041191779962148] , [ 1082952000000 , 0.039027043724878] , [ 1083038400000 , 0.040125276167174] , [ 1083124800000 , 0.043329459718505] , [ 1083211200000 , 0.042136782417024] , [ 1083297600000 , 0.039989708477652] , [ 1083556800000 , 0.036112529587832] , [ 1083643200000 , 0.038846431332102] , [ 1083729600000 , 0.036235278931083] , [ 1083816000000 , 0.033237448382233] , [ 1083902400000 , 0.033796088137171] , [ 1084161600000 , 0.033002551404037] , [ 1084248000000 , 0.033765716675188] , [ 1084334400000 , 0.031829313688668] , [ 1084420800000 , 0.033063294629432] , [ 1084507200000 , 0.032914634549266] , [ 1084766400000 , 0.032554802145526] , [ 1084852800000 , 0.033636940345072] , [ 1084939200000 , 0.036962486047104] , [ 1085025600000 , 0.036694593609774] , [ 1085112000000 , 0.03635113401995] , [ 1085371200000 , 0.037457306639345] , [ 1085457600000 , 0.036179209670313] , [ 1085544000000 , 0.036806248250445] , [ 1085630400000 , 0.036443758510971] , [ 1085716800000 , 0.036448425901262] , [ 1086062400000 , 0.041968833381239] , [ 1086148800000 , 0.038863027838162] , [ 1086235200000 , 0.04214956816562] , [ 1086321600000 , 0.041207634063618] , [ 1086580800000 , 0.03827641940432] , [ 1086667200000 , 0.036864722915658] , [ 1086753600000 , 0.036181894590074] , [ 1086840000000 , 0.034003906026981] , [ 1087185600000 , 0.038515333181245] , [ 1087272000000 , 0.034646045294979] , [ 1087358400000 , 0.037496122292149] , [ 1087444800000 , 0.039023018918331] , [ 1087531200000 , 0.036816514296769] , [ 1087790400000 , 0.037892980128942] , [ 1087876800000 , 0.042502806354063] , [ 1087963200000 , 0.042395293229815] , [ 1088049600000 , 0.037996106758165] , [ 1088136000000 , 0.036290640119804] , [ 1088395200000 , 0.037444338433371] , [ 1088481600000 , 0.036450560918436] , [ 1088568000000 , 0.38987608574103] , [ 1088654400000 , 0.36007497681376] , [ 1088740800000 , 0.35916161356966] , [ 1089086400000 , 0.34837877579055] , [ 1089172800000 , 0.35919440094404] , [ 1089259200000 , 0.38475991637086] , [ 1089345600000 , 0.32837764490869] , [ 1089604800000 , 0.31853247564573] , [ 1089691200000 , 0.32584208381372] , [ 1089777600000 , 0.32194156348395] , [ 1089864000000 , 0.37536662084325] , [ 1089950400000 , 0.3766551887084] , [ 1090209600000 , 0.40726679545134] , [ 1090296000000 , 0.38648530146356] , [ 1090382400000 , 0.37409632246768] , [ 1090468800000 , 0.37409544007818] , [ 1090555200000 , 0.37055835119221] , [ 1090814400000 , 0.37550685955691] , [ 1090900800000 , 0.37419170032409] , [ 1090987200000 , 0.38151211478009] , [ 1091073600000 , 0.37026251646666] , [ 1091160000000 , 0.39580708538652] , [ 1091419200000 , 0.40223381041709] , [ 1091505600000 , 0.39397469057887] , [ 1091592000000 , 0.38461208040503] , [ 1091678400000 , 0.40157185514709] , [ 1091764800000 , 0.49468773985675] , [ 1092024000000 , 0.46157456459015] , [ 1092110400000 , 0.47406411916133] , [ 1092196800000 , 0.50875166265444] , [ 1092283200000 , 0.47804780106801] , [ 1092369600000 , 0.48513183701324] , [ 1092628800000 , 0.47397457255883] , [ 1092715200000 , 0.46197589413417] , [ 1092801600000 , 0.37675242805852] , [ 1092888000000 , 0.38434167263157] , [ 1092974400000 , 0.38370069077138] , [ 1093233600000 , 0.3694792334813] , [ 1093320000000 , 0.36966353326572] , [ 1093406400000 , 0.37981222720974] , [ 1093492800000 , 0.39157851067496] , [ 1093579200000 , 0.39832930183424] , [ 1093838400000 , 0.41714833138812] , [ 1093924800000 , 0.41957688664075] , [ 1094011200000 , 0.4029673674536] , [ 1094097600000 , 0.41012586224919] , [ 1094184000000 , 0.40990165088346] , [ 1094529600000 , 0.40441056282186] , [ 1094616000000 , 0.40384129044752] , [ 1094702400000 , 0.4043469357522] , [ 1094788800000 , 0.41087997979019] , [ 1095048000000 , 0.40369920893288] , [ 1095134400000 , 0.41220446836229] , [ 1095220800000 , 0.41020321980473] , [ 1095307200000 , 0.41555570322753] , [ 1095393600000 , 0.4023472363438] , [ 1095652800000 , 0.41410888862687] , [ 1095739200000 , 0.39846061791906] , [ 1095825600000 , 0.41474213178066] , [ 1095912000000 , 0.38423985142339] , [ 1095998400000 , 0.33696459849967] , [ 1096257600000 , 0.37240522401662] , [ 1096344000000 , 0.34510432816914] , [ 1096430400000 , 0.33136351494997] , [ 1096516800000 , 0.38436797167454] , [ 1096603200000 , 0.36392113068077] , [ 1096862400000 , 0.38394438541252] , [ 1096948800000 , 0.37738905657046] , [ 1097035200000 , 0.37129524939141] , [ 1097121600000 , 0.37661307666643] , [ 1097208000000 , 0.38376339925963] , [ 1097467200000 , 0.37698090395419] , [ 1097553600000 , 0.38466438465664] , [ 1097640000000 , 0.38552917097573] , [ 1097726400000 , 0.38295574557265] , [ 1097812800000 , 0.38608823287329] , [ 1098072000000 , 0.39606272849381] , [ 1098158400000 , 0.39977219262761] , [ 1098244800000 , 0.37287975500762] , [ 1098331200000 , 0.35387196145581] , [ 1098417600000 , 0.39496745491125] , [ 1098676800000 , 0.39489927197645] , [ 1098763200000 , 0.35714549128851] , [ 1098849600000 , 0.37680375842899] , [ 1098936000000 , 0.38133362981812] , [ 1099022400000 , 0.36334295857985] , [ 1099285200000 , 0.35891130650083] , [ 1099371600000 , 0.36213450201907] , [ 1099458000000 , 0.36305986324541] , [ 1099544400000 , 0.367181608239] , [ 1099630800000 , 0.345924979949] , [ 1099890000000 , 0.35545038697162] , [ 1099976400000 , 0.35130608250988] , [ 1100062800000 , 0.36291787792322] , [ 1100149200000 , 0.36461820979297] , [ 1100235600000 , 0.36548605733172] , [ 1100494800000 , 0.35408841887334] , [ 1100581200000 , 0.37310682746733] , [ 1100667600000 , 0.37161415702166] , [ 1100754000000 , 0.36646386964788] , [ 1100840400000 , 0.37513819386426] , [ 1101099600000 , 0.36383784194996] , [ 1101186000000 , 0.3651170397601] , [ 1101272400000 , 0.36683085353481] , [ 1101445200000 , 0.37539330498467] , [ 1101704400000 , 0.34882620581261] , [ 1101790800000 , 0.36517170678901] , [ 1101877200000 , 0.33963261527792] , [ 1101963600000 , 0.34647852737023] , [ 1102050000000 , 0.35698021026837] , [ 1102309200000 , 0.35844452137989] , [ 1102395600000 , 0.37978658052913] , [ 1102482000000 , 0.364670534636] , [ 1102568400000 , 0.36800280374422] , [ 1102654800000 , 0.35323070569743] , [ 1102914000000 , 0.35145593502416] , [ 1103000400000 , 0.34920002707242] , [ 1103086800000 , 0.36655737046135] , [ 1103173200000 , 0.37968359792346] , [ 1103259600000 , 0.37364127890912] , [ 1103518800000 , 0.38158951606706] , [ 1103605200000 , 0.37753112891031] , [ 1103691600000 , 0.40140328460469] , [ 1103778000000 , 0.37862280609298] , [ 1104123600000 , 0.38788453693715] , [ 1104210000000 , 0.39351850639239] , [ 1104296400000 , 0.3854342015797] , [ 1104382800000 , 0.39209212572227] , [ 1104469200000 , 0.62122235607083] , [ 1104728400000 , 0.60121120663027] , [ 1104814800000 , 0.61454818094337] , [ 1104901200000 , 0.58416165264652] , [ 1104987600000 , 0.60424076612216] , [ 1105074000000 , 0.59676116438901] , [ 1105333200000 , 0.59892159471824] , [ 1105419600000 , 0.58659097926312] , [ 1105506000000 , 0.5953209241749] , [ 1105592400000 , 0.64456653204505] , [ 1105678800000 , 0.64021470874433] , [ 1106024400000 , 0.62906481191661] , [ 1106110800000 , 0.61867908036089] , [ 1106197200000 , 0.63893923395183] , [ 1106283600000 , 0.64227178085747] , [ 1106542800000 , 0.65347064004625] , [ 1106629200000 , 0.63035617304371] , [ 1106715600000 , 0.64772810508811] , [ 1106802000000 , 0.64286914127566] , [ 1106888400000 , 0.62302840939674] , [ 1107147600000 , 0.66149167638339] , [ 1107234000000 , 0.61967119931611] , [ 1107320400000 , 0.63596342992503] , [ 1107406800000 , 0.63582183776166] , [ 1107493200000 , 0.63890003629705] , [ 1107752400000 , 0.65385112283064] , [ 1107838800000 , 0.61763865993933] , [ 1107925200000 , 0.63039219633145] , [ 1108011600000 , 0.63564728405509] , [ 1108098000000 , 0.64841840732127] , [ 1108357200000 , 0.62987978032264] , [ 1108443600000 , 0.63952467251781] , [ 1108530000000 , 0.60803506762993] , [ 1108616400000 , 0.60924199574948] , [ 1108702800000 , 0.62720795451261] , [ 1109048400000 , 0.67868561376144] , [ 1109134800000 , 0.64457773480528] , [ 1109221200000 , 0.63854921418197] , [ 1109307600000 , 0.60472528190715] , [ 1109566800000 , 0.64880843481536] , [ 1109653200000 , 0.60929190900967] , [ 1109739600000 , 0.60262584872237] , [ 1109826000000 , 0.6209822624622] , [ 1109912400000 , 0.59399619054478] , [ 1110171600000 , 0.59262634332275] , [ 1110258000000 , 0.59569530567455] , [ 1110344400000 , 0.58280395041141] , [ 1110430800000 , 0.60118706408301] , [ 1110517200000 , 0.60510096760445] , [ 1110776400000 , 0.60793443149121] , [ 1110862800000 , 0.6094232824956] , [ 1110949200000 , 0.56373698317073] , [ 1111035600000 , 0.59026315151813] , [ 1111122000000 , 0.56275388104744] , [ 1111381200000 , 0.58593902224025] , [ 1111467600000 , 0.5636885616686] , [ 1111554000000 , 0.55111487934048] , [ 1111640400000 , 0.5669793931446] , [ 1111986000000 , 0.59172264305349] , [ 1112072400000 , 0.59013350447577] , [ 1112158800000 , 0.58571949529017] , [ 1112245200000 , 0.39447011058686] , [ 1112331600000 , 0.36400425514622] , [ 1112587200000 , 0.35776258470175] , [ 1112673600000 , 0.43851650789862] , [ 1112760000000 , 0.44412013643186] , [ 1112846400000 , 0.37989410253067] , [ 1112932800000 , 0.28900177382308] , [ 1113192000000 , 0.36788915652238] , [ 1113278400000 , 0.28579009834861] , [ 1113364800000 , 0.28469677412475] , [ 1113451200000 , 0.35795943627113] , [ 1113537600000 , 0.37082979476416] , [ 1113796800000 , 0.36779695018111] , [ 1113883200000 , 0.34374004726135] , [ 1113969600000 , 0.45643149590384] , [ 1114056000000 , 0.4433743395976] , [ 1114142400000 , 0.44202423487566] , [ 1114401600000 , 0.43961049637811] , [ 1114488000000 , 0.45267658788063] , [ 1114574400000 , 0.47018137492095] , [ 1114660800000 , 0.47486798354402] , [ 1114747200000 , 0.46606299998856] , [ 1115006400000 , 0.4930085582113] , [ 1115092800000 , 0.48965988041656] , [ 1115179200000 , 0.45667786660287] , [ 1115265600000 , 0.43885993023529] , [ 1115352000000 , 0.43783601240521] , [ 1115611200000 , 0.4310821346918] , [ 1115697600000 , 0.4432921360618] , [ 1115784000000 , 0.42739604366661] , [ 1115870400000 , 0.43416913766062] , [ 1115956800000 , 0.41027380462257] , [ 1116216000000 , 0.42436135767604] , [ 1116302400000 , 0.43629236570361] , [ 1116388800000 , 0.42852586390979] , [ 1116475200000 , 0.4284589768507] , [ 1116561600000 , 0.42724164025025] , [ 1116820800000 , 0.42148141673019] , [ 1116907200000 , 0.4140427664496] , [ 1116993600000 , 0.42817051090869] , [ 1117080000000 , 0.42811591532169] , [ 1117166400000 , 0.43480202581251] , [ 1117512000000 , 0.42508589374691] , [ 1117598400000 , 0.43343422191068] , [ 1117684800000 , 0.45773506240682] , [ 1117771200000 , 0.45439490524272] , [ 1118030400000 , 0.45651971476796] , [ 1118116800000 , 0.44152980952614] , [ 1118203200000 , 0.44743209414993] , [ 1118289600000 , 0.45469129556631] , [ 1118376000000 , 0.43483167759493] , [ 1118635200000 , 0.43031082515377] , [ 1118721600000 , 0.45930933803502] , [ 1118808000000 , 0.46078342072977] , [ 1118894400000 , 0.45445895679547] , [ 1118980800000 , 0.4526778385454] , [ 1119240000000 , 0.45697274788597] , [ 1119326400000 , 0.46903515002673] , [ 1119412800000 , 0.46111612851752] , [ 1119499200000 , 0.47535664554388] , [ 1119585600000 , 0.49306841028507] , [ 1119844800000 , 0.4886760061369] , [ 1119931200000 , 0.47086383863461] , [ 1120017600000 , 0.48441858477258] , [ 1120104000000 , 0.61832296127608] , [ 1120190400000 , 0.65411477192991] , [ 1120536000000 , 0.49894747385731] , [ 1120622400000 , 0.48469523615474] , [ 1120708800000 , 0.65138056809888] , [ 1120795200000 , 0.64304910758613] , [ 1121054400000 , 0.6559920402659] , [ 1121140800000 , 0.66118089680451] , [ 1121227200000 , 0.67756803258577] , [ 1121313600000 , 0.65216285229659] , [ 1121400000000 , 0.66711843230222] , [ 1121659200000 , 0.69144986128045] , [ 1121745600000 , 0.67159046845325] , [ 1121832000000 , 0.70807395185446] , [ 1121918400000 , 0.54095667281304] , [ 1122004800000 , 0.5089879981561] , [ 1122264000000 , 0.52352511046863] , [ 1122350400000 , 0.55171566660544] , [ 1122436800000 , 0.58026398134902] , [ 1122523200000 , 0.5447757294053] , [ 1122609600000 , 0.56643699438967] , [ 1122868800000 , 0.53218738821095] , [ 1122955200000 , 0.5555811146351] , [ 1123041600000 , 0.54105772037403] , [ 1123128000000 , 0.55216349591209] , [ 1123214400000 , 0.52244767865053] , [ 1123473600000 , 0.50308456664785] , [ 1123560000000 , 0.52096614517823] , [ 1123646400000 , 0.51516200583681] , [ 1123732800000 , 0.48665176191008] , [ 1123819200000 , 0.49583589167328] , [ 1124078400000 , 0.50358898065094] , [ 1124164800000 , 0.4982600605943] , [ 1124251200000 , 0.51638595395349] , [ 1124337600000 , 0.50290108239887] , [ 1124424000000 , 0.51420298894574] , [ 1124683200000 , 0.501356133759] , [ 1124769600000 , 0.48937594076624] , [ 1124856000000 , 0.50921605539711] , [ 1124942400000 , 0.51536905675379] , [ 1125028800000 , 0.52611915688051] , [ 1125288000000 , 0.50578707765142] , [ 1125374400000 , 0.51708117737528] , [ 1125460800000 , 0.52189353916232] , [ 1125547200000 , 0.51869992233272] , [ 1125633600000 , 0.52442570632128] , [ 1125979200000 , 0.52348135667568] , [ 1126065600000 , 0.50712149207143] , [ 1126152000000 , 0.39853144070375] , [ 1126238400000 , 0.37626143304953] , [ 1126497600000 , 0.37685246722436] , [ 1126584000000 , 0.37696682338027] , [ 1126670400000 , 0.38250303488507] , [ 1126756800000 , 0.38853878601149] , [ 1126843200000 , 0.39720205350604] , [ 1127102400000 , 0.38246621359149] , [ 1127188800000 , 0.39458479224224] , [ 1127275200000 , 0.39252448023845] , [ 1127361600000 , 0.39704540681604] , [ 1127448000000 , 0.3804141699462] , [ 1127707200000 , 0.37520772307294] , [ 1127793600000 , 0.36583102378453] , [ 1127880000000 , 0.53089570606572] , [ 1127966400000 , 0.53565511348212] , [ 1128052800000 , 0.28455156477589] , [ 1128312000000 , 0.2866996913567] , [ 1128398400000 , 0.29885906476219] , [ 1128484800000 , 0.30492356780702] , [ 1128571200000 , 0.28956840100103] , [ 1128657600000 , 0.30537553801139] , [ 1128916800000 , 0.29890984099937] , [ 1129003200000 , 0.29801974804218] , [ 1129089600000 , 0.28705739517062] , [ 1129176000000 , 0.27215719953539] , [ 1129262400000 , 0.28732688046429] , [ 1129521600000 , 0.26695255074849] , [ 1129608000000 , 0.27947140042508] , [ 1129694400000 , 0.1640126970422] , [ 1129780800000 , 0.28286904367429] , [ 1129867200000 , 0.29180870225613] , [ 1130126400000 , 0.30278273692719] , [ 1130212800000 , 0.29917849034537] , [ 1130299200000 , 0.28968981038784] , [ 1130385600000 , 0.28591902219754] , [ 1130472000000 , 0.29242694961535] , [ 1130734800000 , 0.29250242176988] , [ 1130821200000 , 0.40774792665504] , [ 1130907600000 , 0.29572035611257] , [ 1130994000000 , 0.29336140612499] , [ 1131080400000 , 0.2947155489941] , [ 1131339600000 , 0.27984604730157] , [ 1131426000000 , 0.27774017894691] , [ 1131512400000 , 0.2824108179446] , [ 1131598800000 , 0.27266476139892] , [ 1131685200000 , 0.28145760872602] , [ 1131944400000 , 0.2778405488462] , [ 1132030800000 , 0.28256142896452] , [ 1132117200000 , 0.27066399823214] , [ 1132203600000 , 0.26527518282653] , [ 1132290000000 , 0.26486010438949] , [ 1132549200000 , 0.28306154292559] , [ 1132635600000 , 0.26286597932896] , [ 1132722000000 , 0.26238074457023] , [ 1132894800000 , 0.26311379043932] , [ 1133154000000 , 0.4136159331706] , [ 1133240400000 , 0.35774547973642] , [ 1133326800000 , 0.53073899262452] , [ 1133413200000 , 0.36909398779325] , [ 1133499600000 , 0.36672946509259] , [ 1133758800000 , 0.37373430250645] , [ 1133845200000 , 0.37461389366391] , [ 1133931600000 , 0.35629393000642] , [ 1134018000000 , 0.3705943383987] , [ 1134104400000 , 0.37460270901238] , [ 1134363600000 , 0.36617723158865] , [ 1134450000000 , 0.37986767534784] , [ 1134536400000 , 0.37105346542707] , [ 1134622800000 , 0.37060332722022] , [ 1134709200000 , 0.38760430571762] , [ 1134968400000 , 0.36734330004461] , [ 1135054800000 , 0.37074758732076] , [ 1135141200000 , 0.35806178929791] , [ 1135227600000 , 0.35533559469085] , [ 1135314000000 , 0.35513143545522] , [ 1135659600000 , 0.35308688957685] , [ 1135746000000 , 0.37046506819907] , [ 1135832400000 , 0.36450014374408] , [ 1135918800000 , 0.36423801932024] , [ 1136264400000 , 0.49556220548654] , [ 1136350800000 , 0.49492386336512] , [ 1136437200000 , 0.49517380178303] , [ 1136523600000 , 0.50265710202576] , [ 1136782800000 , 0.39359946387333] , [ 1136869200000 , 0.38590236409208] , [ 1136955600000 , 0.39258576463726] , [ 1137042000000 , 0.40271080665062] , [ 1137128400000 , 0.41286962452156] , [ 1137474000000 , 0.40976940608917] , [ 1137560400000 , 0.39845421293693] , [ 1137646800000 , 0.3832634147807] , [ 1137733200000 , 0.3914749468988] , [ 1137992400000 , 0.4067663698373] , [ 1138078800000 , 0.40987816320618] , [ 1138165200000 , 0.40568311448644] , [ 1138251600000 , 0.40602370679277] , [ 1138338000000 , 0.41026253822456] , [ 1138597200000 , 0.39180236917409] , [ 1138683600000 , 0.4124647390781] , [ 1138770000000 , 0.39289366662715] , [ 1138856400000 , 0.3973910882774] , [ 1138942800000 , 0.39503027438072] , [ 1139202000000 , 0.43098602778232] , [ 1139288400000 , 0.41329553872152] , [ 1139374800000 , 0.42097021571259] , [ 1139461200000 , 0.42957769919783] , [ 1139547600000 , 0.43244535976359] , [ 1139806800000 , 0.4190517765553] , [ 1139893200000 , 0.43490107104911] , [ 1139979600000 , 0.41285628161217] , [ 1140066000000 , 0.42195967755994] , [ 1140152400000 , 0.42172858109231] , [ 1140498000000 , 0.41362154756379] , [ 1140584400000 , 0.45349210070292] , [ 1140670800000 , 0.46600395549677] , [ 1140757200000 , 0.42844351639394] , [ 1141016400000 , 0.43127658230242] , [ 1141102800000 , 0.42453897781965] , [ 1141189200000 , 0.60833201574911] , [ 1141275600000 , 0.61848160852955] , [ 1141362000000 , 0.61388606396602] , [ 1141621200000 , 0.60027623023359] , [ 1141707600000 , 0.62958204282625] , [ 1141794000000 , 0.61079677023637] , [ 1141880400000 , 0.6583353531538] , [ 1141966800000 , 0.5952631240736] , [ 1142226000000 , 0.59572939852303] , [ 1142312400000 , 0.60435386557059] , [ 1142398800000 , 0.636716777749] , [ 1142485200000 , 0.62797336156748] , [ 1142571600000 , 0.26315915844954] , [ 1142830800000 , 0.26682829281146] , [ 1142917200000 , 0.26238472701991] , [ 1143003600000 , 0.25682464700449] , [ 1143090000000 , 0.25198241716011] , [ 1143176400000 , 0.27791953686874] , [ 1143435600000 , 0.25702045419556] , [ 1143522000000 , 0.26838705583958] , [ 1143608400000 , 0.25602347019898] , [ 1143694800000 , 0.2528097115847] , [ 1143781200000 , 0.25423750493061] , [ 1144036800000 , 0.26206021897448] , [ 1144123200000 , 0.24983357579782] , [ 1144209600000 , 0.23574410786279] , [ 1144296000000 , 0.23489402412885] , [ 1144382400000 , 0.24917538519566] , [ 1144641600000 , 0.24218153667918] , [ 1144728000000 , 0.22900818782637] , [ 1144814400000 , 0.24260056138376] , [ 1144900800000 , 0.24209263019634] , [ 1145246400000 , 0.24104970681171] , [ 1145332800000 , 0.22962155097921] , [ 1145419200000 , 0.23594829847787] , [ 1145505600000 , 0.23357511845316] , [ 1145592000000 , 0.23466344797748] , [ 1145851200000 , 0.25382477010585] , [ 1145937600000 , 0.24498104622533] , [ 1146024000000 , 0.24856536934551] , [ 1146110400000 , 0.25490757398913] , [ 1146196800000 , 0.23927082407406] , [ 1146456000000 , 0.23862240395176] , [ 1146542400000 , 0.25340051572152] , [ 1146628800000 , 0.25153650791439] , [ 1146715200000 , 0.23832725080541] , [ 1146801600000 , 0.25824921427519] , [ 1147060800000 , 0.24328941145447] , [ 1147147200000 , 0.2402378238822] , [ 1147233600000 , 0.2586697308268] , [ 1147320000000 , 0.30189517371947] , [ 1147406400000 , 0.32297403691478] , [ 1147665600000 , 0.3232491211303] , [ 1147752000000 , 0.32742881018582] , [ 1147838400000 , 0.38921859671899] , [ 1147924800000 , 0.33326106234356] , [ 1148011200000 , 0.32021147443471] , [ 1148270400000 , 0.32262657135279] , [ 1148356800000 , 0.33651532188139] , [ 1148443200000 , 0.30920029793323] , [ 1148529600000 , 0.3240261610407] , [ 1148616000000 , 0.32324420598769] , [ 1148961600000 , 0.32918091697612] , [ 1149048000000 , 0.31768209061131] , [ 1149134400000 , 0.30637193238745] , [ 1149220800000 , 0.32125702341211] , [ 1149480000000 , 0.33536974402701] , [ 1149566400000 , 0.32360008173408] , [ 1149652800000 , 0.33393947607866] , [ 1149739200000 , 0.31413863931084] , [ 1149825600000 , 0.3285324913035] , [ 1150084800000 , 0.38048398262873] , [ 1150171200000 , 0.38109368075766] , [ 1150257600000 , 0.38535042978206] , [ 1150344000000 , 0.37871618841262] , [ 1150430400000 , 0.30179728522937] , [ 1150689600000 , 0.30070122407365] , [ 1150776000000 , 0.2953152783643] , [ 1150862400000 , 0.30810454322489] , [ 1150948800000 , 0.30950223296979] , [ 1151035200000 , 0.30751277925044] , [ 1151294400000 , 0.28946090712408] , [ 1151380800000 , 0.28171452650496] , [ 1151467200000 , 0.26818310831493] , [ 1151553600000 , 0.25159447935111] , [ 1151640000000 , 0.29285262329978] , [ 1151899200000 , 0.29967797591809] , [ 1152072000000 , 0.30470675586592] , [ 1152158400000 , 0.29788563489538] , [ 1152244800000 , 0.29442725214254] , [ 1152504000000 , 0.28629797576532] , [ 1152590400000 , 0.28284047218036] , [ 1152676800000 , 0.3078549818262] , [ 1152763200000 , 0.29413642561555] , [ 1152849600000 , 0.2873364630212] , [ 1153108800000 , 0.29703563639096] , [ 1153195200000 , 0.29728147488916] , [ 1153281600000 , 0.34407083185299] , [ 1153368000000 , 0.33524111767625] , [ 1153454400000 , 0.35641579241026] , [ 1153713600000 , 0.33240152203203] , [ 1153800000000 , 0.33354102856487] , [ 1153886400000 , 0.32793727373281] , [ 1153972800000 , 0.32817019149387] , [ 1154059200000 , 0.25158326201658] , [ 1154318400000 , 0.25146778780225] , [ 1154404800000 , 0.25668488474603] , [ 1154491200000 , 0.24462027564784] , [ 1154577600000 , 0.23861168877594] , [ 1154664000000 , 0.24589478883994] , [ 1154923200000 , 0.24349309598349] , [ 1155009600000 , 0.23003941539242] , [ 1155096000000 , 0.23378888406009] , [ 1155182400000 , 0.23368460417548] , [ 1155268800000 , 0.24430217598693] , [ 1155528000000 , 0.23769761182813] , [ 1155614400000 , 0.22834717036674] , [ 1155700800000 , 0.22584122842512] , [ 1155787200000 , 0.21766258101038] , [ 1155873600000 , 0.23037546015835] , [ 1156132800000 , 0.24360698144711] , [ 1156219200000 , 0.23495113421301] , [ 1156305600000 , 0.23659104095268] , [ 1156392000000 , 0.23023311394933] , [ 1156478400000 , 0.19878228456548] , [ 1156737600000 , 0.19888283980978] , [ 1156824000000 , 0.18547047820099] , [ 1156910400000 , 0.19185078217396] , [ 1156996800000 , 0.19612220913794] , [ 1157083200000 , 0.19278636372742] , [ 1157428800000 , 0.19575613171536] , [ 1157515200000 , 0.19329067240882] , [ 1157601600000 , 0.19531517865992] , [ 1157688000000 , 0.1907315812117] , [ 1157947200000 , 0.18142922122266] , [ 1158033600000 , 0.19112810429448] , [ 1158120000000 , 0.18870012670334] , [ 1158206400000 , 0.18390553429849] , [ 1158292800000 , 0.18644727481368] , [ 1158552000000 , 0.18732023567372] , [ 1158638400000 , 0.18227254965398] , [ 1158724800000 , 0.18159843957856] , [ 1158811200000 , 0.18252102362501] , [ 1158897600000 , 0.1825931067065] , [ 1159156800000 , 0.18472261365044] , [ 1159243200000 , 0.17929881821499] , [ 1159329600000 , 0.19123889443147] , [ 1159416000000 , 0.18870273880387] , [ 1159502400000 , 0.18300240244295] , [ 1159761600000 , 0.50863993408795] , [ 1159848000000 , 0.48210449075571] , [ 1159934400000 , 0.47013337407988] , [ 1160020800000 , 0.48312664523393] , [ 1160107200000 , 0.49058381810915] , [ 1160366400000 , 0.48050490107879] , [ 1160452800000 , 0.36585322228025] , [ 1160539200000 , 0.50152250092668] , [ 1160625600000 , 0.35485455328239] , [ 1160712000000 , 0.38250667491279] , [ 1160971200000 , 0.37524019406877] , [ 1161057600000 , 0.35275337851052] , [ 1161144000000 , 0.35519237337929] , [ 1161230400000 , 0.35783747889518] , [ 1161316800000 , 0.35517712832824] , [ 1161576000000 , 0.38316572493612] , [ 1161662400000 , 0.38881796691042] , [ 1161748800000 , 0.37077626954309] , [ 1161835200000 , 0.35576229140568] , [ 1161921600000 , 0.52311007405192] , [ 1162184400000 , 0.49950514781134] , [ 1162270800000 , 0.35248264643404] , [ 1162357200000 , 0.48193502789331] , [ 1162443600000 , 0.45811153980309] , [ 1162530000000 , 0.46310937441848] , [ 1162789200000 , 0.49430930171419] , [ 1162875600000 , 0.34999979746123] , [ 1162962000000 , 0.36459341236543] , [ 1163048400000 , 0.35833603482679] , [ 1163134800000 , 0.35284589030886] , [ 1163394000000 , 0.40174104775192] , [ 1163480400000 , 0.35965085861264] , [ 1163566800000 , 0.35616853377325] , [ 1163653200000 , 0.37896776933586] , [ 1163739600000 , 0.37501110100191] , [ 1163998800000 , 0.37500220936742] , [ 1164085200000 , 0.39169939900146] , [ 1164171600000 , 0.36894756973605] , [ 1164344400000 , 0.37040294560006] , [ 1164603600000 , 0.38705053246262] , [ 1164690000000 , 0.36832634961052] , [ 1164776400000 , 0.34213417956824] , [ 1164862800000 , 0.34580465211495] , [ 1164949200000 , 0.40108806571521] , [ 1165208400000 , 0.42709230888276] , [ 1165294800000 , 0.40266641573382] , [ 1165381200000 , 0.39310646135032] , [ 1165467600000 , 0.50726360184158] , [ 1165554000000 , 0.47312214678718] , [ 1165813200000 , 0.47820333998284] , [ 1165899600000 , 0.46011449047854] , [ 1165986000000 , 0.5051922251437] , [ 1166072400000 , 0.50801248223675] , [ 1166158800000 , 0.49312204582104] , [ 1166418000000 , 0.49685353518185] , [ 1166504400000 , 0.54566237720795] , [ 1166590800000 , 0.50492611045697] , [ 1166677200000 , 0.48747798678124] , [ 1166763600000 , 0.52323968216806] , [ 1167109200000 , 0.58047024339905] , [ 1167195600000 , 0.53058049638283] , [ 1167282000000 , 0.523959678361] , [ 1167368400000 , 0.64436565009557] , [ 1167800400000 , 0.66769291913771] , [ 1167886800000 , 0.49765317381037] , [ 1167973200000 , 0.49163486346533] , [ 1168232400000 , 0.51522575100992] , [ 1168318800000 , 0.55916689291074] , [ 1168405200000 , 0.65212629830864] , [ 1168491600000 , 0.4907080289554] , [ 1168578000000 , 0.45544641818386] , [ 1168923600000 , 0.46022875844913] , [ 1169010000000 , 0.44731829098412] , [ 1169096400000 , 0.44244076049051] , [ 1169182800000 , 0.47381721404682] , [ 1169442000000 , 0.42751964859032] , [ 1169528400000 , 0.50191666048328] , [ 1169614800000 , 0.47256376840505] , [ 1169701200000 , 0.46867343244732] , [ 1169787600000 , 0.46687731984312] , [ 1170046800000 , 0.47846097997401] , [ 1170133200000 , 0.46826006923677] , [ 1170219600000 , 0.48109723322224] , [ 1170306000000 , 0.48641267470987] , [ 1170392400000 , 0.46591979546739] , [ 1170651600000 , 0.48116119567998] , [ 1170738000000 , 0.50539475360323] , [ 1170824400000 , 0.478613401008] , [ 1170910800000 , 0.48352093437406] , [ 1170997200000 , 0.44605779350788] , [ 1171256400000 , 0.48583744996642] , [ 1171342800000 , 0.4554893549375] , [ 1171429200000 , 0.45750877647433] , [ 1171515600000 , 0.45047787930712] , [ 1171602000000 , 0.42610011741245] , [ 1171947600000 , 0.45037970946695] , [ 1172034000000 , 0.45916838083336] , [ 1172120400000 , 0.4748533114785] , [ 1172206800000 , 0.49644225792847] , [ 1172466000000 , 0.50071744162037] , [ 1172552400000 , 0.60957094744557] , [ 1172638800000 , 0.62555888985632] , [ 1172725200000 , 0.65948576333958] , [ 1172811600000 , 0.5886253227668] , [ 1173070800000 , 0.42403713120847] , [ 1173157200000 , 0.43371457920983] , [ 1173243600000 , 0.6226001715887] , [ 1173330000000 , 0.62667389133331] , [ 1173416400000 , 0.63295473653827] , [ 1173672000000 , 0.58942903175236] , [ 1173758400000 , 0.59100362666202] , [ 1173844800000 , 0.59693723078734] , [ 1173931200000 , 0.60010240865825] , [ 1174017600000 , 0.61159616491547] , [ 1174276800000 , 0.61360517145536] , [ 1174363200000 , 0.42601195213011] , [ 1174449600000 , 0.41949523257628] , [ 1174536000000 , 0.44693079557426] , [ 1174622400000 , 0.41914838579865] , [ 1174881600000 , 0.42440655055001] , [ 1174968000000 , 0.43569046168251] , [ 1175054400000 , 0.4330238907678] , [ 1175140800000 , 0.45415135645919] , [ 1175227200000 , 0.59796556904616] , [ 1175486400000 , 0.45192845294115] , [ 1175572800000 , 0.42993112423138] , [ 1175659200000 , 0.44166803154689] , [ 1175745600000 , 0.42915671533333] , [ 1176091200000 , 0.33112012454111] , [ 1176177600000 , 0.45328129653457] , [ 1176264000000 , 0.44925474507227] , [ 1176350400000 , 0.44187452671787] , [ 1176436800000 , 0.47452041996444] , [ 1176696000000 , 0.4844987901415] , [ 1176782400000 , 0.34239500671849] , [ 1176868800000 , 0.3696048774802] , [ 1176955200000 , 0.45814063042943] , [ 1177041600000 , 0.37066630901813] , [ 1177300800000 , 0.39161491066633] , [ 1177387200000 , 0.34366812991218] , [ 1177473600000 , 0.34304929686105] , [ 1177560000000 , 0.35123762526151] , [ 1177646400000 , 0.38433077705585] , [ 1177905600000 , 0.36212330242843] , [ 1177992000000 , 0.35227440119665] , [ 1178078400000 , 0.33312827981479] , [ 1178164800000 , 0.3292686231049] , [ 1178251200000 , 0.3515948159995] , [ 1178510400000 , 0.36791431316468] , [ 1178596800000 , 0.37399378492007] , [ 1178683200000 , 0.38686176679898] , [ 1178769600000 , 0.34253071045616] , [ 1178856000000 , 0.33994900497176] , [ 1179115200000 , 0.34136261037104] , [ 1179201600000 , 0.32839795017151] , [ 1179288000000 , 0.32833865270696] , [ 1179374400000 , 0.34281049697099] , [ 1179460800000 , 0.33022523043443] , [ 1179720000000 , 0.33552807617414] , [ 1179806400000 , 0.30861439673485] , [ 1179892800000 , 0.35026918665455] , [ 1179979200000 , 0.36022828871516] , [ 1180065600000 , 0.31608415566601] , [ 1180411200000 , 0.33717769857896] , [ 1180497600000 , 0.32855205537625] , [ 1180584000000 , 0.33723673802866] , [ 1180670400000 , 0.36429829817467] , [ 1180929600000 , 0.34321562074903] , [ 1181016000000 , 0.35344641788559] , [ 1181102400000 , 0.34091712635513] , [ 1181188800000 , 0.37959716840531] , [ 1181275200000 , 0.34160191437995] , [ 1181534400000 , 0.34413519421482] , [ 1181620800000 , 0.34205570706973] , [ 1181707200000 , 0.37181620578684] , [ 1181793600000 , 0.35504424736893] , [ 1181880000000 , 0.34663801494764] , [ 1182139200000 , 0.3591705944613] , [ 1182225600000 , 0.36388788504953] , [ 1182312000000 , 0.3578945897143] , [ 1182398400000 , 0.35605078432052] , [ 1182484800000 , 0.40881990315009] , [ 1182744000000 , 0.3839507038504] , [ 1182830400000 , 0.36799165042463] , [ 1182916800000 , 0.36051111716486] , [ 1183003200000 , 0.35701679835689] , [ 1183089600000 , 0.35360843257564] , [ 1183348800000 , 0.38999403044285] , [ 1183435200000 , 0.35266034491331] , [ 1183608000000 , 0.37625534896865] , [ 1183694400000 , 0.35468844128475] , [ 1183953600000 , 0.35522533840884] , [ 1184040000000 , 0.34814896187095] , [ 1184126400000 , 0.38368959037691] , [ 1184212800000 , 0.34989984817338] , [ 1184299200000 , 0.34549990396978] , [ 1184558400000 , 0.35401219273819] , [ 1184644800000 , 0.35661977440322] , [ 1184731200000 , 0.33441778940366] , [ 1184817600000 , 0.35285368325153] , [ 1184904000000 , 0.35251182214195] , [ 1185163200000 , 0.36185231903605] , [ 1185249600000 , 0.3513384959364] , [ 1185336000000 , 0.34514255273762] , [ 1185422400000 , 0.32654950716599] , [ 1185508800000 , 0.35440284257421] , [ 1185768000000 , 0.31761658366267] , [ 1185854400000 , 0.35053234250323] , [ 1185940800000 , 0.32990248955656] , [ 1186027200000 , 0.34944474295037] , [ 1186113600000 , 0.35219361962543] , [ 1186372800000 , 0.33885123808326] , [ 1186459200000 , 0.33874184127437] , [ 1186545600000 , 0.3827000362796] , [ 1186632000000 , 0.3972977831726] , [ 1186718400000 , 0.38179263855366] , [ 1186977600000 , 0.40098071477787] , [ 1187064000000 , 0.3517564247507] , [ 1187150400000 , 0.37134614015731] , [ 1187236800000 , 0.37281646565152] , [ 1187323200000 , 0.36374067616171] , [ 1187582400000 , 0.36715817710172] , [ 1187668800000 , 0.33774938217278] , [ 1187755200000 , 0.3575023635914] , [ 1187841600000 , 0.35930492878238] , [ 1187928000000 , 0.37088218551724] , [ 1188187200000 , 0.349901562867] , [ 1188273600000 , 0.39164134731053] , [ 1188360000000 , 0.37220908723581] , [ 1188446400000 , 0.39503434085077] , [ 1188532800000 , 0.3874315205728] , [ 1188878400000 , 0.4053960227751] , [ 1188964800000 , 0.38715213648249] , [ 1189051200000 , 0.41451572337682] , [ 1189137600000 , 0.39751925642349] , [ 1189396800000 , 0.38704323105016] , [ 1189483200000 , 0.55730159784617] , [ 1189569600000 , 0.51700787367752] , [ 1189656000000 , 0.53180445343496] , [ 1189742400000 , 0.4780829790157] , [ 1190001600000 , 0.48801901762186] , [ 1190088000000 , 0.46532644449301] , [ 1190174400000 , 0.46309911871631] , [ 1190260800000 , 0.51279230165321] , [ 1190347200000 , 0.46255158883255] , [ 1190606400000 , 0.45767716125555] , [ 1190692800000 , 0.57907479297358] , [ 1190779200000 , 0.49267378930433] , [ 1190865600000 , 0.46648065987463] , [ 1190952000000 , 0.51398815092557] , [ 1191211200000 , 0.54608624816476] , [ 1191297600000 , 0.51014139003078] , [ 1191384000000 , 0.51294971785755] , [ 1191470400000 , 0.60288377917451] , [ 1191556800000 , 0.59341410351494] , [ 1191816000000 , 0.54768993725445] , [ 1191902400000 , 0.60186635000502] , [ 1191988800000 , 0.59444389496371] , [ 1192075200000 , 0.60827578052517] , [ 1192161600000 , 0.5923407911311] , [ 1192420800000 , 0.56567261352008] , [ 1192507200000 , 0.58312319852293] , [ 1192593600000 , 0.56835190866986] , [ 1192680000000 , 0.54273759692647] , [ 1192766400000 , 0.55290907413212] , [ 1193025600000 , 0.57342356654063] , [ 1193112000000 , 0.53989229709743] , [ 1193198400000 , 0.54796297370074] , [ 1193284800000 , 0.55828955698586] , [ 1193371200000 , 0.56530460892424] , [ 1193630400000 , 0.57049918248034] , [ 1193716800000 , 0.58411662549602] , [ 1193803200000 , 0.56635612421056] , [ 1193889600000 , 0.53239285331907] , [ 1193976000000 , 0.55799506646466] , [ 1194238800000 , 0.5638533423884] , [ 1194325200000 , 0.52398882568473] , [ 1194411600000 , 0.51125076497479] , [ 1194498000000 , 0.50036491232785] , [ 1194584400000 , 0.50473296198008] , [ 1194843600000 , 0.50751996213126] , [ 1194930000000 , 0.50631827082877] , [ 1195016400000 , 0.51962016312469] , [ 1195102800000 , 0.48530275751029] , [ 1195189200000 , 0.50566195644821] , [ 1195448400000 , 0.50312685796735] , [ 1195534800000 , 0.52511269580625] , [ 1195621200000 , 0.51020695995909] , [ 1195794000000 , 0.52020250555388] , [ 1196053200000 , 0.54016245667867] , [ 1196139600000 , 0.50233077589654] , [ 1196226000000 , 0.57540817076044] , [ 1196312400000 , 0.54122469660488] , [ 1196398800000 , 0.53255676099218] , [ 1196658000000 , 0.48987079043713] , [ 1196744400000 , 0.51099914354867] , [ 1196830800000 , 0.48220483136174] , [ 1196917200000 , 0.50071694285758] , [ 1197003600000 , 0.43774125830557] , [ 1197262800000 , 0.44706581264167] , [ 1197349200000 , 0.41905967062687] , [ 1197435600000 , 0.43535798100637] , [ 1197522000000 , 0.43384076902771] , [ 1197608400000 , 0.42799235129191] , [ 1197867600000 , 0.4160358173521] , [ 1197954000000 , 0.42001922130138] , [ 1198040400000 , 0.43195494789721] , [ 1198126800000 , 0.40631638637452] , [ 1198213200000 , 0.41972249653293] , [ 1198472400000 , 0.42463704903975] , [ 1198645200000 , 0.40013745529622] , [ 1198731600000 , 0.41837467920978] , [ 1198818000000 , 0.41271860020779] , [ 1199077200000 , 0.59438219971072] , [ 1199250000000 , 0.56663906060379] , [ 1199336400000 , 0.59526759475876] , [ 1199422800000 , 0.61100606531897] , [ 1199682000000 , 0.59983444531871] , [ 1199768400000 , 0.5772723810895] , [ 1199854800000 , 0.5883384206392] , [ 1199941200000 , 0.56861512866532] , [ 1200027600000 , 0.69750205422881] , [ 1200286800000 , 0.68711665402178] , [ 1200373200000 , 0.68221621286151] , [ 1200459600000 , 0.70312184433284] , [ 1200546000000 , 0.52426599794058] , [ 1200632400000 , 0.85343636191757] , [ 1200978000000 , 0.84790713039977] , [ 1201064400000 , 0.51330146872139] , [ 1201150800000 , 0.49404147411636] , [ 1201237200000 , 0.52666315074101] , [ 1201496400000 , 0.54303395376686] , [ 1201582800000 , 0.50820303088143] , [ 1201669200000 , 0.53297916958598] , [ 1201755600000 , 0.5147423355755] , [ 1201842000000 , 0.32088748006788] , [ 1202101200000 , 0.47122510068009] , [ 1202187600000 , 0.4601881597235] , [ 1202274000000 , 0.49098887103771] , [ 1202360400000 , 0.50072687031917] , [ 1202446800000 , 0.48163833030278] , [ 1202706000000 , 0.47308960010952] , [ 1202792400000 , 0.28957826766051] , [ 1202878800000 , 0.63131329374437] , [ 1202965200000 , 0.49824592238269] , [ 1203051600000 , 0.43994941396234] , [ 1203397200000 , 0.46514395736995] , [ 1203483600000 , 0.30738083288633] , [ 1203570000000 , 0.58825777235301] , [ 1203656400000 , 0.74137887163376] , [ 1203915600000 , 0.44065028861912] , [ 1204002000000 , 0.41996992252552] , [ 1204088400000 , 0.42754621820944] , [ 1204174800000 , 0.70697181063901] , [ 1204261200000 , 0.73193451043205] , [ 1204520400000 , 0.5906598071835] , [ 1204606800000 , 0.56928160224787] , [ 1204693200000 , 0.54182093171447] , [ 1204779600000 , 0.73063341297567] , [ 1204866000000 , 0.68371429610051] , [ 1205121600000 , 0.7625751244819] , [ 1205208000000 , 0.68055600216233] , [ 1205294400000 , 0.72473204995729] , [ 1205380800000 , 0.61218401083118] , [ 1205467200000 , 0.63617053799207] , [ 1205726400000 , 0.65166322269631] , [ 1205812800000 , 0.47611150252336] , [ 1205899200000 , 0.48277505401083] , [ 1205985600000 , 0.4846160317978] , [ 1206331200000 , 0.48556883069728] , [ 1206417600000 , 0.60726222412037] , [ 1206504000000 , 0.52383185754016] , [ 1206590400000 , 0.52365946774961] , [ 1206676800000 , 0.46417144966408] , [ 1206936000000 , 0.46527375852488] , [ 1207022400000 , 0.31585234391762] , [ 1207108800000 , 0.30916994796591] , [ 1207195200000 , 0.29811157436356] , [ 1207281600000 , 0.3092650937521] , [ 1207540800000 , 0.28075979729864] , [ 1207627200000 , 0.28859701542657] , [ 1207713600000 , 0.39689109181309] , [ 1207800000000 , 0.37749328174235] , [ 1207886400000 , 0.47622742545283] , [ 1208145600000 , 0.48720217118092] , [ 1208232000000 , 0.48244781192799] , [ 1208318400000 , 0.38980360034172] , [ 1208404800000 , 0.46578673955616] , [ 1208491200000 , 0.28086773059726] , [ 1208750400000 , 0.29236080787843] , [ 1208836800000 , 0.37331729326201] , [ 1208923200000 , 0.24953690256591] , [ 1209009600000 , 0.23022602856364] , [ 1209096000000 , 0.39633403248474] , [ 1209355200000 , 0.2380498772201] , [ 1209441600000 , 0.24280444478866] , [ 1209528000000 , 0.4020588351358] , [ 1209614400000 , 0.2452576454461] , [ 1209700800000 , 0.2432963797158] , [ 1209960000000 , 0.34089055038622] , [ 1210046400000 , 0.48814119108104] , [ 1210132800000 , 0.47004768691489] , [ 1210219200000 , 0.48022168675292] , [ 1210305600000 , 0.3650270719607] , [ 1210564800000 , 0.43960211465952] , [ 1210651200000 , 0.4551940569925] , [ 1210737600000 , 0.29118997916081] , [ 1210824000000 , 0.29321541292478] , [ 1210910400000 , 0.29807045827194] , [ 1211169600000 , 0.30021381179841] , [ 1211256000000 , 0.29871829156008] , [ 1211342400000 , 0.30043632935097] , [ 1211428800000 , 0.31338776196321] , [ 1211515200000 , 0.30323078836955] , [ 1211860800000 , 0.3045491446009] , [ 1211947200000 , 0.290242502233] , [ 1212033600000 , 0.29815942519378] , [ 1212120000000 , 0.30460432747926] , [ 1212379200000 , 0.26519350005928] , [ 1212465600000 , 0.26679139461481] , [ 1212552000000 , 0.26782545006753] , [ 1212638400000 , 0.27707376672124] , [ 1212724800000 , 0.38177367859955] , [ 1212984000000 , 0.37853767585651] , [ 1213070400000 , 0.3776399677321] , [ 1213156800000 , 0.37494369153164] , [ 1213243200000 , 0.37513032442289] , [ 1213329600000 , 0.37978491627173] , [ 1213588800000 , 0.37466366072811] , [ 1213675200000 , 0.36411230431799] , [ 1213761600000 , 0.36571677111738] , [ 1213848000000 , 0.36863375073017] , [ 1213934400000 , 0.37016327177331] , [ 1214193600000 , 0.35735480164753] , [ 1214280000000 , 0.35612152163447] , [ 1214366400000 , 0.35681657686682] , [ 1214452800000 , 0.37669445472584] , [ 1214539200000 , 0.35526667692706] , [ 1214798400000 , 0.3334171863603] , [ 1214884800000 , 0.32127794433588] , [ 1214971200000 , 0.3174169226431] , [ 1215057600000 , 0.3147256845205] , [ 1215403200000 , 0.31559725779491] , [ 1215489600000 , 0.31727905149011] , [ 1215576000000 , 0.30029706852334] , [ 1215662400000 , 0.30119949008169] , [ 1215748800000 , 0.27744941323013] , [ 1216008000000 , 0.26443664201933] , [ 1216094400000 , 0.25203546214315] , [ 1216180800000 , 0.26469570348968] , [ 1216267200000 , 0.27582094633375] , [ 1216353600000 , 0.25051203314215] , [ 1216612800000 , 0.21487661255261] , [ 1216699200000 , 0.2115682876953] , [ 1216785600000 , 0.21405133657672] , [ 1216872000000 , 0.21734683331501] , [ 1216958400000 , 0.21805949749064] , [ 1217217600000 , 0.24216664905691] , [ 1217304000000 , 0.21347237195378] , [ 1217390400000 , 0.21052618229433] , [ 1217476800000 , 0.20059773204849] , [ 1217563200000 , 0.18431878929575] , [ 1217822400000 , 0.17457179609389] , [ 1217908800000 , 0.16046211075731] , [ 1217995200000 , 0.16278321880382] , [ 1218081600000 , 0.12222384064905] , [ 1218168000000 , 0.11017965804903] , [ 1218427200000 , 0.10366785996478] , [ 1218513600000 , 0.1050097612081] , [ 1218600000000 , 0.15083749031544] , [ 1218686400000 , 0.10836717227927] , [ 1218772800000 , 0.108304102963] , [ 1219032000000 , 0.10667186849872] , [ 1219118400000 , 0.10865629424988] , [ 1219204800000 , 0.27127940139193] , [ 1219291200000 , 0.11173129227623] , [ 1219377600000 , 0.1046282127183] , [ 1219636800000 , 0.10391925096026] , [ 1219723200000 , 0.10177457137334] , [ 1219809600000 , 0.11329005002127] , [ 1219896000000 , 0.10527229287128] , [ 1219982400000 , 0.10758987874272] , [ 1220328000000 , 0.12480149431746] , [ 1220414400000 , 0.12420749383721] , [ 1220500800000 , 0.32457721551735] , [ 1220587200000 , 0.31259829180426] , [ 1220846400000 , 0.3069937006216] , [ 1220932800000 , 0.32317321559431] , [ 1221019200000 , 0.32660259527589] , [ 1221105600000 , 0.32075271782241] , [ 1221192000000 , 0.31305817834662] , [ 1221451200000 , 0.30623195711465] , [ 1221537600000 , 0.29611642841759] , [ 1221624000000 , 0.34495164607981] , [ 1221710400000 , 0.30357639845052] , [ 1221796800000 , 0.31481625284856] , [ 1222056000000 , 0.29472551605557] , [ 1222142400000 , 0.30865296764001] , [ 1222228800000 , 0.31173679899285] , [ 1222315200000 , 0.12648206101732] , [ 1222401600000 , 0.1296858319747] , [ 1222660800000 , 0.22153255385947] , [ 1222747200000 , 0.17772961427872] , [ 1222833600000 , 0.11902389673784] , [ 1222920000000 , 0.15741775119452] , [ 1223006400000 , 0.36578848607961] , [ 1223265600000 , 0.34469047998149] , [ 1223352000000 , 0.32989529511665] , [ 1223438400000 , 0.32144894066685] , [ 1223524800000 , 0.51430740780089] , [ 1223611200000 , 0.31200610521655] , [ 1223870400000 , 0.34930648168189] , [ 1223956800000 , 0.348049261098] , [ 1224043200000 , 0.47752533615353] , [ 1224129600000 , 0.34036307923862] , [ 1224216000000 , 0.34777965260155] , [ 1224475200000 , 0.30346610565607] , [ 1224561600000 , 0.29762149487832] , [ 1224648000000 , 0.30294066113067] , [ 1224734400000 , 0.3966885732434] , [ 1224820800000 , 0.36495351678967] , [ 1225080000000 , 0.39772408712588] , [ 1225166400000 , 0.28230635353554] , [ 1225252800000 , 0.3713217379313] , [ 1225339200000 , 0.49514710353798] , [ 1225425600000 , 0.29878195834702] , [ 1225688400000 , 0.48572850545185] , [ 1225774800000 , 0.47588879164015] , [ 1225861200000 , 0.57016264728502] , [ 1225947600000 , 0.55261804041056] , [ 1226034000000 , 0.55630372382609] , [ 1226293200000 , 0.56222142171884] , [ 1226379600000 , 0.57467770664666] , [ 1226466000000 , 0.56005559773731] , [ 1226552400000 , 0.59216964824764] , [ 1226638800000 , 0.57198130596015] , [ 1226898000000 , 0.53925607658231] , [ 1226984400000 , 0.76150001336095] , [ 1227070800000 , 0.71687298964713] , [ 1227157200000 , 0.74180135105241] , [ 1227243600000 , 0.78157325845356] , [ 1227502800000 , 0.78575524690454] , [ 1227589200000 , 0.82628988537806] , [ 1227675600000 , 0.53102148702081] , [ 1227848400000 , 0.53597499365299] , [ 1228107600000 , 0.84070854625485] , [ 1228194000000 , 0.92197329151934] , [ 1228280400000 , 0.82392245184232] , [ 1228366800000 , 0.85902316367763] , [ 1228453200000 , 0.82092938903034] , [ 1228712400000 , 0.85877211515616] , [ 1228798800000 , 0.82205510131298] , [ 1228885200000 , 0.81832907789421] , [ 1228971600000 , 0.84265695092228] , [ 1229058000000 , 0.58930442947479] , [ 1229317200000 , 0.85855285160156] , [ 1229403600000 , 0.81389563175646] , [ 1229490000000 , 0.85715079094207] , [ 1229576400000 , 0.86868357909078] , [ 1229662800000 , 0.61479048052935] , [ 1229922000000 , 0.64592182573864] , [ 1230008400000 , 0.64563822868834] , [ 1230094800000 , 0.36313942942696] , [ 1230267600000 , 0.38790947116659] , [ 1230526800000 , 0.35064085791612] , [ 1230613200000 , 0.38911108106029] , [ 1230699600000 , 0.18940004334571] , [ 1230872400000 , 0.1704784207332] , [ 1231131600000 , 0.18373706624239] , [ 1231218000000 , 0.1761245524483] , [ 1231304400000 , 0.17181723784677] , [ 1231390800000 , 0.17828072113707] , [ 1231477200000 , 0.16439458069931] , [ 1231736400000 , 0.35398878522463] , [ 1231822800000 , 0.15399052224597] , [ 1231909200000 , 0.27547708693355] , [ 1231995600000 , 0.35114247847651] , [ 1232082000000 , 0.34632910547372] , [ 1232427600000 , 0.30573353519992] , [ 1232514000000 , 0.3311135533928] , [ 1232600400000 , 0.29577210789856] , [ 1232686800000 , 0.27373981494358] , [ 1232946000000 , 0.28402867506106] , [ 1233032400000 , 0.27315559672525] , [ 1233118800000 , 0.26118724292253] , [ 1233205200000 , 0.24792999422078] , [ 1233291600000 , 0.23791380300149] , [ 1233550800000 , 0.45923597670993] , [ 1233637200000 , 0.44905625712369] , [ 1233723600000 , 0.44432726957627] , [ 1233810000000 , 0.22114315919681] , [ 1233896400000 , 0.2330948601108] , [ 1234155600000 , 0.22442050519721] , [ 1234242000000 , 0.43558487901564] , [ 1234328400000 , 0.41441049299744] , [ 1234414800000 , 0.40388097337704] , [ 1234501200000 , 0.40551726758713] , [ 1234846800000 , 0.36681354313206] , [ 1234933200000 , 0.37259737223335] , [ 1235019600000 , 0.54728589471741] , [ 1235106000000 , 0.57941599436443] , [ 1235365200000 , 0.49886848882963] , [ 1235451600000 , 0.50484880776678] , [ 1235538000000 , 0.51298567500563] , [ 1235624400000 , 0.51951620083703] , [ 1235710800000 , 0.50562680761225] , [ 1235970000000 , 0.43111919837371] , [ 1236056400000 , 0.22269692879935] , [ 1236142800000 , 0.22185137086912] , [ 1236229200000 , 0.3853600314828] , [ 1236315600000 , 0.40786667470187] , [ 1236571200000 , 0.36117947910811] , [ 1236657600000 , 0.18118578034245] , [ 1236744000000 , 0.20744102884774] , [ 1236830400000 , 0.21924063705196] , [ 1236916800000 , 0.26518381872913] , [ 1237176000000 , 0.25693149376704] , [ 1237262400000 , 0.2601997137348] , [ 1237348800000 , 0.30591907384986] , [ 1237435200000 , 0.30980521532039] , [ 1237521600000 , 0.28531010556109] , [ 1237780800000 , 0.32997212544042] , [ 1237867200000 , 0.30180263306483] , [ 1237953600000 , 0.30557198415586] , [ 1238040000000 , 0.35574073219029] , [ 1238126400000 , 0.32144121083197] , [ 1238385600000 , 0.27642669365771] , [ 1238472000000 , 0.38988059521306] , [ 1238558400000 , 0.3891957245978] , [ 1238644800000 , 0.41156214438479] , [ 1238731200000 , 0.4063019560013] , [ 1238990400000 , 0.39814789095604] , [ 1239076800000 , 0.37835830452098] , [ 1239163200000 , 0.37464325706583] , [ 1239249600000 , 0.40691809369142] , [ 1239595200000 , 0.41690557781091] , [ 1239681600000 , 0.38124585608813] , [ 1239768000000 , 0.41927036668188] , [ 1239854400000 , 0.41331203405089] , [ 1239940800000 , 0.3357905317095] , [ 1240200000000 , 0.41403714383105] , [ 1240286400000 , 0.42938568785804] , [ 1240372800000 , 0.3998056312926] , [ 1240459200000 , 0.30525401131279] , [ 1240545600000 , 0.30803908383263] , [ 1240804800000 , 0.30946646403815] , [ 1240891200000 , 0.30539809017731] , [ 1240977600000 , 0.32402483601616] , [ 1241064000000 , 0.3352333777588] , [ 1241150400000 , 0.3231292194158] , [ 1241409600000 , 0.36391852351921] , [ 1241496000000 , 0.34906714963989] , [ 1241582400000 , 0.34554192955696] , [ 1241668800000 , 0.3363823613639] , [ 1241755200000 , 0.38176012454461] , [ 1242014400000 , 0.4155050120935] , [ 1242100800000 , 0.385050768114] , [ 1242187200000 , 0.35101490295465] , [ 1242273600000 , 0.35887369973598] , [ 1242360000000 , 0.34653549546251] , [ 1242619200000 , 0.38060015172214] , [ 1242705600000 , 0.36945975492405] , [ 1242792000000 , 0.38935380107142] , [ 1242878400000 , 0.35950644076065] , [ 1242964800000 , 0.35198173104045] , [ 1243310400000 , 0.36243672592418] , [ 1243396800000 , 0.36571346535268] , [ 1243483200000 , 0.22906947139021] , [ 1243569600000 , 0.22215358473121] , [ 1243828800000 , 0.21184635282126] , [ 1243915200000 , 0.20557954580039] , [ 1244001600000 , 0.19464008066655] , [ 1244088000000 , 0.21051287267926] , [ 1244174400000 , 0.20960156265391] , [ 1244433600000 , 0.19895851833365] , [ 1244520000000 , 0.19105463895038] , [ 1244606400000 , 0.19020544907649] , [ 1244692800000 , 0.20467634381558] , [ 1244779200000 , 0.20633782755332] , [ 1245038400000 , 0.20256864984063] , [ 1245124800000 , 0.35231942170134] , [ 1245211200000 , 0.31102027443779] , [ 1245297600000 , 0.30008552208958] , [ 1245384000000 , 0.29954475552943] , [ 1245643200000 , 0.28945291747839] , [ 1245729600000 , 0.2871211618924] , [ 1245816000000 , 0.28309779963668] , [ 1245902400000 , 0.30134156157185] , [ 1245988800000 , 0.27166160658573] , [ 1246248000000 , 0.27934762558543] , [ 1246334400000 , 0.14770869804104] , [ 1246420800000 , 0.14979476896266] , [ 1246507200000 , 0.14216949018174] , [ 1246852800000 , 0.13739961409394] , [ 1246939200000 , 0.13641087294924] , [ 1247025600000 , 0.13737164160635] , [ 1247112000000 , 0.13382902031685] , [ 1247198400000 , 0.13770655564258] , [ 1247457600000 , 0.14356559248214] , [ 1247544000000 , 0.14166283205255] , [ 1247630400000 , 0.1531671099261] , [ 1247716800000 , 0.15782742307609] , [ 1247803200000 , 0.15383929619665] , [ 1248062400000 , 0.15852002056909] , [ 1248148800000 , 0.16059524423929] , [ 1248235200000 , 0.1590144089316] , [ 1248321600000 , 0.16624647762889] , [ 1248408000000 , 0.16054117548756] , [ 1248667200000 , 0.15913207686089] , [ 1248753600000 , 0.1672455589495] , [ 1248840000000 , 0.16794697386573] , [ 1248926400000 , 0.18474207035615] , [ 1249012800000 , 0.18438010735533] , [ 1249272000000 , 0.19072223849322] , [ 1249358400000 , 0.18134005712753] , [ 1249444800000 , 0.19043247185569] , [ 1249531200000 , 0.20066491344588] , [ 1249617600000 , 0.19955573612602] , [ 1249876800000 , 0.19939565572904] , [ 1249963200000 , 0.19067278308172] , [ 1250049600000 , 0.19509349391207] , [ 1250136000000 , 0.18994509337313] , [ 1250222400000 , 0.1860099818871] , [ 1250481600000 , 0.18628513256275] , [ 1250568000000 , 0.17645189245217] , [ 1250654400000 , 0.19281227318698] , [ 1250740800000 , 0.19378724445722] , [ 1250827200000 , 0.19628627239007] , [ 1251086400000 , 0.19793806848804] , [ 1251172800000 , 0.19298338258851] , [ 1251259200000 , 0.18656361482999] , [ 1251345600000 , 0.19496898208799] , [ 1251432000000 , 0.19933498732004] , [ 1251691200000 , 0.20235729217823] , [ 1251777600000 , 0.18946434807889] , [ 1251864000000 , 0.18618620809442] , [ 1251950400000 , 0.20522471015788] , [ 1252036800000 , 0.19897677649474] , [ 1252382400000 , 0.19160557658922] , [ 1252468800000 , 0.18976793778464] , [ 1252555200000 , 0.20329707522992] , [ 1252641600000 , 0.20213781992052] , [ 1252900800000 , 0.19832859780247] , [ 1252987200000 , 0.19596719262808] , [ 1253073600000 , 0.20654239160765] , [ 1253160000000 , 0.21111449355996] , [ 1253246400000 , 0.2112621121669] , [ 1253505600000 , 0.2006248914408] , [ 1253592000000 , 0.21007348609349] , [ 1253678400000 , 0.20183300437001] , [ 1253764800000 , 0.21144895936042] , [ 1253851200000 , 0.19533230458009] , [ 1254110400000 , 0.21108049214011] , [ 1254196800000 , 0.20224255046872] , [ 1254283200000 , 0.24333266083011] , [ 1254369600000 , 0.42562690254191] , [ 1254456000000 , 0.39882736793197] , [ 1254715200000 , 0.4109230651045] , [ 1254801600000 , 0.42720488861224] , [ 1254888000000 , 0.42402822327118] , [ 1254974400000 , 0.42784602685915] , [ 1255060800000 , 0.41387273603466] , [ 1255320000000 , 0.40715065425328] , [ 1255406400000 , 0.21490592196149] , [ 1255492800000 , 0.21711692256087] , [ 1255579200000 , 0.21263539351174] , [ 1255665600000 , 0.21054139546477] , [ 1255924800000 , 0.20703955749278] , [ 1256011200000 , 0.41615749625588] , [ 1256097600000 , 0.33782450127133] , [ 1256184000000 , 0.34222120473237] , [ 1256270400000 , 0.33861624714964] , [ 1256529600000 , 0.32354691717303] , [ 1256616000000 , 0.31260839592502] , [ 1256702400000 , 0.42728613748791] , [ 1256788800000 , 0.44981792808378] , [ 1256875200000 , 0.44609486736015] , [ 1257138000000 , 0.45857277772924] , [ 1257224400000 , 0.45429068995591] , [ 1257310800000 , 0.46300687817086] , [ 1257397200000 , 0.31181852434093] , [ 1257483600000 , 0.33521146961855] , [ 1257742800000 , 0.43998094093324] , [ 1257829200000 , 0.46850069852399] , [ 1257915600000 , 0.45998079505404] , [ 1258002000000 , 0.43990033390761] , [ 1258088400000 , 0.43192186956486] , [ 1258347600000 , 0.44193287636744] , [ 1258434000000 , 0.45174825719336] , [ 1258520400000 , 0.44388612458012] , [ 1258606800000 , 0.42624049682942] , [ 1258693200000 , 0.44790772605219] , [ 1258952400000 , 0.43692733373588] , [ 1259038800000 , 0.43377185720698] , [ 1259125200000 , 0.43219678597263] , [ 1259298000000 , 0.44386940623456] , [ 1259557200000 , 0.44643148173272] , [ 1259643600000 , 0.44707155240847] , [ 1259730000000 , 0.45840697320228] , [ 1259816400000 , 0.43747426694764] , [ 1259902800000 , 0.44835061679619] , [ 1260162000000 , 0.46587086852614] , [ 1260248400000 , 0.4545384119711] , [ 1260334800000 , 0.45310260633137] , [ 1260421200000 , 0.42887008081309] , [ 1260507600000 , 0.42882506235264] , [ 1260766800000 , 0.438052456726] , [ 1260853200000 , 0.44441837294803] , [ 1260939600000 , 0.45017843603725] , [ 1261026000000 , 0.45311273305076] , [ 1261112400000 , 0.46276884135044] , [ 1261371600000 , 0.47307044402006] , [ 1261458000000 , 0.46640525682956] , [ 1261544400000 , 0.49512113112803] , [ 1261630800000 , 0.48033942034566] , [ 1261976400000 , 0.48202674710044] , [ 1262062800000 , 0.48053769603864] , [ 1262149200000 , 0.48080452237603] , [ 1262235600000 , 0.61097799203784] , [ 1262581200000 , 0.64378035925207] , [ 1262667600000 , 0.61876210035266] , [ 1262754000000 , 0.62916872436038] , [ 1262840400000 , 0.62747304374993] , [ 1262926800000 , 0.66125721673519] , [ 1263186000000 , 0.64788192731418] , [ 1263272400000 , 0.6574728179579] , [ 1263358800000 , 0.66001660549178] , [ 1263445200000 , 0.63845436553734] , [ 1263531600000 , 0.63961853945271] , [ 1263877200000 , 0.63128386370442] , [ 1263963600000 , 0.61820998254633] , [ 1264050000000 , 0.63085915492893] , [ 1264136400000 , 0.64265006714393] , [ 1264395600000 , 0.62614908189366] , [ 1264482000000 , 0.63903015606303] , [ 1264568400000 , 0.56145074782027] , [ 1264654800000 , 0.56843246761258] , [ 1264741200000 , 0.57880931158468] , [ 1265000400000 , 0.60990225784836] , [ 1265086800000 , 0.59450744881925] , [ 1265173200000 , 0.58785188512433] , [ 1265259600000 , 0.56254894390866] , [ 1265346000000 , 0.58449293662275] , [ 1265605200000 , 0.61074241826766] , [ 1265691600000 , 0.60490333237216] , [ 1265778000000 , 0.60703541036865] , [ 1265864400000 , 0.61395184516402] , [ 1265950800000 , 0.63181191078349] , [ 1266296400000 , 0.64807806494211] , [ 1266382800000 , 0.49216531615509] , [ 1266469200000 , 0.6242889357856] , [ 1266555600000 , 0.66785287786833] , [ 1266814800000 , 0.51302421343276] , [ 1266901200000 , 0.67529040393239] , [ 1266987600000 , 0.6601486785607] , [ 1267074000000 , 0.6670237791658] , [ 1267160400000 , 0.66746410076052] , [ 1267419600000 , 0.6691531995939] , [ 1267506000000 , 0.68912054031019] , [ 1267592400000 , 0.66956844660652] , [ 1267678800000 , 0.66808795275024] , [ 1267765200000 , 0.64875109352574] , [ 1268024400000 , 0.68913399645021] , [ 1268110800000 , 0.71960642629017] , [ 1268197200000 , 0.55110831283044] , [ 1268283600000 , 0.73044501913051] , [ 1268370000000 , 0.7225295997643] , [ 1268625600000 , 0.57165420411245] , [ 1268712000000 , 0.57185003104024] , [ 1268798400000 , 0.56387435159483] , [ 1268884800000 , 0.55258238352661] , [ 1268971200000 , 0.53837596700184] , [ 1269230400000 , 0.51781133278325] , [ 1269316800000 , 0.54614405247613] , [ 1269403200000 , 0.55181521678811] , [ 1269489600000 , 0.55896776189928] , [ 1269576000000 , 0.53526775536805] , [ 1269835200000 , 0.56001758871283] , [ 1269921600000 , 0.52697856042663] , [ 1270008000000 , 0.36950151316072] , [ 1270094400000 , 0.33416858149241] , [ 1270440000000 , 0.3297788254062] , [ 1270526400000 , 0.32878696628243] , [ 1270612800000 , 0.34250261596671] , [ 1270699200000 , 0.34062951626868] , [ 1270785600000 , 0.33650331505564] , [ 1271044800000 , 0.33754198492504] , [ 1271131200000 , 0.34479752104981] , [ 1271217600000 , 0.34422271322913] , [ 1271304000000 , 0.33957637717345] , [ 1271390400000 , 0.33309869052085] , [ 1271649600000 , 0.33549309259309] , [ 1271736000000 , 0.33851249428105] , [ 1271822400000 , 0.33274334538472] , [ 1271908800000 , 0.32819970206884] , [ 1271995200000 , 0.32740446326317] , [ 1272254400000 , 0.32320098527039] , [ 1272340800000 , 0.31592945714482] , [ 1272427200000 , 0.3330398140655] , [ 1272513600000 , 0.33826576183311] , [ 1272600000000 , 0.34573095232512] , [ 1272859200000 , 0.31885048098859] , [ 1272945600000 , 0.31892932498196] , [ 1273032000000 , 0.29273258897174] , [ 1273118400000 , 0.2908332072101] , [ 1273204800000 , 0.27922156662223] , [ 1273464000000 , 0.28536042625666] , [ 1273550400000 , 0.28897531861523] , [ 1273636800000 , 0.28473853729527] , [ 1273723200000 , 0.28284683737932] , [ 1273809600000 , 0.29303926663331] , [ 1274068800000 , 0.2804810108508] , [ 1274155200000 , 0.29353651777215] , [ 1274241600000 , 0.28895692466737] , [ 1274328000000 , 0.28619995925483] , [ 1274414400000 , 0.29158719317017] , [ 1274673600000 , 0.26516835216154] , [ 1274760000000 , 0.27746697022302] , [ 1274846400000 , 0.26632815838707] , [ 1274932800000 , 0.27772552257406] , [ 1275019200000 , 0.28339177307644] , [ 1275364800000 , 0.29531042307446] , [ 1275451200000 , 0.28830732812001] , [ 1275537600000 , 0.29494618289139] , [ 1275624000000 , 0.30311337866766] , [ 1275883200000 , 0.27490760240321] , [ 1275969600000 , 0.29065076400389] , [ 1276056000000 , 0.30317072981863] , [ 1276142400000 , 0.28551909392755] , [ 1276228800000 , 0.28867145842253] , [ 1276488000000 , 0.27659931493374] , [ 1276574400000 , 0.27726503361383] , [ 1276660800000 , 0.28643321316432] , [ 1276747200000 , 0.28848300181782] , [ 1276833600000 , 0.29314584285469] , [ 1277092800000 , 0.24556636294746] , [ 1277179200000 , 0.2427074138927] , [ 1277265600000 , 0.25532966055562] , [ 1277352000000 , 0.23860075049878] , [ 1277438400000 , 0.23339021823389] , [ 1277697600000 , 0.23704584176672] , [ 1277784000000 , 0.23476476819275] , [ 1277870400000 , 0.16508919994271] , [ 1277956800000 , 0.17502444005293] , [ 1278043200000 , 0.17481292303424] , [ 1278388800000 , 0.18794801739403] , [ 1278475200000 , 0.17078173539657] , [ 1278561600000 , 0.17626404510513] , [ 1278648000000 , 0.16916163621476] , [ 1278907200000 , 0.17054338991592] , [ 1278993600000 , 0.16880969565363] , [ 1279080000000 , 0.17410406995965] , [ 1279166400000 , 0.20194482873069] , [ 1279252800000 , 0.20347614461013] , [ 1279512000000 , 0.18829636908558] , [ 1279598400000 , 0.18366670685077] , [ 1279684800000 , 0.19319801934126] , [ 1279771200000 , 0.18785794223705] , [ 1279857600000 , 0.18599264862031] , [ 1280116800000 , 0.18296675184693] , [ 1280203200000 , 0.19350047225925] , [ 1280289600000 , 0.18668219094806] , [ 1280376000000 , 0.1892807330999] , [ 1280462400000 , 0.19882884890915] , [ 1280721600000 , 0.18905704272443] , [ 1280808000000 , 0.18352588525038] , [ 1280894400000 , 0.19131509438879] , [ 1280980800000 , 0.20267037571723] , [ 1281067200000 , 0.19033851437607] , [ 1281326400000 , 0.19532463004946] , [ 1281412800000 , 0.19527461919403] , [ 1281499200000 , 0.20077631127424] , [ 1281585600000 , 0.18129726012172] , [ 1281672000000 , 0.18079921813357] , [ 1281931200000 , 0.18942494962896] , [ 1282017600000 , 0.17868912657409] , [ 1282104000000 , 0.19248572775925] , [ 1282190400000 , 0.17612437454354] , [ 1282276800000 , 0.17662688906437] , [ 1282536000000 , 0.33111821682727] , [ 1282622400000 , 0.32351989726607] , [ 1282708800000 , 0.18442539571243] , [ 1282795200000 , 0.1654652941385] , [ 1282881600000 , 0.1681728432886] , [ 1283140800000 , 0.31791153613136] , [ 1283227200000 , 0.3098939886997] , [ 1283313600000 , 0.17026280355377] , [ 1283400000000 , 0.18116819943409] , [ 1283486400000 , 0.17940269239226] , [ 1283832000000 , 0.17509967864537] , [ 1283918400000 , 0.16854635373821] , [ 1284004800000 , 0.16279792019164] , [ 1284091200000 , 0.16430316982373] , [ 1284350400000 , 0.19716094011807] , [ 1284436800000 , 0.18180670180063] , [ 1284523200000 , 0.18050178810035] , [ 1284609600000 , 0.17654839774218] , [ 1284696000000 , 0.16753561446267] , [ 1284955200000 , 0.16435387082839] , [ 1285041600000 , 0.17014990034734] , [ 1285128000000 , 0.17507611457088] , [ 1285214400000 , 0.16806252749183] , [ 1285300800000 , 0.1747219277635] , [ 1285560000000 , 0.16933773981221] , [ 1285646400000 , 0.18297726330587] , [ 1285732800000 , 0.18455334449287] , [ 1285819200000 , 0.18770061100303] , [ 1285905600000 , 0.18762165755291] , [ 1286164800000 , 0.18724338180533] , [ 1286251200000 , 0.18382080795075] , [ 1286337600000 , 0.19011659228435] , [ 1286424000000 , 0.18701256414053] , [ 1286510400000 , 0.18537821442863] , [ 1286769600000 , 0.18693615500435] , [ 1286856000000 , 0.18555741600949] , [ 1286942400000 , 0.18397802878517] , [ 1287028800000 , 0.17900769900171] , [ 1287115200000 , 0.17512388360084] , [ 1287374400000 , 0.18627045459584] , [ 1287460800000 , 0.19137715720593] , [ 1287547200000 , 0.18692890592892] , [ 1287633600000 , 0.1901580677592] , [ 1287720000000 , 0.18244979002935] , [ 1287979200000 , 0.18070840073234] , [ 1288065600000 , 0.18888329598481] , [ 1288152000000 , 0.18534803597295] , [ 1288238400000 , 0.19164954605317] , [ 1288324800000 , 0.20708593047813] , [ 1288584000000 , 0.19112691734383] , [ 1288670400000 , 0.18836312531428] , [ 1288756800000 , 0.18475885094717] , [ 1288843200000 , 0.19017636992619] , [ 1288929600000 , 0.19542526307197] , [ 1289192400000 , 0.21201362592083] , [ 1289278800000 , 0.21870028579263] , [ 1289365200000 , 0.22421012994555] , [ 1289451600000 , 0.22987658768953] , [ 1289538000000 , 0.22528136350708] , [ 1289797200000 , 0.23286775948671] , [ 1289883600000 , 0.22389907327602] , [ 1289970000000 , 0.23358652500105] , [ 1290056400000 , 0.22453055198657] , [ 1290142800000 , 0.34221219449159] , [ 1290402000000 , 0.35226708267062] , [ 1290488400000 , 0.34366842396858] , [ 1290574800000 , 0.3699996743666] , [ 1290747600000 , 0.35393486503202] , [ 1291006800000 , 0.34677588597119] , [ 1291093200000 , 0.35459649060421] , [ 1291179600000 , 0.35064035375263] , [ 1291266000000 , 0.34850709272937] , [ 1291352400000 , 0.22397734859949] , [ 1291611600000 , 0.23290983214529] , [ 1291698000000 , 0.22752114094581] , [ 1291784400000 , 0.23694767255638] , [ 1291870800000 , 0.22934081012106] , [ 1291957200000 , 0.24685987150064] , [ 1292216400000 , 0.24129716696248] , [ 1292302800000 , 0.25182638430604] , [ 1292389200000 , 0.24322906384063] , [ 1292475600000 , 0.26805271844179] , [ 1292562000000 , 0.25575992465227] , [ 1292821200000 , 0.26502032474023] , [ 1292907600000 , 0.26934813838219] , [ 1292994000000 , 0.24053503997947] , [ 1293080400000 , 0.23763374245069] , [ 1293426000000 , 0.24582642175695] , [ 1293512400000 , 0.24987261417793] , [ 1293598800000 , 0.26673213313336] , [ 1293685200000 , 0.2687007361462] , [ 1293771600000 , 0.25552652117054] , [ 1294030800000 , 0.26827987887395] , [ 1294117200000 , 0.26663246323876] , [ 1294203600000 , 0.26317913917355] , [ 1294290000000 , 0.27589895562782] , [ 1294376400000 , 0.26794686617534] , [ 1294635600000 , 0.27184949902838] , [ 1294722000000 , 0.28886420182237] , [ 1294808400000 , 0.27312762073371] , [ 1294894800000 , 0.29829834340765] , [ 1294981200000 , 0.29746470358189] , [ 1295326800000 , 0.26811224941731] , [ 1295413200000 , 0.25730395478701] , [ 1295499600000 , 0.27028006032097] , [ 1295586000000 , 0.26732332434809] , [ 1295845200000 , 0.24975166598529] , [ 1295931600000 , 0.26039833911019] , [ 1296018000000 , 0.27548723334852] , [ 1296104400000 , 0.26302429845163] , [ 1296190800000 , 0.28235671751223] , [ 1296450000000 , 0.26506842109964] , [ 1296536400000 , 0.26043133472349] , [ 1296622800000 , 0.26266192152819] , [ 1296709200000 , 0.24931199536089] , [ 1296795600000 , 0.25228864916944] , [ 1297054800000 , 0.27151065254782] , [ 1297141200000 , 0.25681971281519] , [ 1297227600000 , 0.24749992740566] , [ 1297314000000 , 0.25712189938008] , [ 1297400400000 , 0.25414818219996] , [ 1297659600000 , 0.250265177673] , [ 1297746000000 , 0.2478279507433] , [ 1297832400000 , 0.24577387623471] , [ 1297918800000 , 0.24844657124067] , [ 1298005200000 , 0.23606311569833] , [ 1298350800000 , 0.23670066287544] , [ 1298437200000 , 0.2438674692208] , [ 1298523600000 , 0.22061163897703] , [ 1298610000000 , 0.23782501493395] , [ 1298869200000 , 0.23094592795639] , [ 1298955600000 , 0.23953042589336] , [ 1299042000000 , 0.22602331754754] , [ 1299128400000 , 0.24458889665809] , [ 1299214800000 , 0.23490291127417] , [ 1299474000000 , 0.22975741638188] , [ 1299560400000 , 0.23865297262551] , [ 1299646800000 , 0.23869891729815] , [ 1299733200000 , 0.24112176499763] , [ 1299819600000 , 0.25067393470202] , [ 1300075200000 , 0.24876855304402] , [ 1300161600000 , 0.25088705306073] , [ 1300248000000 , 0.25650226880093] , [ 1300334400000 , 0.26207601790233] , [ 1300420800000 , 0.25636499016232] , [ 1300680000000 , 0.26719577143981] , [ 1300766400000 , 0.25057580884655] , [ 1300852800000 , 0.24821067914885] , [ 1300939200000 , 0.24255966354913] , [ 1301025600000 , 0.23208545489989] , [ 1301284800000 , 0.25518489801064] , [ 1301371200000 , 0.24328576271735] , [ 1301457600000 , 0.24177433606838] , [ 1301544000000 , 0.24566460239554] , [ 1301630400000 , 0.23829566694348] , [ 1301889600000 , 0.24626118988613] , [ 1301976000000 , 0.26089885812411] , [ 1302062400000 , 0.24928065890565] , [ 1302148800000 , 0.2592730718345] , [ 1302235200000 , 0.26584835997748] , [ 1302494400000 , 0.2619310378378] , [ 1302580800000 , 0.2517616665586] , [ 1302667200000 , 0.24497146424254] , [ 1302753600000 , 0.23965476009736] , [ 1302840000000 , 0.24273749595555] , [ 1303099200000 , 0.24026629573157] , [ 1303185600000 , 0.24306505175131] , [ 1303272000000 , 0.24228847687047] , [ 1303358400000 , 0.24908808140592] , [ 1303704000000 , 0.25629359778434] , [ 1303790400000 , 0.24600091538301] , [ 1303876800000 , 0.24993801267315] , [ 1303963200000 , 0.24853977351593] , [ 1304049600000 , 0.25560150895798] , [ 1304308800000 , 0.26502065459575] , [ 1304395200000 , 0.27348599304691] , [ 1304481600000 , 0.24881070927841] , [ 1304568000000 , 0.26629433923903] , [ 1304654400000 , 0.27101280065226] , [ 1304913600000 , 0.26949170008308] , [ 1305000000000 , 0.26786788540753] , [ 1305086400000 , 0.26976206763607] , [ 1305172800000 , 0.26758375529774] , [ 1305259200000 , 0.29312983084351] , [ 1305518400000 , 0.29482712502075] , [ 1305604800000 , 0.27510245807736] , [ 1305691200000 , 0.27453788444529] , [ 1305777600000 , 0.28937549888275] , [ 1305864000000 , 0.30189598849716] , [ 1306123200000 , 0.29078197204741] , [ 1306209600000 , 0.30600002448236] , [ 1306296000000 , 0.30234809370631] , [ 1306382400000 , 0.29490582156124] , [ 1306468800000 , 0.30385714736128] , [ 1306814400000 , 0.28523823770827] , [ 1306900800000 , 0.27788301459213] , [ 1306987200000 , 0.40619592966466] , [ 1307073600000 , 0.39345529118799] , [ 1307332800000 , 0.3903163184502] , [ 1307419200000 , 0.41558439318572] , [ 1307505600000 , 0.41913744068372] , [ 1307592000000 , 0.43970829198686] , [ 1307678400000 , 0.45428905955147] , [ 1307937600000 , 0.45397754813893] , [ 1308024000000 , 0.46506017912194] , [ 1308110400000 , 0.45539226013086] , [ 1308196800000 , 0.47668686888298] , [ 1308283200000 , 0.60578662726343] , [ 1308542400000 , 0.28725334672374] , [ 1308628800000 , 0.29688954932691] , [ 1308715200000 , 0.50554129778831] , [ 1308801600000 , 0.28803382767289] , [ 1308888000000 , 0.30566947860401] , [ 1309147200000 , 0.2860256010382] , [ 1309233600000 , 0.30734273137934] , [ 1309320000000 , 0.486760597847] , [ 1309406400000 , 0.48808786345673] , [ 1309492800000 , 0.34347457655277] , [ 1309838400000 , 0.44561452757931] , [ 1309924800000 , 0.43717067987187] , [ 1310011200000 , 0.363546931153] , [ 1310097600000 , 0.3650012974234] , [ 1310356800000 , 0.47252323846844] , [ 1310443200000 , 0.46177328813846] , [ 1310529600000 , 0.4537140592128] , [ 1310616000000 , 0.45725665633337] , [ 1310702400000 , 0.44650595669184] , [ 1310961600000 , 0.44457163015207] , [ 1311048000000 , 0.44571161824917] , [ 1311134400000 , 0.45452181580806] , [ 1311220800000 , 0.28431386000731] , [ 1311307200000 , 0.27090316140781] , [ 1311566400000 , 0.27349795982962] , [ 1311652800000 , 0.45764908923797] , [ 1311739200000 , 0.56870503080841] , [ 1311825600000 , 0.6249857215157] , [ 1311912000000 , 0.68818827002797] , [ 1314763200000 , 0.38245039176442] , [ 1314849600000 , 0.37558630821454] , [ 1314936000000 , 0.3569932906938] , [ 1315281600000 , 0.52577145773279] , [ 1315368000000 , 0.56090752934622] , [ 1315454400000 , 0.53870900027936] , [ 1315540800000 , 0.52756617595365] , [ 1315800000000 , 0.54786959641713] , [ 1315886400000 , 0.565988518513] , [ 1315972800000 , 0.57380317943342] , [ 1316059200000 , 0.56882294530893] , [ 1316145600000 , 0.58778751913061] , [ 1316404800000 , 0.55503750474374] , [ 1316491200000 , 0.54821999157495] , [ 1316577600000 , 0.63315464857262] , [ 1316664000000 , 0.61194381894131] , [ 1316750400000 , 0.5946421097889] , [ 1317009600000 , 0.61035522157758] , [ 1317096000000 , 0.63246474877724] , [ 1317182400000 , 0.57589216934023] , [ 1317268800000 , 0.55479071011554] , [ 1317355200000 , 0.4841825765629] , [ 1317614400000 , 0.44442516066328] , [ 1317700800000 , 0.44040274204019] , [ 1317787200000 , 0.45007707551418] , [ 1317873600000 , 0.46214462629916] , [ 1317960000000 , 0.43343158251783] , [ 1318219200000 , 0.44745993823054] , [ 1318305600000 , 0.43011673729904] , [ 1318392000000 , 0.46691079848101] , [ 1318478400000 , 0.46135259035608] , [ 1318564800000 , 0.44701111449567] , [ 1318824000000 , 0.4505729135891] , [ 1318910400000 , 0.45262620771441] , [ 1318996800000 , 0.44687539854298] , [ 1319083200000 , 0.44110543119353] , [ 1319169600000 , 0.46041357823819] , [ 1319428800000 , 0.4761783136763] , [ 1319515200000 , 0.46491895011452] , [ 1319601600000 , 0.47173019887826] , [ 1319688000000 , 0.37532388022903] , [ 1319774400000 , 0.36696228335471] , [ 1320033600000 , 0.45206924885623] , [ 1320120000000 , 0.46817052488213] , [ 1320206400000 , 0.49350355510821] , [ 1320292800000 , 0.47973287496665] , [ 1320379200000 , 0.49085590117818] , [ 1320642000000 , 0.47629600158061] , [ 1320728400000 , 0.47155674379516] , [ 1320814800000 , 0.46839216523208] , [ 1320901200000 , 0.45661255054486] , [ 1320987600000 , 0.46279813437207] , [ 1321246800000 , 0.45429096332985] , [ 1321333200000 , 0.44834634502213] , [ 1321419600000 , 0.43782694279932] , [ 1321506000000 , 0.43455896615614] , [ 1321592400000 , 0.43132973538607] , [ 1321851600000 , 0.41336814678348] , [ 1321938000000 , 0.40154142427755] , [ 1322024400000 , 0.39176366375423] , [ 1322197200000 , 0.4095801861786] , [ 1322456400000 , 0.41771592290428] , [ 1322542800000 , 0.4162224653633] , [ 1322629200000 , 0.42318274679895] , [ 1322715600000 , 0.41772981637871] , [ 1322802000000 , 0.40969754530833] , [ 1323061200000 , 0.40709894698063] , [ 1323147600000 , 0.41402412498693] , [ 1323234000000 , 0.42657305235583] , [ 1323320400000 , 0.42663937671221] , [ 1323406800000 , 0.43783053878367] , [ 1323666000000 , 0.42087795540679] , [ 1323752400000 , 0.42273201183908] , [ 1323838800000 , 0.41878072201135] , [ 1323925200000 , 0.43138733158581] , [ 1324011600000 , 0.42472923382568] , [ 1324270800000 , 0.41669753027675] , [ 1324357200000 , 0.41981401930208] , [ 1324443600000 , 0.43128203587221] , [ 1324530000000 , 0.4577393508269] , [ 1324616400000 , 0.44144997952488] , [ 1324962000000 , 0.43310320721477] , [ 1325048400000 , 0.46267325157705] , [ 1325134800000 , 0.46503547498803] , [ 1325221200000 , 0.46138989333686] , [ 1325566800000 , 0.249341113035] , [ 1325653200000 , 0.2515686548328] , [ 1325739600000 , 0.24178074745653] , [ 1325826000000 , 0.24016256863888] , [ 1326085200000 , 0.23852249609993] , [ 1326171600000 , 0.25010918279328] , [ 1326258000000 , 0.24157851460977] , [ 1326344400000 , 0.26546228510531] , [ 1326430800000 , 0.27042685434296] , [ 1326776400000 , 0.27298738403865] , [ 1326862800000 , 0.26503479105789] , [ 1326949200000 , 0.26093650132182] , [ 1327035600000 , 0.25468553126776] , [ 1327294800000 , 0.25870821509927] , [ 1327381200000 , 0.27319926289753] , [ 1327467600000 , 0.28929620634206] , [ 1327554000000 , 0.29628859255556] , [ 1327640400000 , 0.28119023501318] , [ 1327899600000 , 0.28637600094128] , [ 1327986000000 , 0.29164189758607] , [ 1328072400000 , 0.29838373270964] , [ 1328158800000 , 0.30434348230674] , [ 1328245200000 , 0.17565364382235] , [ 1328504400000 , 0.16268034106051] , [ 1328590800000 , 0.16975880034528] , [ 1328677200000 , 0.30604917410411] , [ 1328763600000 , 0.31426513370666] , [ 1328850000000 , 0.30932188288115] , [ 1329109200000 , 0.17352990574053] , [ 1329195600000 , 0.17555252026983] , [ 1329282000000 , 0.17598902230363] , [ 1329368400000 , 0.16303136355065] , [ 1329454800000 , 0.17029126124972] , [ 1329800400000 , 0.28962564862674] , [ 1329886800000 , 0.27928956537238] , [ 1329973200000 , 0.29643315845759] , [ 1330059600000 , 0.29008675829454] , [ 1330318800000 , 0.29222320133732] , [ 1330405200000 , 0.28823901625433] , [ 1330491600000 , 0.27911827892814] , [ 1330578000000 , 0.28249118739874] , [ 1330664400000 , 0.26540083306976] , [ 1330923600000 , 0.26033858093099] , [ 1331010000000 , 0.2564372060573] , [ 1331096400000 , 0.25133221925172] , [ 1331182800000 , 0.26035055512578] , [ 1331269200000 , 0.26589790084663] , [ 1331524800000 , 0.25793553792393] , [ 1331611200000 , 0.267061264485] , [ 1331697600000 , 0.25384129859595] , [ 1331784000000 , 0.25709311833625] , [ 1331870400000 , 0.26073406509935] , [ 1332129600000 , 0.25429363934993] , [ 1332216000000 , 0.27131681134796] , [ 1332302400000 , 0.25868232074447] , [ 1332388800000 , 0.25802690426325] , [ 1332475200000 , 0.25772173066805] , [ 1332734400000 , 0.26289439419493] , [ 1332820800000 , 0.26030143396564] , [ 1332907200000 , 0.2511964361679] , [ 1332993600000 , 0.26237177414945] , [ 1333080000000 , 0.25355006080158] , [ 1333339200000 , 0.2781144517115] , [ 1333425600000 , 0.28189444390819] , [ 1333512000000 , 0.26834142417127] , [ 1333598400000 , 0.26795533982394] , [ 1333944000000 , 0.26416982391577] , [ 1334030400000 , 0.25016227545025] , [ 1334116800000 , 0.25101300785306] , [ 1334203200000 , 0.2481329276245] , [ 1334289600000 , 0.25425264114226] , [ 1334548800000 , 0.24856263189013] , [ 1334635200000 , 0.25054792631715] , [ 1334721600000 , 0.249127987656] , [ 1334808000000 , 0.25381649528012] , [ 1334894400000 , 0.25763379706162] , [ 1335153600000 , 0.24189504245878] , [ 1335240000000 , 0.24819671940471] , [ 1335326400000 , 0.24324155321256] , [ 1335412800000 , 0.25905441421388] , [ 1335499200000 , 0.25345094550503] , [ 1335758400000 , 0.24077565144655]]} , { "key" : "Not Available" , "stack" : true , "shadowSize" : 0 , "color" : undefined , "lines" : { "fillColor" : undefined , "fill" : 0.5} , "values" : [ [ 1028088000000 , 0.065308086801007] , [ 1028174400000 , 0.066535199311109] , [ 1028260800000 , 0.068273406038148] , [ 1028520000000 , 0.063342865920424] , [ 1028606400000 , 0.060952415080445] , [ 1028692800000 , 0.059524896365875] , [ 1028779200000 , 0.060489755935475] , [ 1028865600000 , 0.067363838748502] , [ 1029124800000 , 0.057886538387165] , [ 1029211200000 , 0.064061271210866] , [ 1029297600000 , 0.058560224230083] , [ 1029384000000 , 0.060853754252312] , [ 1029470400000 , 0.057479178502535] , [ 1029729600000 , 0.056961826210783] , [ 1029816000000 , 0.055644774545051] , [ 1029902400000 , 0.059716363055355] , [ 1029988800000 , 0.057000178693805] , [ 1030075200000 , 0.058622011152265] , [ 1030334400000 , 0.061307731985769] , [ 1030420800000 , 0.062398914122505] , [ 1030507200000 , 0.056176479467961] , [ 1030593600000 , 0.055825202094993] , [ 1030680000000 , 0.055126229456489] , [ 1031025600000 , 0.049724266365136] , [ 1031112000000 , 0.051053206923382] , [ 1031198400000 , 0.048569908393729] , [ 1031284800000 , 0.048763478360222] , [ 1031544000000 , 0.049796224982781] , [ 1031630400000 , 0.0520939023804] , [ 1031716800000 , 0.051467996632025] , [ 1031803200000 , 0.045537284333507] , [ 1031889600000 , 0.044426523288586] , [ 1032148800000 , 0.046905154365696] , [ 1032235200000 , 0.048400466540506] , [ 1032321600000 , 0.043989946613247] , [ 1032408000000 , 0.042478239285601] , [ 1032494400000 , 0.044248581235601] , [ 1032753600000 , 0.04186860658708] , [ 1032840000000 , 0.042250919128784] , [ 1032926400000 , 0.041621635091397] , [ 1033012800000 , 0.040935777809039] , [ 1033099200000 , 0.046881490190283] , [ 1033358400000 , 0.022874032531005] , [ 1033444800000 , 0.025968411443307] , [ 1033531200000 , 0.026739457919906] , [ 1033617600000 , 0.023947710809458] , [ 1033704000000 , 0.024965740697006] , [ 1033963200000 , 0.025338856886956] , [ 1034049600000 , 0.023323387866575] , [ 1034136000000 , 0.026153484226899] , [ 1034222400000 , 0.025099094082079] , [ 1034308800000 , 0.027607116989742] , [ 1034568000000 , 0.026131589075203] , [ 1034654400000 , 0.026415854275271] , [ 1034740800000 , 0.026484778347064] , [ 1034827200000 , 0.027005465132098] , [ 1034913600000 , 0.027216284292421] , [ 1035172800000 , 0.028604444969818] , [ 1035259200000 , 0.029890839466699] , [ 1035345600000 , 0.02690899730454] , [ 1035432000000 , 0.025615326443201] , [ 1035518400000 , 0.024909944815054] , [ 1035781200000 , 0.029065959686029] , [ 1035867600000 , 0.026119529863898] , [ 1035954000000 , 0.026492532440832] , [ 1036040400000 , 0.029125286951061] , [ 1036126800000 , 0.029213818010024] , [ 1036386000000 , 0.031168564371318] , [ 1036472400000 , 0.030803188173056] , [ 1036558800000 , 0.03075767696709] , [ 1036645200000 , 0.029383602025213] , [ 1036731600000 , 0.028152315939112] , [ 1036990800000 , 0.028639152564378] , [ 1037077200000 , 0.028889910669847] , [ 1037163600000 , 0.029071310355849] , [ 1037250000000 , 0.028685091215229] , [ 1037336400000 , 0.029438759820315] , [ 1037595600000 , 0.029185041977343] , [ 1037682000000 , 0.03074018821931] , [ 1037768400000 , 0.030478428738018] , [ 1037854800000 , 0.030194599822581] , [ 1037941200000 , 0.028797698970816] , [ 1038200400000 , 0.029226482633908] , [ 1038286800000 , 0.030189047048893] , [ 1038373200000 , 0.032216593468512] , [ 1038546000000 , 0.028727666673838] , [ 1038805200000 , 0.029679314969669] , [ 1038891600000 , 0.028367499963419] , [ 1038978000000 , 0.031497967222983] , [ 1039064400000 , 0.029670942980314] , [ 1039150800000 , 0.029732353991932] , [ 1039410000000 , 0.028549766300576] , [ 1039496400000 , 0.030274379191703] , [ 1039582800000 , 0.028557282847108] , [ 1039669200000 , 0.028438024174488] , [ 1039755600000 , 0.027910827941057] , [ 1040014800000 , 0.029085958470934] , [ 1040101200000 , 0.030756204759654] , [ 1040187600000 , 0.027276312950373] , [ 1040274000000 , 0.027732460835415] , [ 1040360400000 , 0.026446913109931] , [ 1040619600000 , 0.025562413240833] , [ 1040706000000 , 0.027210109399928] , [ 1040878800000 , 0.027391453353743] , [ 1040965200000 , 0.025045615022089] , [ 1041224400000 , 0.024595114740731] , [ 1041310800000 , 0] , [ 1041483600000 , 0] , [ 1041570000000 , 0] , [ 1041829200000 , 0] , [ 1041915600000 , 0] , [ 1042002000000 , 0] , [ 1042088400000 , 0] , [ 1042174800000 , 0] , [ 1042434000000 , 0] , [ 1042520400000 , 0] , [ 1042606800000 , 0] , [ 1042693200000 , 0] , [ 1042779600000 , 0] , [ 1043125200000 , 0] , [ 1043211600000 , 0] , [ 1043298000000 , 0] , [ 1043384400000 , 0] , [ 1043643600000 , 0] , [ 1043730000000 , 0] , [ 1043816400000 , 0] , [ 1043902800000 , 0] , [ 1043989200000 , 0] , [ 1044248400000 , 0] , [ 1044334800000 , 0] , [ 1044421200000 , 0] , [ 1044507600000 , 0] , [ 1044594000000 , 0] , [ 1044853200000 , 0] , [ 1044939600000 , 0] , [ 1045026000000 , 0] , [ 1045112400000 , 0] , [ 1045198800000 , 0] , [ 1045544400000 , 0] , [ 1045630800000 , 0] , [ 1045717200000 , 0] , [ 1045803600000 , 0] , [ 1046062800000 , 0] , [ 1046149200000 , 0] , [ 1046235600000 , 0] , [ 1046322000000 , 0] , [ 1046408400000 , 0] , [ 1046667600000 , 0] , [ 1046754000000 , 0] , [ 1046840400000 , 0] , [ 1046926800000 , 0] , [ 1047013200000 , 0] , [ 1047272400000 , 0] , [ 1047358800000 , 0] , [ 1047445200000 , 0] , [ 1047531600000 , 0] , [ 1047618000000 , 0] , [ 1047877200000 , 0] , [ 1047963600000 , 0] , [ 1048050000000 , 0] , [ 1048136400000 , 0] , [ 1048222800000 , 0] , [ 1048482000000 , 0] , [ 1048568400000 , 0] , [ 1048654800000 , 0] , [ 1048741200000 , 0] , [ 1048827600000 , 0] , [ 1049086800000 , 0] , [ 1049173200000 , 0] , [ 1049259600000 , 0] , [ 1049346000000 , 0] , [ 1049432400000 , 0] , [ 1049688000000 , 0] , [ 1049774400000 , 0] , [ 1049860800000 , 0] , [ 1049947200000 , 0] , [ 1050033600000 , 0] , [ 1050292800000 , 0] , [ 1050379200000 , 0] , [ 1050465600000 , 0] , [ 1050552000000 , 0] , [ 1050897600000 , 0] , [ 1050984000000 , 0] , [ 1051070400000 , 0] , [ 1051156800000 , 0] , [ 1051243200000 , 0] , [ 1051502400000 , 0] , [ 1051588800000 , 0] , [ 1051675200000 , 0] , [ 1051761600000 , 0] , [ 1051848000000 , 0] , [ 1052107200000 , 0] , [ 1052193600000 , 0] , [ 1052280000000 , 0] , [ 1052366400000 , 0] , [ 1052452800000 , 0] , [ 1052712000000 , 0] , [ 1052798400000 , 0] , [ 1052884800000 , 0] , [ 1052971200000 , 0] , [ 1053057600000 , 0] , [ 1053316800000 , 0] , [ 1053403200000 , 0] , [ 1053489600000 , 0] , [ 1053576000000 , 0] , [ 1053662400000 , 0] , [ 1054008000000 , 0] , [ 1054094400000 , 0] , [ 1054180800000 , 0] , [ 1054267200000 , 0] , [ 1054526400000 , 0] , [ 1054612800000 , 0] , [ 1054699200000 , 0] , [ 1054785600000 , 0] , [ 1054872000000 , 0] , [ 1055131200000 , 0] , [ 1055217600000 , 0] , [ 1055304000000 , 0] , [ 1055390400000 , 0] , [ 1055476800000 , 0] , [ 1055736000000 , 0] , [ 1055822400000 , 0] , [ 1055908800000 , 0] , [ 1055995200000 , 0] , [ 1056081600000 , 0] , [ 1056340800000 , 0] , [ 1056427200000 , 0] , [ 1056513600000 , 0] , [ 1056600000000 , 0] , [ 1056686400000 , 0] , [ 1056945600000 , 0] , [ 1057032000000 , 0] , [ 1057118400000 , 0] , [ 1057204800000 , 0] , [ 1057550400000 , 0] , [ 1057636800000 , 0] , [ 1057723200000 , 0] , [ 1057809600000 , 0] , [ 1057896000000 , 0] , [ 1058155200000 , 0] , [ 1058241600000 , 0] , [ 1058328000000 , 0] , [ 1058414400000 , 0] , [ 1058500800000 , 0] , [ 1058760000000 , 0] , [ 1058846400000 , 0] , [ 1058932800000 , 0] , [ 1059019200000 , 0] , [ 1059105600000 , 0] , [ 1059364800000 , 0] , [ 1059451200000 , 0] , [ 1059537600000 , 0] , [ 1059624000000 , 0] , [ 1059710400000 , 0] , [ 1059969600000 , 0] , [ 1060056000000 , 0] , [ 1060142400000 , 0] , [ 1060228800000 , 0] , [ 1060315200000 , 0] , [ 1060574400000 , 0] , [ 1060660800000 , 0] , [ 1060747200000 , 0] , [ 1060833600000 , 0] , [ 1060920000000 , 0] , [ 1061179200000 , 0] , [ 1061265600000 , 0] , [ 1061352000000 , 0] , [ 1061438400000 , 0] , [ 1061524800000 , 0] , [ 1061784000000 , 0] , [ 1061870400000 , 0] , [ 1061956800000 , 0] , [ 1062043200000 , 0] , [ 1062129600000 , 0] , [ 1062475200000 , 0] , [ 1062561600000 , 0] , [ 1062648000000 , 0] , [ 1062734400000 , 0] , [ 1062993600000 , 0] , [ 1063080000000 , 0] , [ 1063166400000 , 0] , [ 1063252800000 , 0] , [ 1063339200000 , 0] , [ 1063598400000 , 0] , [ 1063684800000 , 0] , [ 1063771200000 , 0] , [ 1063857600000 , 0] , [ 1063944000000 , 0] , [ 1064203200000 , 0] , [ 1064289600000 , 0] , [ 1064376000000 , 0] , [ 1064462400000 , 0] , [ 1064548800000 , 0] , [ 1064808000000 , 0] , [ 1064894400000 , 0] , [ 1064980800000 , 0] , [ 1065067200000 , 0] , [ 1065153600000 , 0] , [ 1065412800000 , 0] , [ 1065499200000 , 0] , [ 1065585600000 , 0] , [ 1065672000000 , 0] , [ 1065758400000 , 0] , [ 1066017600000 , 0] , [ 1066104000000 , 0] , [ 1066190400000 , 0] , [ 1066276800000 , 0] , [ 1066363200000 , 0] , [ 1066622400000 , 0] , [ 1066708800000 , 0] , [ 1066795200000 , 0] , [ 1066881600000 , 0] , [ 1066968000000 , 0] , [ 1067230800000 , 0] , [ 1067317200000 , 0] , [ 1067403600000 , 0] , [ 1067490000000 , 0] , [ 1067576400000 , 0] , [ 1067835600000 , 0] , [ 1067922000000 , 0] , [ 1068008400000 , 0] , [ 1068094800000 , 0] , [ 1068181200000 , 0] , [ 1068440400000 , 0] , [ 1068526800000 , 0] , [ 1068613200000 , 0] , [ 1068699600000 , 0] , [ 1068786000000 , 0] , [ 1069045200000 , 0] , [ 1069131600000 , 0] , [ 1069218000000 , 0] , [ 1069304400000 , 0] , [ 1069390800000 , 0] , [ 1069650000000 , 0] , [ 1069736400000 , 0] , [ 1069822800000 , 0] , [ 1069995600000 , 0] , [ 1070254800000 , 0] , [ 1070341200000 , 0] , [ 1070427600000 , 0] , [ 1070514000000 , 0] , [ 1070600400000 , 0] , [ 1070859600000 , 0] , [ 1070946000000 , 0] , [ 1071032400000 , 0] , [ 1071118800000 , 0] , [ 1071205200000 , 0] , [ 1071464400000 , 0] , [ 1071550800000 , 0] , [ 1071637200000 , 0] , [ 1071723600000 , 0] , [ 1071810000000 , 0] , [ 1072069200000 , 0] , [ 1072155600000 , 0] , [ 1072242000000 , 0] , [ 1072414800000 , 0] , [ 1072674000000 , 0] , [ 1072760400000 , 0] , [ 1072846800000 , 0] , [ 1073019600000 , 0] , [ 1073278800000 , 0.162533822134] , [ 1073365200000 , 0.16191218720795] , [ 1073451600000 , 0.16112156640388] , [ 1073538000000 , 0.1608807335117] , [ 1073624400000 , 0.1613236260659] , [ 1073883600000 , 0.16098338871276] , [ 1073970000000 , 0.16164374991097] , [ 1074056400000 , 0.16047979170149] , [ 1074142800000 , 0.15970454663265] , [ 1074229200000 , 0.15864812501195] , [ 1074574800000 , 0.15839505738166] , [ 1074661200000 , 0.157075278982] , [ 1074747600000 , 0.15718974462752] , [ 1074834000000 , 0.15729893338795] , [ 1075093200000 , 0.15622844925447] , [ 1075179600000 , 0.15734590167515] , [ 1075266000000 , 0.15940277309467] , [ 1075352400000 , 0.15883338293245] , [ 1075438800000 , 0.15875625393522] , [ 1075698000000 , 0.16561398407784] , [ 1075784400000 , 0.16587344375358] , [ 1075870800000 , 0.1666034697865] , [ 1075957200000 , 0.16640165901847] , [ 1076043600000 , 0.16440775984578] , [ 1076302800000 , 0.16436645474488] , [ 1076389200000 , 0.16385568201288] , [ 1076475600000 , 0.16257263852191] , [ 1076562000000 , 0.16274321343554] , [ 1076648400000 , 0.16346536078542] , [ 1076994000000 , 0.16245793851977] , [ 1077080400000 , 0.16266454997517] , [ 1077166800000 , 0.16320682723502] , [ 1077253200000 , 0.16382463573527] , [ 1077512400000 , 0.16502093043411] , [ 1077598800000 , 0.16496824282429] , [ 1077685200000 , 0.16421398798918] , [ 1077771600000 , 0.16354229323765] , [ 1077858000000 , 0.16265627601747] , [ 1078117200000 , 0.16183628922084] , [ 1078203600000 , 0.16258360625313] , [ 1078290000000 , 0.16233976895921] , [ 1078376400000 , 0.16176309597104] , [ 1078462800000 , 0.16115477869602] , [ 1078722000000 , 0.16261733514952] , [ 1078808400000 , 0.16373955365355] , [ 1078894800000 , 0.16556539334739] , [ 1078981200000 , 0.1674812680509] , [ 1079067600000 , 0.16573095761401] , [ 1079326800000 , 0.16765689983007] , [ 1079413200000 , 0.16704067946664] , [ 1079499600000 , 0.16531552815492] , [ 1079586000000 , 0.16547442402761] , [ 1079672400000 , 0.16643725045704] , [ 1079931600000 , 0.16856500546921] , [ 1080018000000 , 0.16817376100152] , [ 1080104400000 , 0.16812992549131] , [ 1080190800000 , 0.1655033512927] , [ 1080277200000 , 0.16536865227461] , [ 1080536400000 , 0.16357393541647] , [ 1080622800000 , 0.16296166414392] , [ 1080709200000 , 0.16243258826925] , [ 1080795600000 , 0.15932585987141] , [ 1080882000000 , 0.36307541132054] , [ 1081137600000 , 0.35434730873291] , [ 1081224000000 , 0.36074868519543] , [ 1081310400000 , 0.35621615093824] , [ 1081396800000 , 0.35507476868398] , [ 1081742400000 , 0.35326645500675] , [ 1081828800000 , 0.34508466611506] , [ 1081915200000 , 0.34716010317974] , [ 1082001600000 , 0.15983733654443] , [ 1082088000000 , 0.15917314912434] , [ 1082347200000 , 0.15860317178384] , [ 1082433600000 , 0.16064372171113] , [ 1082520000000 , 0.15950678999516] , [ 1082606400000 , 0.15775805141077] , [ 1082692800000 , 0.82715282592227] , [ 1082952000000 , 0.81651734610677] , [ 1083038400000 , 0.15908077152471] , [ 1083124800000 , 0.16104982028112] , [ 1083211200000 , 0.16252172453873] , [ 1083297600000 , 0.16376722579173] , [ 1083556800000 , 0.16646121964144] , [ 1083643200000 , 0.16626817468961] , [ 1083729600000 , 0.1655395451939] , [ 1083816000000 , 0.16676136939664] , [ 1083902400000 , 0.16917417182778] , [ 1084161600000 , 0.17162042183806] , [ 1084248000000 , 0.16978178149432] , [ 1084334400000 , 0.17010986886574] , [ 1084420800000 , 0.169885528801] , [ 1084507200000 , 0.17044877033686] , [ 1084766400000 , 0.17246617674047] , [ 1084852800000 , 0.17060891426632] , [ 1084939200000 , 0.17096149254295] , [ 1085025600000 , 0.17147049290408] , [ 1085112000000 , 0.1704807689546] , [ 1085371200000 , 0.1696770057029] , [ 1085457600000 , 0.16728755829763] , [ 1085544000000 , 0.16715564015705] , [ 1085630400000 , 0.16667267118029] , [ 1085716800000 , 0.16658829550746] , [ 1086062400000 , 0.16475817724646] , [ 1086148800000 , 0.16426302735433] , [ 1086235200000 , 0.1655008458145] , [ 1086321600000 , 0.16464582803512] , [ 1086580800000 , 0.16215046084077] , [ 1086667200000 , 0.16185864334201] , [ 1086753600000 , 0.16314862664723] , [ 1086840000000 , 0.60152162268685] , [ 1087185600000 , 0.66360925246556] , [ 1087272000000 , 1.0507921267893] , [ 1087358400000 , 0.66198141591778] , [ 1087444800000 , 0.69588133589603] , [ 1087531200000 , 0.71123332509969] , [ 1087790400000 , 0.49816905981523] , [ 1087876800000 , 0.49581160406275] , [ 1087963200000 , 0.49400719559734] , [ 1088049600000 , 0.49925152033971] , [ 1088136000000 , 0.7461328512748] , [ 1088395200000 , 0.74989761649839] , [ 1088481600000 , 0.16425917253245] , [ 1088568000000 , 0.23358132691792] , [ 1088654400000 , 0.22962749993866] , [ 1088740800000 , 0.23103636980472] , [ 1089086400000 , 0.47503621032418] , [ 1089172800000 , 0.47311952792013] , [ 1089259200000 , 0.48305576455377] , [ 1089345600000 , 0.48019226189611] , [ 1089604800000 , 0.67157988739754] , [ 1089691200000 , 0.23783110177606] , [ 1089777600000 , 0.23380344210608] , [ 1089864000000 , 0.23389385704522] , [ 1089950400000 , 0.23595563149681] , [ 1090209600000 , 0.23718882012937] , [ 1090296000000 , 0.23487588466635] , [ 1090382400000 , 0.23658088573673] , [ 1090468800000 , 0.23763233177432] , [ 1090555200000 , 0.23859609639624] , [ 1090814400000 , 0.23917720980838] , [ 1090900800000 , 0.23618592737232] , [ 1090987200000 , 0.23772881253093] , [ 1091073600000 , 0.2360449762581] , [ 1091160000000 , 0.2955895950662] , [ 1091419200000 , 0.30816591422976] , [ 1091505600000 , 0.57676153789022] , [ 1091592000000 , 0.57250931994969] , [ 1091678400000 , 0.59029327866973] , [ 1091764800000 , 0.32265541506936] , [ 1092024000000 , 0.86445634210137] , [ 1092110400000 , 1.8263419459327] , [ 1092196800000 , 1.2593405719711] , [ 1092283200000 , 1.2704291817955] , [ 1092369600000 , 1.2827394547251] , [ 1092628800000 , 0.79924305357348] , [ 1092715200000 , 7.2992806856608] , [ 1092801600000 , 8.4798343116924] , [ 1092888000000 , 8.6577079245255] , [ 1092974400000 , 9.0088766947982] , [ 1093233600000 , 9.3582351690255] , [ 1093320000000 , 9.829489527127] , [ 1093406400000 , 11.619080936349] , [ 1093492800000 , 13.176307717161] , [ 1093579200000 , 14.036672075106] , [ 1093838400000 , 12.566664351805] , [ 1093924800000 , 12.936533037575] , [ 1094011200000 , 13.05114256248] , [ 1094097600000 , 14.392965106044] , [ 1094184000000 , 15.363948743234] , [ 1094529600000 , 14.520228696456] , [ 1094616000000 , 14.591922863668] , [ 1094702400000 , 14.866694496961] , [ 1094788800000 , 15.230251344299] , [ 1095048000000 , 15.506146020637] , [ 1095134400000 , 15.743440575202] , [ 1095220800000 , 0.57507171680691] , [ 1095307200000 , 16.34761669885] , [ 1095393600000 , 16.336321684872] , [ 1095652800000 , 16.691114188652] , [ 1095739200000 , 16.893871331332] , [ 1095825600000 , 14.42873646175] , [ 1095912000000 , 14.364134753916] , [ 1095998400000 , 14.085159492774] , [ 1096257600000 , 14.334914298657] , [ 1096344000000 , 14.442320570609] , [ 1096430400000 , 15.14292417505] , [ 1096516800000 , 16.870407977799] , [ 1096603200000 , 16.812975617435] , [ 1096862400000 , 16.552243138543] , [ 1096948800000 , 18.557771400735] , [ 1097035200000 , 18.967882272109] , [ 1097121600000 , 16.713543850759] , [ 1097208000000 , 17.356521567582] , [ 1097467200000 , 17.273776388447] , [ 1097553600000 , 14.749258077501] , [ 1097640000000 , 10.054024990725] , [ 1097726400000 , 9.4809432210195] , [ 1097812800000 , 10.583265829491] , [ 1098072000000 , 9.3486862785261] , [ 1098158400000 , 8.9956412927718] , [ 1098244800000 , 9.015954580302] , [ 1098331200000 , 9.0867757343771] , [ 1098417600000 , 9.3325642017188] , [ 1098676800000 , 5.5462759969621] , [ 1098763200000 , 6.5386189300284] , [ 1098849600000 , 6.9270080186852] , [ 1098936000000 , 5.0471550453996] , [ 1099022400000 , 5.5162411749117] , [ 1099285200000 , 4.6168440791678] , [ 1099371600000 , 4.6040208538706] , [ 1099458000000 , 3.8866282055999] , [ 1099544400000 , 3.9076548369401] , [ 1099630800000 , 3.9468225193317] , [ 1099890000000 , 3.9316665195169] , [ 1099976400000 , 3.9373727800243] , [ 1100062800000 , 5.1294739617026] , [ 1100149200000 , 4.9230661104598] , [ 1100235600000 , 5.0101204225727] , [ 1100494800000 , 4.4742042560195] , [ 1100581200000 , 3.5878342150738] , [ 1100667600000 , 4.1439868838598] , [ 1100754000000 , 0.31863197171985] , [ 1100840400000 , 4.0170718378217] , [ 1101099600000 , 3.9742095423276] , [ 1101186000000 , 3.8650632299293] , [ 1101272400000 , 3.8936443679058] , [ 1101445200000 , 3.9156349434464] , [ 1101704400000 , 3.0673403047877] , [ 1101790800000 , 3.1778718109985] , [ 1101877200000 , 3.1093878763518] , [ 1101963600000 , 3.8928153545075] , [ 1102050000000 , 3.9257971355349] , [ 1102309200000 , 3.9017566447062] , [ 1102395600000 , 4.347896144576] , [ 1102482000000 , 5.6064285783093] , [ 1102568400000 , 5.5978010311428] , [ 1102654800000 , 7.4535351484492] , [ 1102914000000 , 8.0721793677192] , [ 1103000400000 , 8.2823811677878] , [ 1103086800000 , 8.765459676367] , [ 1103173200000 , 8.5850799557033] , [ 1103259600000 , 7.7908486730501] , [ 1103518800000 , 7.6678805526241] , [ 1103605200000 , 7.8504282179396] , [ 1103691600000 , 9.399250001389] , [ 1103778000000 , 9.7581658450356] , [ 1104123600000 , 9.9078142487249] , [ 1104210000000 , 9.8182756565342] , [ 1104296400000 , 9.9008818891315] , [ 1104382800000 , 9.9599709680033] , [ 1104469200000 , 10.46571224806] , [ 1104728400000 , 0.74747142004202] , [ 1104814800000 , 10.031098494083] , [ 1104901200000 , 9.4656500427303] , [ 1104987600000 , 9.355766297385] , [ 1105074000000 , 9.4449786614225] , [ 1105333200000 , 9.4028462270052] , [ 1105419600000 , 9.6699992837585] , [ 1105506000000 , 9.184724008747] , [ 1105592400000 , 0.30692455576974] , [ 1105678800000 , 9.0804946251902] , [ 1106024400000 , 10.106622993731] , [ 1106110800000 , 10.250196463002] , [ 1106197200000 , 10.543722776727] , [ 1106283600000 , 11.356491601564] , [ 1106542800000 , 11.649912817418] , [ 1106629200000 , 12.082030240009] , [ 1106715600000 , 0.44537635660078] , [ 1106802000000 , 12.291766341495] , [ 1106888400000 , 0.47541989384315] , [ 1107147600000 , 10.745854742993] , [ 1107234000000 , 11.016016078983] , [ 1107320400000 , 9.9828797388324] , [ 1107406800000 , 10.602886773337] , [ 1107493200000 , 10.813338068307] , [ 1107752400000 , 11.134542525447] , [ 1107838800000 , 10.985586024182] , [ 1107925200000 , 11.499306241313] , [ 1108011600000 , 11.5859205548] , [ 1108098000000 , 11.327591262341] , [ 1108357200000 , 10.56869544127] , [ 1108443600000 , 10.526668369981] , [ 1108530000000 , 10.423117828431] , [ 1108616400000 , 10.631236834437] , [ 1108702800000 , 10.857188147473] , [ 1109048400000 , 10.016737690635] , [ 1109134800000 , 9.9070856337368] , [ 1109221200000 , 10.099078862055] , [ 1109307600000 , 10.508372171841] , [ 1109566800000 , 11.254698520287] , [ 1109653200000 , 11.047328583298] , [ 1109739600000 , 11.4610938393] , [ 1109826000000 , 11.55027177793] , [ 1109912400000 , 11.552187185601] , [ 1110171600000 , 11.502547393254] , [ 1110258000000 , 11.609530593623] , [ 1110344400000 , 14.504690810539] , [ 1110430800000 , 12.696654292538] , [ 1110517200000 , 12.27190877914] , [ 1110776400000 , 12.312803257994] , [ 1110862800000 , 12.655770868701] , [ 1110949200000 , 12.747674976159] , [ 1111035600000 , 12.495897416532] , [ 1111122000000 , 12.624819616915] , [ 1111381200000 , 12.507548356474] , [ 1111467600000 , 12.3680867978] , [ 1111554000000 , 12.158154930856] , [ 1111640400000 , 10.592059146635] , [ 1111986000000 , 0.39245362334724] , [ 1112072400000 , 0.33685804275706] , [ 1112158800000 , 0.34985669356221] , [ 1112245200000 , 0.4411593875026] , [ 1112331600000 , 11.545055177823] , [ 1112587200000 , 11.576072328731] , [ 1112673600000 , 12.509132856801] , [ 1112760000000 , 12.717998097198] , [ 1112846400000 , 11.708400688531] , [ 1112932800000 , 11.990743743591] , [ 1113192000000 , 10.219340446084] , [ 1113278400000 , 10.112469658924] , [ 1113364800000 , 9.4541288634538] , [ 1113451200000 , 7.8674538651247] , [ 1113537600000 , 7.7195626847698] , [ 1113796800000 , 6.9450227220774] , [ 1113883200000 , 7.3826459950972] , [ 1113969600000 , 7.5848425944886] , [ 1114056000000 , 6.8059017070873] , [ 1114142400000 , 6.9167560872077] , [ 1114401600000 , 6.8124096879965] , [ 1114488000000 , 8.8162099332492] , [ 1114574400000 , 9.0247406825978] , [ 1114660800000 , 9.1617334646374] , [ 1114747200000 , 8.5267995733004] , [ 1115006400000 , 8.9811596842566] , [ 1115092800000 , 8.8824488384574] , [ 1115179200000 , 9.4497572731764] , [ 1115265600000 , 10.716144487779] , [ 1115352000000 , 11.753189999482] , [ 1115611200000 , 10.720808344948] , [ 1115697600000 , 10.136471881524] , [ 1115784000000 , 9.9797692562246] , [ 1115870400000 , 13.292950148428] , [ 1115956800000 , 13.192952173369] , [ 1116216000000 , 11.537763972554] , [ 1116302400000 , 11.423169362644] , [ 1116388800000 , 11.223902427124] , [ 1116475200000 , 10.421151487126] , [ 1116561600000 , 10.303761536539] , [ 1116820800000 , 9.9456487566451] , [ 1116907200000 , 10.236261879497] , [ 1116993600000 , 10.062889273806] , [ 1117080000000 , 10.06242497134] , [ 1117166400000 , 9.9983147199815] , [ 1117512000000 , 9.8106871570971] , [ 1117598400000 , 10.501089151551] , [ 1117684800000 , 9.2941994461671] , [ 1117771200000 , 9.2389751586486] , [ 1118030400000 , 7.4482624209164] , [ 1118116800000 , 6.8462826463691] , [ 1118203200000 , 5.9401919260823] , [ 1118289600000 , 5.9535209754597] , [ 1118376000000 , 6.6001538940185] , [ 1118635200000 , 6.6348757668368] , [ 1118721600000 , 5.9833344752235] , [ 1118808000000 , 6.0418961875819] , [ 1118894400000 , 5.9045226403631] , [ 1118980800000 , 5.7497152447422] , [ 1119240000000 , 5.2649666145063] , [ 1119326400000 , 5.0126424745801] , [ 1119412800000 , 4.9151513734225] , [ 1119499200000 , 5.4893296255786] , [ 1119585600000 , 4.3796774773445] , [ 1119844800000 , 6.4076400610862] , [ 1119931200000 , 6.2782612627486] , [ 1120017600000 , 6.6909754146222] , [ 1120104000000 , 8.0732181194761] , [ 1120190400000 , 9.0392678699656] , [ 1120536000000 , 9.4975401720098] , [ 1120622400000 , 9.7222627489378] , [ 1120708800000 , 3.4297149175024] , [ 1120795200000 , 5.6868510640361] , [ 1121054400000 , 5.8801336159671] , [ 1121140800000 , 5.9019163044989] , [ 1121227200000 , 6.2851444340702] , [ 1121313600000 , 6.2316436263698] , [ 1121400000000 , 6.6294865858333] , [ 1121659200000 , 6.5800792636664] , [ 1121745600000 , 8.2961932400234] , [ 1121832000000 , 8.920796261703] , [ 1121918400000 , 8.7030022477305] , [ 1122004800000 , 8.7554693096243] , [ 1122264000000 , 8.749579140082] , [ 1122350400000 , 8.757446490254] , [ 1122436800000 , 7.9055390231208] , [ 1122523200000 , 7.5135868730499] , [ 1122609600000 , 8.1626893684391] , [ 1122868800000 , 10.631433037791] , [ 1122955200000 , 9.3383815177505] , [ 1123041600000 , 9.1792003441247] , [ 1123128000000 , 9.255090986243] , [ 1123214400000 , 11.673563377497] , [ 1123473600000 , 12.226073482243] , [ 1123560000000 , 12.027897115208] , [ 1123646400000 , 8.9579778731093] , [ 1123732800000 , 9.8755693940562] , [ 1123819200000 , 10.561183682268] , [ 1124078400000 , 10.149552913143] , [ 1124164800000 , 9.4894623262941] , [ 1124251200000 , 8.9879565217228] , [ 1124337600000 , 8.9410560230164] , [ 1124424000000 , 9.1050051865001] , [ 1124683200000 , 9.4618677124275] , [ 1124769600000 , 9.4409533679117] , [ 1124856000000 , 9.4630878513013] , [ 1124942400000 , 10.063578133925] , [ 1125028800000 , 10.092168197096] , [ 1125288000000 , 11.425332826805] , [ 1125374400000 , 11.49024405204] , [ 1125460800000 , 11.847043591601] , [ 1125547200000 , 12.341499621531] , [ 1125633600000 , 13.208791891706] , [ 1125979200000 , 13.155861408583] , [ 1126065600000 , 11.911965866601] , [ 1126152000000 , 12.953834087165] , [ 1126238400000 , 12.856533132654] , [ 1126497600000 , 12.940008664349] , [ 1126584000000 , 10.810866385287] , [ 1126670400000 , 10.973556610848] , [ 1126756800000 , 12.582138606639] , [ 1126843200000 , 12.650714589043] , [ 1127102400000 , 13.013957513335] , [ 1127188800000 , 13.163316212612] , [ 1127275200000 , 11.416364972768] , [ 1127361600000 , 10.835976336822] , [ 1127448000000 , 9.7006107541751] , [ 1127707200000 , 9.7685241168158] , [ 1127793600000 , 9.3732947590662] , [ 1127880000000 , 9.2216231957865] , [ 1127966400000 , 10.092701100776] , [ 1128052800000 , 9.2356589292827] , [ 1128312000000 , 9.1055558285159] , [ 1128398400000 , 9.1412763328139] , [ 1128484800000 , 9.3062736540434] , [ 1128571200000 , 9.3543243796744] , [ 1128657600000 , 9.7437842378865] , [ 1128916800000 , 9.1883856015226] , [ 1129003200000 , 9.6023298087782] , [ 1129089600000 , 10.86668509683] , [ 1129176000000 , 8.8392624859772] , [ 1129262400000 , 8.5741250422724] , [ 1129521600000 , 8.4989710714635] , [ 1129608000000 , 7.0284805944926] , [ 1129694400000 , 3.6397565244999] , [ 1129780800000 , 7.5405388385658] , [ 1129867200000 , 6.7328974750621] , [ 1130126400000 , 5.3400903357111] , [ 1130212800000 , 5.4533951253299] , [ 1130299200000 , 5.4269628907864] , [ 1130385600000 , 5.5205382106251] , [ 1130472000000 , 5.4156510035115] , [ 1130734800000 , 5.4054697237045] , [ 1130821200000 , 7.2177042075125] , [ 1130907600000 , 8.9090349293151] , [ 1130994000000 , 8.9031546350938] , [ 1131080400000 , 8.9096034138594] , [ 1131339600000 , 8.8638988480676] , [ 1131426000000 , 8.1621700358637] , [ 1131512400000 , 8.1302336975502] , [ 1131598800000 , 8.0335618127897] , [ 1131685200000 , 8.1331735206501] , [ 1131944400000 , 5.966288023114] , [ 1132030800000 , 5.4209823475156] , [ 1132117200000 , 5.6940281837075] , [ 1132203600000 , 6.7440119020934] , [ 1132290000000 , 7.2785071294657] , [ 1132549200000 , 7.4169981579086] , [ 1132635600000 , 9.4245066343415] , [ 1132722000000 , 9.7019265098101] , [ 1132894800000 , 10.189564992252] , [ 1133154000000 , 10.57095833167] , [ 1133240400000 , 10.708856336907] , [ 1133326800000 , 10.081248274518] , [ 1133413200000 , 10.109272939708] , [ 1133499600000 , 11.322361881796] , [ 1133758800000 , 12.814805654611] , [ 1133845200000 , 12.900810741037] , [ 1133931600000 , 13.010116589906] , [ 1134018000000 , 10.387972623978] , [ 1134104400000 , 8.4731654864527] , [ 1134363600000 , 7.7234731996378] , [ 1134450000000 , 7.7305367712931] , [ 1134536400000 , 4.8069015518006] , [ 1134622800000 , 4.7710398734634] , [ 1134709200000 , 4.8510729154791] , [ 1134968400000 , 4.8635564263195] , [ 1135054800000 , 4.8249363137982] , [ 1135141200000 , 4.8129423160495] , [ 1135227600000 , 4.8256967203712] , [ 1135314000000 , 5.9804600903972] , [ 1135659600000 , 0.8173100806157] , [ 1135746000000 , 6.0331955471104] , [ 1135832400000 , 4.8928522985193] , [ 1135918800000 , 6.6189261096591] , [ 1136264400000 , 4.9946607124478] , [ 1136350800000 , 5.0479429761554] , [ 1136437200000 , 5.3663344434659] , [ 1136523600000 , 7.2497652482159] , [ 1136782800000 , 7.2204011465255] , [ 1136869200000 , 5.6444644889243] , [ 1136955600000 , 4.0636727294028] , [ 1137042000000 , 4.7667519933808] , [ 1137128400000 , 6.4566130334218] , [ 1137474000000 , 0.46213102439786] , [ 1137560400000 , 4.7867008666436] , [ 1137646800000 , 4.7196853133787] , [ 1137733200000 , 8.1322371421911] , [ 1137992400000 , 4.7602603257673] , [ 1138078800000 , 4.695642201985] , [ 1138165200000 , 4.7387579945565] , [ 1138251600000 , 4.7015447750857] , [ 1138338000000 , 4.7457420968044] , [ 1138597200000 , 4.7852686131646] , [ 1138683600000 , 4.8550998785219] , [ 1138770000000 , 4.2395266341639] , [ 1138856400000 , 4.2904690761142] , [ 1138942800000 , 1.8851906086774] , [ 1139202000000 , 1.9011137411197] , [ 1139288400000 , 1.8498164674396] , [ 1139374800000 , 1.8319241759015] , [ 1139461200000 , 1.8745969263792] , [ 1139547600000 , 1.819195676722] , [ 1139806800000 , 1.786022665598] , [ 1139893200000 , 1.791896384862] , [ 1139979600000 , 1.782825474546] , [ 1140066000000 , 2.5588150262676] , [ 1140152400000 , 1.7941891666109] , [ 1140498000000 , 2.9138430005023] , [ 1140584400000 , 2.8847667879212] , [ 1140670800000 , 2.8554441099732] , [ 1140757200000 , 2.9027958918691] , [ 1141016400000 , 3.493874460456] , [ 1141102800000 , 2.9167500744015] , [ 1141189200000 , 4.0589336129841] , [ 1141275600000 , 4.1160395032903] , [ 1141362000000 , 4.1056707482914] , [ 1141621200000 , 4.0615618794864] , [ 1141707600000 , 4.0475590942139] , [ 1141794000000 , 3.9779920546415] , [ 1141880400000 , 4.0186341814335] , [ 1141966800000 , 3.935255409221] , [ 1142226000000 , 3.9658417151816] , [ 1142312400000 , 3.9573862864997] , [ 1142398800000 , 3.9621406560117] , [ 1142485200000 , 3.9643591225142] , [ 1142571600000 , 3.9336232385745] , [ 1142830800000 , 3.941074358239] , [ 1142917200000 , 3.9657882597178] , [ 1143003600000 , 3.9280800216791] , [ 1143090000000 , 3.9439915039484] , [ 1143176400000 , 4.0122436243806] , [ 1143435600000 , 4.0669378768976] , [ 1143522000000 , 4.0912438715018] , [ 1143608400000 , 4.0713504655543] , [ 1143694800000 , 6.0268796793529] , [ 1143781200000 , 5.968838437088] , [ 1144036800000 , 6.0484445914947] , [ 1144123200000 , 5.97778262297] , [ 1144209600000 , 7.4463648666009] , [ 1144296000000 , 8.7206360921576] , [ 1144382400000 , 8.7039952290916] , [ 1144641600000 , 13.401047031354] , [ 1144728000000 , 13.561502328224] , [ 1144814400000 , 14.997500543318] , [ 1144900800000 , 10.517117265656] , [ 1145246400000 , 12.838892214224] , [ 1145332800000 , 13.662576131421] , [ 1145419200000 , 13.854149552099] , [ 1145505600000 , 13.953085296369] , [ 1145592000000 , 17.604995370906] , [ 1145851200000 , 15.281466288386] , [ 1145937600000 , 15.139059941931] , [ 1146024000000 , 13.456279853441] , [ 1146110400000 , 9.4893340412739] , [ 1146196800000 , 6.1328426234] , [ 1146456000000 , 4.7574059901657] , [ 1146542400000 , 1.919412667311] , [ 1146628800000 , 3.0164152643481] , [ 1146715200000 , 3.2117070539049] , [ 1146801600000 , 3.4975758799316] , [ 1147060800000 , 3.4286040633737] , [ 1147147200000 , 4.0262269231406] , [ 1147233600000 , 6.9344709389752] , [ 1147320000000 , 8.0544533159695] , [ 1147406400000 , 8.045091501052] , [ 1147665600000 , 3.3760469310513] , [ 1147752000000 , 3.3994591584674] , [ 1147838400000 , 3.6923503668838] , [ 1147924800000 , 3.7215257839535] , [ 1148011200000 , 2.9137465847263] , [ 1148270400000 , 2.9409020632425] , [ 1148356800000 , 3.0486366902688] , [ 1148443200000 , 2.948247556144] , [ 1148529600000 , 2.9415183975016] , [ 1148616000000 , 2.9384894667669] , [ 1148961600000 , 3.0200964290604] , [ 1149048000000 , 2.948992015432] , [ 1149134400000 , 2.8069659223142] , [ 1149220800000 , 2.8366590485029] , [ 1149480000000 , 2.8757950742515] , [ 1149566400000 , 2.8466144762098] , [ 1149652800000 , 2.8480720110885] , [ 1149739200000 , 2.7926618205686] , [ 1149825600000 , 19.747227947692] , [ 1150084800000 , 2.8996092610008] , [ 1150171200000 , 15.785309261632] , [ 1150257600000 , 2.797061964531] , [ 1150344000000 , 2.7456202221531] , [ 1150430400000 , 2.7905391199606] , [ 1150689600000 , 2.7416962751862] , [ 1150776000000 , 2.8492790552625] , [ 1150862400000 , 3.1915238690065] , [ 1150948800000 , 3.8766915795871] , [ 1151035200000 , 3.8827084733311] , [ 1151294400000 , 3.9374605868536] , [ 1151380800000 , 3.9563523816199] , [ 1151467200000 , 4.5608262249523] , [ 1151553600000 , 4.5763484834063] , [ 1151640000000 , 4.6763211979752] , [ 1151899200000 , 4.6520117737883] , [ 1152072000000 , 4.8429368640414] , [ 1152158400000 , 4.9768643534564] , [ 1152244800000 , 6.1305481840025] , [ 1152504000000 , 5.175446146237] , [ 1152590400000 , 5.2358778184994] , [ 1152676800000 , 5.2689365647386] , [ 1152763200000 , 6.8644726301626] , [ 1152849600000 , 6.9886696147893] , [ 1153108800000 , 6.9036824079769] , [ 1153195200000 , 6.6654299027243] , [ 1153281600000 , 6.5146277540319] , [ 1153368000000 , 5.9036074266025] , [ 1153454400000 , 5.9569980600331] , [ 1153713600000 , 5.151836629581] , [ 1153800000000 , 5.1624061811956] , [ 1153886400000 , 5.0915473293374] , [ 1153972800000 , 3.9390742038109] , [ 1154059200000 , 4.0086836488803] , [ 1154318400000 , 4.0904620822168] , [ 1154404800000 , 5.5857330840014] , [ 1154491200000 , 5.5423138436635] , [ 1154577600000 , 4.3701912000671] , [ 1154664000000 , 4.5268035529361] , [ 1154923200000 , 4.5429812632733] , [ 1155009600000 , 3.1924514704355] , [ 1155096000000 , 3.2585958449797] , [ 1155182400000 , 2.5092653214667] , [ 1155268800000 , 2.7823668174575] , [ 1155528000000 , 2.7899839768294] , [ 1155614400000 , 1.2280265256445] , [ 1155700800000 , 1.3731826865885] , [ 1155787200000 , 1.3913280408006] , [ 1155873600000 , 1.3805979295051] , [ 1156132800000 , 1.3783460906009] , [ 1156219200000 , 1.4136073243985] , [ 1156305600000 , 1.4426603050026] , [ 1156392000000 , 1.4078447541276] , [ 1156478400000 , 1.3867707515587] , [ 1156737600000 , 0.80908361335597] , [ 1156824000000 , 0.82614827066555] , [ 1156910400000 , 0.82636153187655] , [ 1156996800000 , 0.82137686952494] , [ 1157083200000 , 0.83771474955879] , [ 1157428800000 , 0.71853983630983] , [ 1157515200000 , 0.88451206960144] , [ 1157601600000 , 0.89041250100159] , [ 1157688000000 , 0.92422347330851] , [ 1157947200000 , 0.94790448435661] , [ 1158033600000 , 0.99254859613543] , [ 1158120000000 , 0.42574623937435] , [ 1158206400000 , 0.45351432741561] , [ 1158292800000 , 0.46138107990096] , [ 1158552000000 , 0.44336340077374] , [ 1158638400000 , 0.53200657672664] , [ 1158724800000 , 0.59158864677543] , [ 1158811200000 , 0.56376495959054] , [ 1158897600000 , 0.60648201286241] , [ 1159156800000 , 0.569990420922] , [ 1159243200000 , 0.58581269728219] , [ 1159329600000 , 0.50431281834244] , [ 1159416000000 , 0.50583966750551] , [ 1159502400000 , 0.4895803799904] , [ 1159761600000 , 0.57897307744147] , [ 1159848000000 , 0.67670533075932] , [ 1159934400000 , 0E+1] , [ 1160020800000 , 0] , [ 1160107200000 , 0] , [ 1160366400000 , 0] , [ 1160452800000 , 0] , [ 1160539200000 , 0] , [ 1160625600000 , 2.6824231157085] , [ 1160712000000 , 3.5357180105398] , [ 1160971200000 , 2.779732378209] , [ 1161057600000 , 2.2481389625883] , [ 1161144000000 , 2.2822601981901] , [ 1161230400000 , 2.6834226291218] , [ 1161316800000 , 2.5646940363316] , [ 1161576000000 , 2.7236799805971] , [ 1161662400000 , 2.336966957629] , [ 1161748800000 , 2.3130581428869] , [ 1161835200000 , 2.287999048227] , [ 1161921600000 , 2.3509786326822] , [ 1162184400000 , 1.7792168788316] , [ 1162270800000 , 1.7553609022196] , [ 1162357200000 , 1.5799074614674] , [ 1162443600000 , 4.8123124280397] , [ 1162530000000 , 2.3600410437418] , [ 1162789200000 , 1.5414605418287] , [ 1162875600000 , 1.5171799999929] , [ 1162962000000 , 1.6483752879253] , [ 1163048400000 , 1.8174773751897] , [ 1163134800000 , 2.338601742401] , [ 1163394000000 , 3.4064766262284] , [ 1163480400000 , 4.3765682782065] , [ 1163566800000 , 5.9472706375975] , [ 1163653200000 , 3.002279000454] , [ 1163739600000 , 3.000915308439] , [ 1163998800000 , 2.9999632994464] , [ 1164085200000 , 2.8555261167545] , [ 1164171600000 , 2.9559411117469] , [ 1164344400000 , 2.9957135108809] , [ 1164603600000 , 3.030157444187] , [ 1164690000000 , 3.0461908634861] , [ 1164776400000 , 3.0153795449063] , [ 1164862800000 , 3.0564722974476] , [ 1164949200000 , 13.898015051888] , [ 1165208400000 , 15.034122737263] , [ 1165294800000 , 20.667866091028] , [ 1165381200000 , 23.901400959877] , [ 1165467600000 , 19.019263370775] , [ 1165554000000 , 18.032280035866] , [ 1165813200000 , 17.980521041415] , [ 1165899600000 , 17.77329949168] , [ 1165986000000 , 18.899765136247] , [ 1166072400000 , 8.4289284499593] , [ 1166158800000 , 5.2257614390063] , [ 1166418000000 , 5.2738781861931] , [ 1166504400000 , 4.4073707190307] , [ 1166590800000 , 4.369483275726] , [ 1166677200000 , 4.3377863790761] , [ 1166763600000 , 8.9029231451486] , [ 1167109200000 , 5.6565826811189] , [ 1167195600000 , 7.091966322015] , [ 1167282000000 , 1.2808657722335] , [ 1167368400000 , 1.2781647956727] , [ 1167800400000 , 1.387333113251] , [ 1167886800000 , 1.4469839195287] , [ 1167973200000 , 1.3890766206796] , [ 1168232400000 , 1.3034980496425] , [ 1168318800000 , 0.15170435094422] , [ 1168405200000 , 0.1426197892194] , [ 1168491600000 , 0.17439719809086] , [ 1168578000000 , 0.14060689747674] , [ 1168923600000 , 2.5183898451669] , [ 1169010000000 , 0.16967705683268] , [ 1169096400000 , 1.9701237833631] , [ 1169182800000 , 0.1203001235101] , [ 1169442000000 , 0.097246075530886] , [ 1169528400000 , 0.09064402246569] , [ 1169614800000 , 1.7836438501198] , [ 1169701200000 , 2.5538891862371] , [ 1169787600000 , 0.093309983536929] , [ 1170046800000 , 2.8396943615562] , [ 1170133200000 , 0.072920309480308] , [ 1170219600000 , 0.071970926838522] , [ 1170306000000 , 0.066250289479512] , [ 1170392400000 , 0.064419931223455] , [ 1170651600000 , 0.057940687431428] , [ 1170738000000 , 0.053654661720143] , [ 1170824400000 , 0.047493833087224] , [ 1170910800000 , 0.038825846129865] , [ 1170997200000 , 0.090436937693049] , [ 1171256400000 , 0.057014488007131] , [ 1171342800000 , 0.053840708739557] , [ 1171429200000 , 1.2678503010858] , [ 1171515600000 , 1.3031994669332] , [ 1171602000000 , 3.5861789064601] , [ 1171947600000 , 6.4588538863173] , [ 1172034000000 , 4.4816367084048] , [ 1172120400000 , 16.698500302881] , [ 1172206800000 , 44.184731059072] , [ 1172466000000 , 17.608795545871] , [ 1172552400000 , 11.175580771574] , [ 1172638800000 , 10.702030882608] , [ 1172725200000 , 7.8709426150369] , [ 1172811600000 , 11.918815678079] , [ 1173070800000 , 12.600695409504] , [ 1173157200000 , 11.126768690864] , [ 1173243600000 , 11.283575650439] , [ 1173330000000 , 18.950793290736] , [ 1173416400000 , 23.37784104408] , [ 1173672000000 , 23.129654653574] , [ 1173758400000 , 24.900211313236] , [ 1173844800000 , 17.957868206384] , [ 1173931200000 , 18.434107763401] , [ 1174017600000 , 15.331270302437] , [ 1174276800000 , 15.446263046099] , [ 1174363200000 , 9.954232039295] , [ 1174449600000 , 3.4565369872674] , [ 1174536000000 , 3.460955478627] , [ 1174622400000 , 6.4657608529261] , [ 1174881600000 , 14.270775124143] , [ 1174968000000 , 6.460730633443] , [ 1175054400000 , 12.269126166973] , [ 1175140800000 , 16.023432906777] , [ 1175227200000 , 16.609582800146] , [ 1175486400000 , 13.970578817167] , [ 1175572800000 , 12.085620578978] , [ 1175659200000 , 11.747424008608] , [ 1175745600000 , 10.782672638525] , [ 1176091200000 , 11.637773514541] , [ 1176177600000 , 13.493297897413] , [ 1176264000000 , 9.709593164293] , [ 1176350400000 , 6.7510233936491] , [ 1176436800000 , 9.3392355486568] , [ 1176696000000 , 5.602219034106] , [ 1176782400000 , 6.1992130361513] , [ 1176868800000 , 8.2421634182024] , [ 1176955200000 , 8.2548363560006] , [ 1177041600000 , 5.6380640228977] , [ 1177300800000 , 5.6051547259257] , [ 1177387200000 , 5.5040817068349] , [ 1177473600000 , 5.4810771243668] , [ 1177560000000 , 7.3649871653759] , [ 1177646400000 , 5.2703171496882] , [ 1177905600000 , 5.309308827205] , [ 1177992000000 , 4.539861133059] , [ 1178078400000 , 4.5475464336504] , [ 1178164800000 , 7.5945088176983] , [ 1178251200000 , 8.8774939921708] , [ 1178510400000 , 8.8767810404494] , [ 1178596800000 , 12.645780632808] , [ 1178683200000 , 11.016949217979] , [ 1178769600000 , 8.4422707174603] , [ 1178856000000 , 4.6822791957922] , [ 1179115200000 , 4.5327911119388] , [ 1179201600000 , 4.2920095636821] , [ 1179288000000 , 4.4200896629003] , [ 1179374400000 , 14.00038161468] , [ 1179460800000 , 0] , [ 1179720000000 , 18.943379636877] , [ 1179806400000 , 20.585384483123] , [ 1179892800000 , 20.646063407583] , [ 1179979200000 , 20.80823351821] , [ 1180065600000 , 7.4538422873799] , [ 1180411200000 , 10.336291303152] , [ 1180497600000 , 14.540867658982] , [ 1180584000000 , 6.8535014243623] , [ 1180670400000 , 8.989407227217] , [ 1180929600000 , 10.628958779903] , [ 1181016000000 , 9.1755300530468] , [ 1181102400000 , 11.359648612598] , [ 1181188800000 , 11.542993844626] , [ 1181275200000 , 12.03503036654] , [ 1181534400000 , 4.5918795656533] , [ 1181620800000 , 4.5740571909219] , [ 1181707200000 , 4.6003738821388] , [ 1181793600000 , 4.7259483344412] , [ 1181880000000 , 4.7687241404973] , [ 1182139200000 , 4.7537464357003] , [ 1182225600000 , 4.7300488241078] , [ 1182312000000 , 5.4244432062156] , [ 1182398400000 , 5.3944820995915] , [ 1182484800000 , 8.4952830437349] , [ 1182744000000 , 8.5051292553298] , [ 1182830400000 , 17.814873412087] , [ 1182916800000 , 13.13881023684] , [ 1183003200000 , 8.9611485633662] , [ 1183089600000 , 9.3527444961228] , [ 1183348800000 , 10.668125727641] , [ 1183435200000 , 10.504164125381] , [ 1183608000000 , 13.016543896951] , [ 1183694400000 , 31.144095953308] , [ 1183953600000 , 31.210090074789] , [ 1184040000000 , 31.42769092428] , [ 1184126400000 , 33.424093170975] , [ 1184212800000 , 24.406723188437] , [ 1184299200000 , 10.874507185059] , [ 1184558400000 , 9.8511919117572] , [ 1184644800000 , 9.7155845603641] , [ 1184731200000 , 8.8338529286599] , [ 1184817600000 , 13.516322433336] , [ 1184904000000 , 10.447712114713] , [ 1185163200000 , 10.457566743565] , [ 1185249600000 , 10.29336915461] , [ 1185336000000 , 9.7710600471723] , [ 1185422400000 , 5.4883357572287] , [ 1185508800000 , 5.4010377274909] , [ 1185768000000 , 6.9844114910505] , [ 1185854400000 , 17.466090644865] , [ 1185940800000 , 19.692295300726] , [ 1186027200000 , 6.4489002602679] , [ 1186113600000 , 19.19718137016] , [ 1186372800000 , 16.6707868357] , [ 1186459200000 , 3.1168058155453] , [ 1186545600000 , 4.2297699200172] , [ 1186632000000 , 13.095553953084] , [ 1186718400000 , 4.2948834737196] , [ 1186977600000 , 9.271225623467] , [ 1187064000000 , 3.0320057977494] , [ 1187150400000 , 3.0567606228017] , [ 1187236800000 , 1.455939502163] , [ 1187323200000 , 1.4385942827968] , [ 1187582400000 , 1.4579119812098] , [ 1187668800000 , 1.4347580634976] , [ 1187755200000 , 9.6632762551433] , [ 1187841600000 , 1.4424459151181] , [ 1187928000000 , 1.4277539902055] , [ 1188187200000 , 1.4005401138408] , [ 1188273600000 , 18.966305312184] , [ 1188360000000 , 18.119060249321] , [ 1188446400000 , 20.893542091323] , [ 1188532800000 , 14.470326771961] , [ 1188878400000 , 0] , [ 1188964800000 , 0] , [ 1189051200000 , 0] , [ 1189137600000 , 0] , [ 1189396800000 , 0] , [ 1189483200000 , 0] , [ 1189569600000 , 0] , [ 1189656000000 , 0E+1] , [ 1189742400000 , 11.151150089488] , [ 1190001600000 , 0] , [ 1190088000000 , 0] , [ 1190174400000 , 0] , [ 1190260800000 , 6.652142424709] , [ 1190347200000 , 6.5493593469205] , [ 1190606400000 , 11.496081663409] , [ 1190692800000 , 10.704111549006] , [ 1190779200000 , 7.2363597002465] , [ 1190865600000 , 8.0792846697389] , [ 1190952000000 , 22.25651099443] , [ 1191211200000 , 21.550494247088] , [ 1191297600000 , 4.9343086604033] , [ 1191384000000 , 24.181509556623] , [ 1191470400000 , 26.284911189232] , [ 1191556800000 , 25.239843004115] , [ 1191816000000 , 21.506762281943] , [ 1191902400000 , 31.388030695109] , [ 1191988800000 , 8.6157444685589] , [ 1192075200000 , 6.7640035301635] , [ 1192161600000 , 24.964054048319] , [ 1192420800000 , 45.700325049525] , [ 1192507200000 , 7.517661863009] , [ 1192593600000 , 21.237355797657] , [ 1192680000000 , 7.1235509804073] , [ 1192766400000 , 9.3828262178039] , [ 1193025600000 , 9.6963440480266] , [ 1193112000000 , 16.373531960039] , [ 1193198400000 , 3.8948899021831] , [ 1193284800000 , 4.9107208916799] , [ 1193371200000 , 35.776852900287] , [ 1193630400000 , 5.6952192551352] , [ 1193716800000 , 13.598229030437] , [ 1193803200000 , 4.4441589718617] , [ 1193889600000 , 43.839048634072] , [ 1193976000000 , 38.028827006764] , [ 1194238800000 , 36.654688949042] , [ 1194325200000 , 11.06069509605] , [ 1194411600000 , 11.414359688131] , [ 1194498000000 , 11.322914493047] , [ 1194584400000 , 26.784712510423] , [ 1194843600000 , 24.692986411163] , [ 1194930000000 , 23.150204872187] , [ 1195016400000 , 10.279725353046] , [ 1195102800000 , 14.160111490057] , [ 1195189200000 , 3.1044124658761] , [ 1195448400000 , 1.8572248938483] , [ 1195534800000 , 34.155668333938] , [ 1195621200000 , 22.422089683576] , [ 1195794000000 , 19.84684746526] , [ 1196053200000 , 18.151255589291] , [ 1196139600000 , 16.800462518017] , [ 1196226000000 , 33.832044228345] , [ 1196312400000 , 31.015169345761] , [ 1196398800000 , 30.48932877877] , [ 1196658000000 , 23.148119421303] , [ 1196744400000 , 28.241056479159] , [ 1196830800000 , 16.772434535307] , [ 1196917200000 , 1.7065866182462] , [ 1197003600000 , 16.380626643157] , [ 1197262800000 , 16.232860048538] , [ 1197349200000 , 1.7293115762353] , [ 1197435600000 , 1.7098102517254] , [ 1197522000000 , 21.419607181657] , [ 1197608400000 , 21.43328592356] , [ 1197867600000 , 21.668650130421] , [ 1197954000000 , 30.926905842551] , [ 1198040400000 , 29.61527740791] , [ 1198126800000 , 25.897765882671] , [ 1198213200000 , 4.5488729345191] , [ 1198472400000 , 1.7238120892471] , [ 1198645200000 , 1.7217321338302] , [ 1198731600000 , 1.7627054395636] , [ 1198818000000 , 1.7484807546433] , [ 1199077200000 , 1.7145498953412] , [ 1199250000000 , 0] , [ 1199336400000 , 7.3007973762395] , [ 1199422800000 , 7.4043175530951] , [ 1199682000000 , 7.2266628630524] , [ 1199768400000 , 11.851801669846] , [ 1199854800000 , 11.648852225991] , [ 1199941200000 , 11.378288591693] , [ 1200027600000 , 11.406302658644] , [ 1200286800000 , 11.419837120392] , [ 1200373200000 , 12.889677988621] , [ 1200459600000 , 12.718508965567] , [ 1200546000000 , 12.834488888354] , [ 1200632400000 , 12.872299326712] , [ 1200978000000 , 12.927125312502] , [ 1201064400000 , 31.673673103614] , [ 1201150800000 , 12.488428578073] , [ 1201237200000 , 12.861960245871] , [ 1201496400000 , 15.297131052375] , [ 1201582800000 , 7.0979530309852] , [ 1201669200000 , 19.26922145937] , [ 1201755600000 , 16.315331049451] , [ 1201842000000 , 25.048406090361] , [ 1202101200000 , 22.842841327371] , [ 1202187600000 , 25.727024942996] , [ 1202274000000 , 27.346662764257] , [ 1202360400000 , 23.63663944367] , [ 1202446800000 , 13.279977843876] , [ 1202706000000 , 21.825420957608] , [ 1202792400000 , 21.572363568444] , [ 1202878800000 , 30.703412161079] , [ 1202965200000 , 25.093202609083] , [ 1203051600000 , 34.513697350059] , [ 1203397200000 , 26.65466718946] , [ 1203483600000 , 26.237161386764] , [ 1203570000000 , 29.909392771291] , [ 1203656400000 , 23.502969355307] , [ 1203915600000 , 22.336394320201] , [ 1204002000000 , 17.924538077553] , [ 1204088400000 , 21.588154878031] , [ 1204174800000 , 22.800365445041] , [ 1204261200000 , 24.008559621935] , [ 1204520400000 , 25.752632744689] , [ 1204606800000 , 21.427238094735] , [ 1204693200000 , 14.078434025614] , [ 1204779600000 , 14.099025273452] , [ 1204866000000 , 13.956919802432] , [ 1205121600000 , 9.6466954658888] , [ 1205208000000 , 11.020170303092] , [ 1205294400000 , 11.177636405057] , [ 1205380800000 , 11.208918940107] , [ 1205467200000 , 18.657122787639] , [ 1205726400000 , 7.8324562692057] , [ 1205812800000 , 7.6282309363716] , [ 1205899200000 , 1.3110417995852] , [ 1205985600000 , 0.69253968653589] , [ 1206331200000 , 19.295131255226] , [ 1206417600000 , 3.1070317703761] , [ 1206504000000 , 3.132785261052] , [ 1206590400000 , 3.2169997685507] , [ 1206676800000 , 4.659120097841] , [ 1206936000000 , 8.2150523548054] , [ 1207022400000 , 7.0045486909585] , [ 1207108800000 , 2.8502649001201] , [ 1207195200000 , 8.5659439033653] , [ 1207281600000 , 2.9005955343095] , [ 1207540800000 , 2.9292805815067] , [ 1207627200000 , 8.8702913283124] , [ 1207713600000 , 13.351009411784] , [ 1207800000000 , 14.240912285062] , [ 1207886400000 , 4.4761684530362] , [ 1208145600000 , 4.0938282238997] , [ 1208232000000 , 13.022581699737] , [ 1208318400000 , 18.485313694325] , [ 1208404800000 , 21.801915576764] , [ 1208491200000 , 5.0372960327402] , [ 1208750400000 , 4.9660078722839] , [ 1208836800000 , 5.0242365767748] , [ 1208923200000 , 9.7226047132493] , [ 1209009600000 , 18.745544096839] , [ 1209096000000 , 7.0846958133547] , [ 1209355200000 , 7.6864740246385] , [ 1209441600000 , 4.8228736488467] , [ 1209528000000 , 9.9576530883914] , [ 1209614400000 , 3.005233883599] , [ 1209700800000 , 0.68873396407972] , [ 1209960000000 , 5.3288686786249] , [ 1210046400000 , 3.7254288453765] , [ 1210132800000 , 0.61060511367277] , [ 1210219200000 , 0.88311893887446] , [ 1210305600000 , 0.89673912717629] , [ 1210564800000 , 4.0370104394005] , [ 1210651200000 , 1.1438716143645] , [ 1210737600000 , 4.8943792252831] , [ 1210824000000 , 1.1211438159548] , [ 1210910400000 , 7.4146362302054] , [ 1211169600000 , 0.62592255888944] , [ 1211256000000 , 0.62767918903946] , [ 1211342400000 , 0.65252417412164] , [ 1211428800000 , 0.63681796043062] , [ 1211515200000 , 0.64078216622934] , [ 1211860800000 , 0.61856661491052] , [ 1211947200000 , 0.040457512312218] , [ 1212033600000 , 3.1744344901048] , [ 1212120000000 , 0.043386153951564] , [ 1212379200000 , 0.037416080029552] , [ 1212465600000 , 0.036208564062895] , [ 1212552000000 , 0.034429513297319] , [ 1212638400000 , 0.03598853197083] , [ 1212724800000 , 0.034314835427766] , [ 1212984000000 , 0.9247996649917] , [ 1213070400000 , 0.80570764610339] , [ 1213156800000 , 0.84768226660477] , [ 1213243200000 , 0.84516069243209] , [ 1213329600000 , 0.82422041719099] , [ 1213588800000 , 3.5485281610352] , [ 1213675200000 , 3.5666096114884] , [ 1213761600000 , 3.5850166087295] , [ 1213848000000 , 2.6669203234679] , [ 1213934400000 , 1.9322206731937] , [ 1214193600000 , 6.0346305017161] , [ 1214280000000 , 6.068610418399] , [ 1214366400000 , 5.9566599022118] , [ 1214452800000 , 1.1328054414901] , [ 1214539200000 , 8.4372479748449] , [ 1214798400000 , 8.5507111321931] , [ 1214884800000 , 6.0417351754615] , [ 1214971200000 , 4.6851988331241] , [ 1215057600000 , 4.7466368030043] , [ 1215403200000 , 4.6401217726266] , [ 1215489600000 , 4.3929570335133] , [ 1215576000000 , 4.4902593438217] , [ 1215662400000 , 0.86423503954477] , [ 1215748800000 , 0.8965341056628] , [ 1216008000000 , 0.9042750300334] , [ 1216094400000 , 9.7110694396787] , [ 1216180800000 , 2.9842346936245] , [ 1216267200000 , 2.8803467730387] , [ 1216353600000 , 2.8923231728124] , [ 1216612800000 , 10.302189764673] , [ 1216699200000 , 1.6276311379318] , [ 1216785600000 , 2.8091420986688] , [ 1216872000000 , 5.0043216249239] , [ 1216958400000 , 4.8948671918161] , [ 1217217600000 , 5.0039528512305] , [ 1217304000000 , 2.2542029777355] , [ 1217390400000 , 4.4963549113593] , [ 1217476800000 , 4.4452620614878] , [ 1217563200000 , 0E+1] , [ 1217822400000 , 2.1560055296562] , [ 1217908800000 , 2.0716387924969] , [ 1217995200000 , 4.758213776442] , [ 1218081600000 , 2.4926804812625] , [ 1218168000000 , 2.3418408892938] , [ 1218427200000 , 2.3138056281813] , [ 1218513600000 , 4.5766776929846] , [ 1218600000000 , 4.8296317377562] , [ 1218686400000 , 4.7649581033755] , [ 1218772800000 , 4.7492551018869] , [ 1219032000000 , 5.7544050941317] , [ 1219118400000 , 2.9569643056404] , [ 1219204800000 , 18.244922281458] , [ 1219291200000 , 10.574286406937] , [ 1219377600000 , 10.395808855373] , [ 1219636800000 , 10.924808846938] , [ 1219723200000 , 0E+1] , [ 1219809600000 , 0.53654662105493] , [ 1219896000000 , 2.9052446048062] , [ 1219982400000 , 5.3552605736185] , [ 1220328000000 , 12.018517208769] , [ 1220414400000 , 13.647134146831] , [ 1220500800000 , 17.786073307781] , [ 1220587200000 , 13.412919954101] , [ 1220846400000 , 10.791317859821] , [ 1220932800000 , 6.6988478353327] , [ 1221019200000 , 13.684264265774] , [ 1221105600000 , 21.961878938582] , [ 1221192000000 , 9.7427861869276] , [ 1221451200000 , 6.3268355523899] , [ 1221537600000 , 5.9565161695134] , [ 1221624000000 , 6.5054173496002] , [ 1221710400000 , 9.5318245347596] , [ 1221796800000 , 7.9806692731403] , [ 1222056000000 , 12.386654129753] , [ 1222142400000 , 10.798968817846] , [ 1222228800000 , 13.640073947636] , [ 1222315200000 , 9.3154824170404] , [ 1222401600000 , 8.1893528745798] , [ 1222660800000 , 7.9487029756044] , [ 1222747200000 , 0E+1] , [ 1222833600000 , 0.62257729423205] , [ 1222920000000 , 0.63822450829594] , [ 1223006400000 , 0.64992976756028] , [ 1223265600000 , 16.38956634512] , [ 1223352000000 , 3.1334295349777] , [ 1223438400000 , 4.5556340538731] , [ 1223524800000 , 4.575086203882] , [ 1223611200000 , 3.4367517616623] , [ 1223870400000 , 3.2118637273257] , [ 1223956800000 , 8.5544847718949] , [ 1224043200000 , 4.8626977832673] , [ 1224129600000 , 0E+1] , [ 1224216000000 , 6.5923527094405] , [ 1224475200000 , 17.887929510513] , [ 1224561600000 , 9.6970766835845E-9] , [ 1224648000000 , 12.16195259299] , [ 1224734400000 , 11.829626134238] , [ 1224820800000 , 0] , [ 1225080000000 , 0] , [ 1225166400000 , 12.519740444381] , [ 1225252800000 , 9.8080194525088E-9] , [ 1225339200000 , 0] , [ 1225425600000 , 0] , [ 1225688400000 , 3.186156723403] , [ 1225774800000 , 1.5298697304129] , [ 1225861200000 , 6.4408413828937] , [ 1225947600000 , 9.4400357312974] , [ 1226034000000 , 3.906373932269] , [ 1226293200000 , 21.418568194884] , [ 1226379600000 , 17.06491897991] , [ 1226466000000 , 1.9480018168095] , [ 1226552400000 , 1.9302979102606] , [ 1226638800000 , 1.9402803095639] , [ 1226898000000 , 0.94539707618153] , [ 1226984400000 , 11.401232860339] , [ 1227070800000 , 11.15809406856] , [ 1227157200000 , 18.984697337731] , [ 1227243600000 , 7.9897186183294] , [ 1227502800000 , 18.874995066617] , [ 1227589200000 , 15.423773770864] , [ 1227675600000 , 14.307267135477] , [ 1227848400000 , 6.96521305646] , [ 1228107600000 , 26.186806641883] , [ 1228194000000 , 6.509259095166] , [ 1228280400000 , 2.8800659812341] , [ 1228366800000 , 11.082998933418] , [ 1228453200000 , 1.6750156722765] , [ 1228712400000 , 0E+1] , [ 1228798800000 , 0] , [ 1228885200000 , 6.1966346615722] , [ 1228971600000 , 1.3849204099975E-8] , [ 1229058000000 , 1.3751815036566E-8] , [ 1229317200000 , 8.5599725937221] , [ 1229403600000 , 6.5473068495741] , [ 1229490000000 , 2.2717575882483] , [ 1229576400000 , 2.3669712907469] , [ 1229662800000 , 1.7069095438093] , [ 1229922000000 , 1.6356138435014] , [ 1230008400000 , 1.608899780063] , [ 1230094800000 , 1.4601760980515] , [ 1230267600000 , 1.5555022403615] , [ 1230526800000 , 8.3586985283287] , [ 1230613200000 , 1.9899740249037] , [ 1230699600000 , 0E+1] , [ 1230872400000 , 5.3732048903953] , [ 1231131600000 , 8.2361845324091] , [ 1231218000000 , 14.149240856601] , [ 1231304400000 , 11.455834240447] , [ 1231390800000 , 10.80499732152] , [ 1231477200000 , 10.953103405927] , [ 1231736400000 , 2.3670466106505] , [ 1231822800000 , 19.063632670096] , [ 1231909200000 , 18.904780398333] , [ 1231995600000 , 2.2458819235545] , [ 1232082000000 , 2.3896214881456] , [ 1232427600000 , 2.3717718461595] , [ 1232514000000 , 2.4563599121471] , [ 1232600400000 , 2.4643157323003] , [ 1232686800000 , 0.079977774076748] , [ 1232946000000 , 0.082554982798605] , [ 1233032400000 , 0.05995484797002] , [ 1233118800000 , 2.6431814311508] , [ 1233205200000 , 12.968248919573] , [ 1233291600000 , 5.6080038133035] , [ 1233550800000 , 4.1030953709746] , [ 1233637200000 , 8.4091393875674] , [ 1233723600000 , 13.199034588283] , [ 1233810000000 , 12.896187479682] , [ 1233896400000 , 14.704953084268] , [ 1234155600000 , 8.2204041077591] , [ 1234242000000 , 8.0276226205225] , [ 1234328400000 , 7.9190999154763] , [ 1234414800000 , 2.0744739273925] , [ 1234501200000 , 1.7423668091698] , [ 1234846800000 , 12.421406241189] , [ 1234933200000 , 10.872128416666] , [ 1235019600000 , 4.6612496738139] , [ 1235106000000 , 6.0519794807685] , [ 1235365200000 , 6.1233823525377] , [ 1235451600000 , 32.008318674774] , [ 1235538000000 , 4.5922543342157] , [ 1235624400000 , 3.6957340651825] , [ 1235710800000 , 3.71878200929] , [ 1235970000000 , 5.6745059336284] , [ 1236056400000 , 8.5432898114235] , [ 1236142800000 , 9.2411000879805] , [ 1236229200000 , 20.193111491624] , [ 1236315600000 , 22.532567808564] , [ 1236571200000 , 13.109073971821] , [ 1236657600000 , 28.284941694516] , [ 1236744000000 , 32.409228546948] , [ 1236830400000 , 21.441256730911] , [ 1236916800000 , 19.984460665658] , [ 1237176000000 , 9.3693582586361] , [ 1237262400000 , 4.5605304139394] , [ 1237348800000 , 12.088725534331] , [ 1237435200000 , 18.377661615464] , [ 1237521600000 , 12.896999510151] , [ 1237780800000 , 9.5899027276257] , [ 1237867200000 , 8.1097349963859] , [ 1237953600000 , 4.5941875548872] , [ 1238040000000 , 8.4547199152548] , [ 1238126400000 , 12.525748190414] , [ 1238385600000 , 11.152648772203] , [ 1238472000000 , 9.4003022518288] , [ 1238558400000 , 4.5549171966817] , [ 1238644800000 , 6.5025036145296] , [ 1238731200000 , 6.5728133707747] , [ 1238990400000 , 6.5126201116744] , [ 1239076800000 , 11.91084267986] , [ 1239163200000 , 6.6064755725635] , [ 1239249600000 , 6.5535279422691] , [ 1239595200000 , 6.5443086251902] , [ 1239681600000 , 6.7414636309647] , [ 1239768000000 , 7.0660483227062] , [ 1239854400000 , 6.9140365047207] , [ 1239940800000 , 0.68449942170777] , [ 1240200000000 , 4.0765048839462] , [ 1240286400000 , 4.0684380275311] , [ 1240372800000 , 0.68124578191151] , [ 1240459200000 , 0.68377467227995] , [ 1240545600000 , 0.68402646410275] , [ 1240804800000 , 0.67944617303807] , [ 1240891200000 , 0.68491304796702] , [ 1240977600000 , 0.67058967614253] , [ 1241064000000 , 0.66191934903029] , [ 1241150400000 , 0.65612869482368] , [ 1241409600000 , 0.64496658157576] , [ 1241496000000 , 0.65049454643312] , [ 1241582400000 , 0.64443137477478] , [ 1241668800000 , 2.0049662224861] , [ 1241755200000 , 1.9725073991976] , [ 1242014400000 , 1.958835607091] , [ 1242100800000 , 1.9872900638005] , [ 1242187200000 , 5.7482277178494] , [ 1242273600000 , 2.4370659685714] , [ 1242360000000 , 5.7216143960008] , [ 1242619200000 , 5.2049677315895] , [ 1242705600000 , 5.2103681873105] , [ 1242792000000 , 5.2137126340548] , [ 1242878400000 , 5.171723760152] , [ 1242964800000 , 5.23724467] , [ 1243310400000 , 3.9678164517853] , [ 1243396800000 , 5.5772236970217] , [ 1243483200000 , 0.65845452751353] , [ 1243569600000 , 2.3102867694053] , [ 1243828800000 , 3.8507466590185] , [ 1243915200000 , 5.5112206495367] , [ 1244001600000 , 4.4349674967258] , [ 1244088000000 , 3.9505389295321] , [ 1244174400000 , 2.5702748969213] , [ 1244433600000 , 0.65399322348227] , [ 1244520000000 , 0.64299785937821] , [ 1244606400000 , 0.64485618799924] , [ 1244692800000 , 8.2902621841086] , [ 1244779200000 , 11.947160143466] , [ 1245038400000 , 7.5111887893427] , [ 1245124800000 , 4.3623447852707] , [ 1245211200000 , 4.3185188827048] , [ 1245297600000 , 4.3151822352707] , [ 1245384000000 , 4.3124429740693] , [ 1245643200000 , 7.1776381803979] , [ 1245729600000 , 7.1924030640232] , [ 1245816000000 , 0.66312754304475] , [ 1245902400000 , 0.66228812289641] , [ 1245988800000 , 0.65782616909429] , [ 1246248000000 , 0.65403557211454] , [ 1246334400000 , 0.59883829833694] , [ 1246420800000 , 0.58472019697828] , [ 1246507200000 , 0.59332616301459] , [ 1246852800000 , 0.59315808007844] , [ 1246939200000 , 0.5993131101332] , [ 1247025600000 , 5.501358066333] , [ 1247112000000 , 0.60005399753714] , [ 1247198400000 , 0.60051790917818] , [ 1247457600000 , 0.59400671918334] , [ 1247544000000 , 0.5959215951087] , [ 1247630400000 , 0.58892795045543] , [ 1247716800000 , 0.58758770626686] , [ 1247803200000 , 0.58587949398228] , [ 1248062400000 , 0.58263995337336] , [ 1248148800000 , 0.58440608274831] , [ 1248235200000 , 6.7435071290752] , [ 1248321600000 , 0.576677267049] , [ 1248408000000 , 0.57387709049699] , [ 1248667200000 , 0.57211502323625] , [ 1248753600000 , 0.5708905907214] , [ 1248840000000 , 3.6167402006046] , [ 1248926400000 , 0.56866650585796] , [ 1249012800000 , 0.56865022934714] , [ 1249272000000 , 0.54964320986207] , [ 1249358400000 , 1.430692832223E-9] , [ 1249444800000 , 1.2051934544274] , [ 1249531200000 , 1.2072483112091] , [ 1249617600000 , 1.1835357729748] , [ 1249876800000 , 1.1835725753831] , [ 1249963200000 , 1.1670214207948] , [ 1250049600000 , 1.1712133489231] , [ 1250136000000 , 1.1741662612159] , [ 1250222400000 , 1.1313883400707] , [ 1250481600000 , 1.1313828684598] , [ 1250568000000 , 0E+1] , [ 1250654400000 , 2.1184705112498] , [ 1250740800000 , 2.1374293634466] , [ 1250827200000 , 2.2037310680564] , [ 1251086400000 , 2.2597649868689] , [ 1251172800000 , 2.2122635865678] , [ 1251259200000 , 3.2726580704974] , [ 1251345600000 , 2.197663052541] , [ 1251432000000 , 1.6916628637064] , [ 1251691200000 , 1.6975156371547] , [ 1251777600000 , 4.0400058354139] , [ 1251864000000 , 4.7749692172194] , [ 1251950400000 , 5.3254140265332] , [ 1252036800000 , 3.0831850408085] , [ 1252382400000 , 1.7813301829864] , [ 1252468800000 , 1.7683467908118] , [ 1252555200000 , 1.6134468659239] , [ 1252641600000 , 3.113042729206] , [ 1252900800000 , 1.4538139354139] , [ 1252987200000 , 0E+1] , [ 1253073600000 , 1.4653458834308] , [ 1253160000000 , 1.4574148737852] , [ 1253246400000 , 1.4525101942656] , [ 1253505600000 , 2.2958195081812] , [ 1253592000000 , 2.2993134672661] , [ 1253678400000 , 3.6812471872768] , [ 1253764800000 , 3.6154067532967] , [ 1253851200000 , 3.6132045554368] , [ 1254110400000 , 1.9657487891785] , [ 1254196800000 , 1.5108314653311] , [ 1254283200000 , 0E+1] , [ 1254369600000 , 0] , [ 1254456000000 , 3.5297031914329] , [ 1254715200000 , 0] , [ 1254801600000 , 1.9037985503048] , [ 1254888000000 , 2.6853233490137] , [ 1254974400000 , 0E+1] , [ 1255060800000 , 0] , [ 1255320000000 , 1.3093983930499] , [ 1255406400000 , 0E+1] , [ 1255492800000 , 0] , [ 1255579200000 , 0.79946716660831] , [ 1255665600000 , 1.6095337026792] , [ 1255924800000 , 0E+1] , [ 1256011200000 , 2.6328624804905] , [ 1256097600000 , 3.9852789145467] , [ 1256184000000 , 3.9527058136554] , [ 1256270400000 , 3.9661015902411] , [ 1256529600000 , 4.1874877464223] , [ 1256616000000 , 4.2063447600468] , [ 1256702400000 , 1.5493266183926] , [ 1256788800000 , 1.5609398082358] , [ 1256875200000 , 1.5766851423263] , [ 1257138000000 , 0E+1] , [ 1257224400000 , 0] , [ 1257310800000 , 0] , [ 1257397200000 , 0] , [ 1257483600000 , 0] , [ 1257742800000 , 0] , [ 1257829200000 , 1.4241804619506] , [ 1257915600000 , 2.2781605233931] , [ 1258002000000 , 1.4044119830969] , [ 1258088400000 , 1.4047637123134] , [ 1258347600000 , 10.143937425944] , [ 1258434000000 , 11.003691545936] , [ 1258520400000 , 11.760784823906] , [ 1258606800000 , 10.306309897772] , [ 1258693200000 , 11.080855554833] , [ 1258952400000 , 15.76032268301] , [ 1259038800000 , 15.65436243705] , [ 1259125200000 , 14.732736746758] , [ 1259298000000 , 12.115919080151] , [ 1259557200000 , 13.619735471784] , [ 1259643600000 , 10.204970840616] , [ 1259730000000 , 10.285523040042] , [ 1259816400000 , 10.479202437959] , [ 1259902800000 , 5.055265022425] , [ 1260162000000 , 3.5397057878171] , [ 1260248400000 , 3.5250113858685] , [ 1260334800000 , 4.3305866940283] , [ 1260421200000 , 4.3199834347402] , [ 1260507600000 , 2.7647914946991] , [ 1260766800000 , 2.7643611409788] , [ 1260853200000 , 2.7729892568035] , [ 1260939600000 , 2.8296302909464] , [ 1261026000000 , 2.7969861333383] , [ 1261112400000 , 6.6048975562059] , [ 1261371600000 , 8.746181038124] , [ 1261458000000 , 16.022215351694] , [ 1261544400000 , 16.904561941888] , [ 1261630800000 , 12.609225353851] , [ 1261976400000 , 7.0865369673667] , [ 1262062800000 , 7.1637422873121] , [ 1262149200000 , 7.1293442423118] , [ 1262235600000 , 7.172332867465] , [ 1262581200000 , 6.0831648432761] , [ 1262667600000 , 5.3414235611799] , [ 1262754000000 , 5.2588617110872] , [ 1262840400000 , 4.5969658850717] , [ 1262926800000 , 4.1688105678139] , [ 1263186000000 , 5.0503596181101] , [ 1263272400000 , 1.8297780633072] , [ 1263358800000 , 1.8265817946115] , [ 1263445200000 , 1.8312810227517] , [ 1263531600000 , 1.8205931329117] , [ 1263877200000 , 1.2224842537283] , [ 1263963600000 , 4.1804002832509] , [ 1264050000000 , 3.2104588461236] , [ 1264136400000 , 0.28086289348513] , [ 1264395600000 , 0.28389979501212] , [ 1264482000000 , 0.2810747431782] , [ 1264568400000 , 0.27367030729578] , [ 1264654800000 , 0.26239786969991] , [ 1264741200000 , 0.25864606583782] , [ 1265000400000 , 3.2604470661235] , [ 1265086800000 , 0.2683704779225] , [ 1265173200000 , 0.259443142774] , [ 1265259600000 , 8.8286025797799] , [ 1265346000000 , 0.25209653571845] , [ 1265605200000 , 0.25995355395898] , [ 1265691600000 , 0.26350794933532] , [ 1265778000000 , 0.26158878677637] , [ 1265864400000 , 0.27662310346392] , [ 1265950800000 , 1.86439916826] , [ 1266296400000 , 4.5618175868234] , [ 1266382800000 , 3.5650503806748] , [ 1266469200000 , 1.0046344877064] , [ 1266555600000 , 0.88733257672444] , [ 1266814800000 , 0.86975885107072] , [ 1266901200000 , 0.17323076719465] , [ 1266987600000 , 7.7748251765822] , [ 1267074000000 , 1.0430120261003E-8] , [ 1267160400000 , 0.04799934814101] , [ 1267419600000 , 0.047759171348484] , [ 1267506000000 , 0.045184333356078] , [ 1267592400000 , 0.055576477423304] , [ 1267678800000 , 0.055733260586805] , [ 1267765200000 , 3.0851538601192] , [ 1268024400000 , 5.9922257045574] , [ 1268110800000 , 5.9866401435488] , [ 1268197200000 , 0.10465280064721] , [ 1268283600000 , 0.12033113332845] , [ 1268370000000 , 0.10131610174581] , [ 1268625600000 , 0.11847049907095] , [ 1268712000000 , 2.1356139798799] , [ 1268798400000 , 0.11255193168905] , [ 1268884800000 , 0.13517428802701] , [ 1268971200000 , 0] , [ 1269230400000 , 0] , [ 1269316800000 , 0] , [ 1269403200000 , 0] , [ 1269489600000 , 0] , [ 1269576000000 , 0] , [ 1269835200000 , 0] , [ 1269921600000 , 0] , [ 1270008000000 , 0] , [ 1270094400000 , 0] , [ 1270440000000 , 2.850774857521] , [ 1270526400000 , 2.2589804639485] , [ 1270612800000 , 2.285267251354] , [ 1270699200000 , 2.3734120612322] , [ 1270785600000 , 2.3717822125548] , [ 1271044800000 , 4.2625353368786] , [ 1271131200000 , 2.3564591095437] , [ 1271217600000 , 2.3612597404689] , [ 1271304000000 , 2.355189897781] , [ 1271390400000 , 9.7617610195821] , [ 1271649600000 , 2.3316750948882] , [ 1271736000000 , 2.3554204820326] , [ 1271822400000 , 2.3797823277908] , [ 1271908800000 , 2.3848957967342] , [ 1271995200000 , 2.3724818052071] , [ 1272254400000 , 2.3867936129286] , [ 1272340800000 , 2.2976327198643] , [ 1272427200000 , 2.2847673647109] , [ 1272513600000 , 2.2922477707547] , [ 1272600000000 , 2.3485489060831] , [ 1272859200000 , 2.2105083576864] , [ 1272945600000 , 2.1812743937004] , [ 1273032000000 , 2.1203180778889] , [ 1273118400000 , 0E+1] , [ 1273204800000 , 0.84128734075579] , [ 1273464000000 , 5.775123966151] , [ 1273550400000 , 4.1159124822996] , [ 1273636800000 , 5.0369560759981] , [ 1273723200000 , 5.0229265757986] , [ 1273809600000 , 4.9892145190732] , [ 1274068800000 , 2.3111441537493] , [ 1274155200000 , 4.1413879561402] , [ 1274241600000 , 2.8798935997032] , [ 1274328000000 , 2.8824216429304] , [ 1274414400000 , 2.8466063306996] , [ 1274673600000 , 1.0850499947587] , [ 1274760000000 , 1.0897177611378] , [ 1274846400000 , 1.1083671293992] , [ 1274932800000 , 4.6437803047215] , [ 1275019200000 , 1.0935115091518] , [ 1275364800000 , 2.6542075858267] , [ 1275451200000 , 6.390737097604] , [ 1275537600000 , 2.5800488679277] , [ 1275624000000 , 2.6363691280816] , [ 1275883200000 , 2.717071850151] , [ 1275969600000 , 2.7276396448783] , [ 1276056000000 , 2.7019258701428] , [ 1276142400000 , 2.6467903607358] , [ 1276228800000 , 2.6476993753105] , [ 1276488000000 , 3.4781226877796] , [ 1276574400000 , 3.4620196351265] , [ 1276660800000 , 3.4506424803737] , [ 1276747200000 , 3.4632075406756] , [ 1276833600000 , 4.6483905224431] , [ 1277092800000 , 8.4761452565474] , [ 1277179200000 , 6.6092488959015] , [ 1277265600000 , 4.6995613173494] , [ 1277352000000 , 3.0386568983329] , [ 1277438400000 , 3.0673952302698] , [ 1277697600000 , 6.5636509425421] , [ 1277784000000 , 4.5326439598942] , [ 1277870400000 , 4.5674330128605] , [ 1277956800000 , 3.453495550013] , [ 1278043200000 , 12.098973365732] , [ 1278388800000 , 7.8836649960449] , [ 1278475200000 , 7.6647787648602] , [ 1278561600000 , 8.7583257263942] , [ 1278648000000 , 8.8635661597876] , [ 1278907200000 , 9.8302737319635] , [ 1278993600000 , 9.7867378730567] , [ 1279080000000 , 7.5678080409209] , [ 1279166400000 , 15.65652872616] , [ 1279252800000 , 5.9689528486809] , [ 1279512000000 , 7.0078108776693] , [ 1279598400000 , 8.0167775479397] , [ 1279684800000 , 11.728256170211] , [ 1279771200000 , 11.690310154165] , [ 1279857600000 , 11.318570934147] , [ 1280116800000 , 11.361176266491] , [ 1280203200000 , 9.9619295381735] , [ 1280289600000 , 9.4845405767859] , [ 1280376000000 , 10.427281272544] , [ 1280462400000 , 11.676872073506] , [ 1280721600000 , 17.203786437621] , [ 1280808000000 , 9.8934597047389] , [ 1280894400000 , 10.002953577279] , [ 1280980800000 , 3.4637004267288] , [ 1281067200000 , 3.2753493523234] , [ 1281326400000 , 2.433963042092] , [ 1281412800000 , 1.9551273654559] , [ 1281499200000 , 1.9891168565173] , [ 1281585600000 , 1.2980770353205] , [ 1281672000000 , 1.2927815681858] , [ 1281931200000 , 1.2377693207517] , [ 1282017600000 , 7.6123867944725] , [ 1282104000000 , 5.5872044915562] , [ 1282190400000 , 8.8140991678344] , [ 1282276800000 , 5.2381201907247] , [ 1282536000000 , 9.3237903124672] , [ 1282622400000 , 5.2777896711116] , [ 1282708800000 , 13.374833294887] , [ 1282795200000 , 7.2441690822071] , [ 1282881600000 , 7.2605769196643] , [ 1283140800000 , 7.3277900364205] , [ 1283227200000 , 6.7228503465507] , [ 1283313600000 , 10.640799346291] , [ 1283400000000 , 10.560539699565] , [ 1283486400000 , 5.5442143122897] , [ 1283832000000 , 3.6276696593137] , [ 1283918400000 , 3.5369972899083] , [ 1284004800000 , 3.5975515353696] , [ 1284091200000 , 1.1211190405408] , [ 1284350400000 , 14.246288336732] , [ 1284436800000 , 20.775983902756] , [ 1284523200000 , 16.847370568216] , [ 1284609600000 , 16.714760723814] , [ 1284696000000 , 16.819809321701] , [ 1284955200000 , 16.663940700998] , [ 1285041600000 , 9.1141917050783] , [ 1285128000000 , 16.717364391529] , [ 1285214400000 , 16.673510263472] , [ 1285300800000 , 19.616057923566] , [ 1285560000000 , 14.46474000361] , [ 1285646400000 , 12.527077725058] , [ 1285732800000 , 11.437848846457] , [ 1285819200000 , 10.251014821677] , [ 1285905600000 , 10.380432294181] , [ 1286164800000 , 12.841184938016] , [ 1286251200000 , 14.385625288561] , [ 1286337600000 , 15.826910823908] , [ 1286424000000 , 15.794761071586] , [ 1286510400000 , 16.014732420803] , [ 1286769600000 , 16.31182462091] , [ 1286856000000 , 16.814293402475] , [ 1286942400000 , 19.14169965795] , [ 1287028800000 , 22.606069798983] , [ 1287115200000 , 22.83142172098] , [ 1287374400000 , 22.679834237627] , [ 1287460800000 , 22.521464482306] , [ 1287547200000 , 20.543852910345] , [ 1287633600000 , 21.503428364417] , [ 1287720000000 , 21.486923473426] , [ 1287979200000 , 21.526832148478] , [ 1288065600000 , 21.001826964328] , [ 1288152000000 , 20.749520439532] , [ 1288238400000 , 19.029569151898] , [ 1288324800000 , 12.91721467363] , [ 1288584000000 , 14.329243386079] , [ 1288670400000 , 14.432818450359] , [ 1288756800000 , 13.081122846994] , [ 1288843200000 , 16.696065747099] , [ 1288929600000 , 17.387953164875] , [ 1289192400000 , 20.29669159292] , [ 1289278800000 , 20.677106807106] , [ 1289365200000 , 16.590818773612] , [ 1289451600000 , 14.701306394768] , [ 1289538000000 , 10.933799992909] , [ 1289797200000 , 8.4000604451418] , [ 1289883600000 , 7.4843427381187] , [ 1289970000000 , 7.8338325622071] , [ 1290056400000 , 7.8794373698104] , [ 1290142800000 , 6.8509314860043] , [ 1290402000000 , 6.8209096842783] , [ 1290488400000 , 7.5139566442298] , [ 1290574800000 , 8.3972864318589] , [ 1290747600000 , 8.3759528435223] , [ 1291006800000 , 7.0547214640457] , [ 1291093200000 , 8.8158174412613] , [ 1291179600000 , 9.0311729515292] , [ 1291266000000 , 9.0236606392401] , [ 1291352400000 , 9.0589383913935] , [ 1291611600000 , 11.819666467403] , [ 1291698000000 , 11.76663597964] , [ 1291784400000 , 11.214869842108] , [ 1291870800000 , 11.335755970384] , [ 1291957200000 , 11.158951460844] , [ 1292216400000 , 10.711740722718] , [ 1292302800000 , 7.8554891997622] , [ 1292389200000 , 7.2221201016942] , [ 1292475600000 , 7.1813113504643] , [ 1292562000000 , 6.9488995384051] , [ 1292821200000 , 7.0362942712251] , [ 1292907600000 , 7.0852551326747] , [ 1292994000000 , 7.0647935963455] , [ 1293080400000 , 5.8689600868079] , [ 1293426000000 , 5.9025079566661] , [ 1293512400000 , 5.9732688727434] , [ 1293598800000 , 5.9728342136774] , [ 1293685200000 , 5.9209724655277] , [ 1293771600000 , 6.0285158035548] , [ 1294030800000 , 6.6057634284871] , [ 1294117200000 , 6.370638068121] , [ 1294203600000 , 6.3999410586526] , [ 1294290000000 , 6.3386933057161] , [ 1294376400000 , 6.3632442768462] , [ 1294635600000 , 6.4139372874026] , [ 1294722000000 , 7.1689736045359] , [ 1294808400000 , 7.2101892359485] , [ 1294894800000 , 7.1774200607366] , [ 1294981200000 , 7.0706364226525] , [ 1295326800000 , 7.2420565888503] , [ 1295413200000 , 7.729627115145] , [ 1295499600000 , 8.0819869042317] , [ 1295586000000 , 8.1927919445644] , [ 1295845200000 , 8.9965391958168] , [ 1295931600000 , 8.8152743168456] , [ 1296018000000 , 14.169224830048] , [ 1296104400000 , 15.669581265233] , [ 1296190800000 , 15.741681147339] , [ 1296450000000 , 10.678954164786] , [ 1296536400000 , 10.778232189368] , [ 1296622800000 , 10.973393514458] , [ 1296709200000 , 10.918636428528] , [ 1296795600000 , 10.798314944682] , [ 1297054800000 , 12.27880262499] , [ 1297141200000 , 11.71340214721] , [ 1297227600000 , 11.949083848583] , [ 1297314000000 , 12.171819589372] , [ 1297400400000 , 12.022918419242] , [ 1297659600000 , 12.316294943466] , [ 1297746000000 , 12.311490226445] , [ 1297832400000 , 10.546161614989] , [ 1297918800000 , 10.212852465357] , [ 1298005200000 , 10.006183572991] , [ 1298350800000 , 6.1955088397816] , [ 1298437200000 , 3.6282579000125] , [ 1298523600000 , 2.1425179831013] , [ 1298610000000 , 1.6100993337419] , [ 1298869200000 , 2.7278169606536] , [ 1298955600000 , 1.7646646869974] , [ 1299042000000 , 1.904711349079] , [ 1299128400000 , 1.6015603347289] , [ 1299214800000 , 5.33489658773] , [ 1299474000000 , 5.7003370342734] , [ 1299560400000 , 5.6455295050364] , [ 1299646800000 , 5.5697979070134] , [ 1299733200000 , 5.8343740652092] , [ 1299819600000 , 5.1076333360735] , [ 1300075200000 , 5.0850675197288] , [ 1300161600000 , 5.4250231951116] , [ 1300248000000 , 5.9367548279745] , [ 1300334400000 , 6.1572104290143] , [ 1300420800000 , 6.214163935681] , [ 1300680000000 , 4.8667917106922] , [ 1300766400000 , 6.422013112333] , [ 1300852800000 , 3.4939332481092] , [ 1300939200000 , 4.6097562020041] , [ 1301025600000 , 4.6025549010205] , [ 1301284800000 , 4.5139375382479] , [ 1301371200000 , 4.4785136185511] , [ 1301457600000 , 5.8385185358421] , [ 1301544000000 , 4.726683788373] , [ 1301630400000 , 4.5595775739965] , [ 1301889600000 , 4.7028853870762] , [ 1301976000000 , 5.5630747379642] , [ 1302062400000 , 5.5695830880869] , [ 1302148800000 , 5.430002032119] , [ 1302235200000 , 6.0605343422489] , [ 1302494400000 , 6.0464510385453] , [ 1302580800000 , 5.3434967541795] , [ 1302667200000 , 5.3304860425691] , [ 1302753600000 , 5.3197140491453] , [ 1302840000000 , 5.5297170931492] , [ 1303099200000 , 5.7323594182524] , [ 1303185600000 , 5.6719227971364] , [ 1303272000000 , 5.6766524306867] , [ 1303358400000 , 5.7846113031309] , [ 1303704000000 , 14.258778990826] , [ 1303790400000 , 14.612982088981] , [ 1303876800000 , 15.206551597048] , [ 1303963200000 , 15.350003594809] , [ 1304049600000 , 15.690727931822] , [ 1304308800000 , 15.961872720506] , [ 1304395200000 , 14.196122771055] , [ 1304481600000 , 7.552327264097] , [ 1304568000000 , 7.3050361194973] , [ 1304654400000 , 7.305987353929] , [ 1304913600000 , 7.1431777604522] , [ 1305000000000 , 7.6003473028237] , [ 1305086400000 , 8.9788637937014] , [ 1305172800000 , 8.775871966083] , [ 1305259200000 , 8.7289222002926] , [ 1305518400000 , 8.9727814770429] , [ 1305604800000 , 9.0640318432143] , [ 1305691200000 , 9.2698536443952] , [ 1305777600000 , 9.152781021373] , [ 1305864000000 , 9.1708043409756] , [ 1306123200000 , 9.2714547796448] , [ 1306209600000 , 9.3302270261815] , [ 1306296000000 , 9.5604867784906] , [ 1306382400000 , 9.5669057675137] , [ 1306468800000 , 10.831220430519] , [ 1306814400000 , 8.120729804547] , [ 1306900800000 , 8.6415389681981] , [ 1306987200000 , 7.2888326950911] , [ 1307073600000 , 7.1603127722255] , [ 1307332800000 , 7.1543150474431] , [ 1307419200000 , 6.8715859295198] , [ 1307505600000 , 4.2039812566826] , [ 1307592000000 , 5.6904569227644] , [ 1307678400000 , 6.3505666310263] , [ 1307937600000 , 7.2650223185702] , [ 1308024000000 , 7.8624309884383] , [ 1308110400000 , 7.9103245356973] , [ 1308196800000 , 7.5424360349655] , [ 1308283200000 , 7.4759546980716] , [ 1308542400000 , 7.4316122245313] , [ 1308628800000 , 8.0319645070091] , [ 1308715200000 , 7.7700242348924] , [ 1308801600000 , 7.6618175481715] , [ 1308888000000 , 7.9019974040354] , [ 1309147200000 , 7.7430933398536] , [ 1309233600000 , 7.6971186864583] , [ 1309320000000 , 7.8539371496947] , [ 1309406400000 , 6.4767149279521] , [ 1309492800000 , 10.864451156569] , [ 1309838400000 , 12.53424259805] , [ 1309924800000 , 10.430427853165] , [ 1310011200000 , 10.822710394213] , [ 1310097600000 , 10.832580005768] , [ 1310356800000 , 10.052296614848] , [ 1310443200000 , 6.4839348905369] , [ 1310529600000 , 6.4796604961949] , [ 1310616000000 , 6.5237779463479] , [ 1310702400000 , 6.5282205979003] , [ 1310961600000 , 9.5605350756868] , [ 1311048000000 , 6.5779434365358] , [ 1311134400000 , 3.9824933248077] , [ 1311220800000 , 3.9336049736716] , [ 1311307200000 , 13.171507728255] , [ 1311566400000 , 19.522598665789] , [ 1311652800000 , 21.242853641529] , [ 1311739200000 , 18.163912091731] , [ 1311825600000 , 9.691779249722] , [ 1311912000000 , 9.3544636904085] , [ 1314763200000 , 5.4028216291156] , [ 1314849600000 , 5.4537855535373] , [ 1314936000000 , 6.9277472544551] , [ 1315281600000 , 13.527506761017] , [ 1315368000000 , 16.900133490357] , [ 1315454400000 , 5.0855551266622] , [ 1315540800000 , 5.0800328713639] , [ 1315800000000 , 28.072455306822] , [ 1315886400000 , 8.8759356126024] , [ 1315972800000 , 9.2408960225889] , [ 1316059200000 , 1.7118031387909] , [ 1316145600000 , 1.7312142072377] , [ 1316404800000 , 1.6618754265308] , [ 1316491200000 , 1.6579331202934] , [ 1316577600000 , 15.897293132969] , [ 1316664000000 , 0.1026324494013] , [ 1316750400000 , 1.7544940471016] , [ 1317009600000 , 0.10005678685907] , [ 1317096000000 , 1.7765589587728] , [ 1317182400000 , 0.10126533719457] , [ 1317268800000 , 16.919870876671] , [ 1317355200000 , 11.13686381726] , [ 1317614400000 , 6.1641593479491] , [ 1317700800000 , 8.8661223824614] , [ 1317787200000 , 17.608417474935] , [ 1317873600000 , 8.7389089868331] , [ 1317960000000 , 12.919578810593] , [ 1318219200000 , 26.006149587577] , [ 1318305600000 , 14.238973314548] , [ 1318392000000 , 10.176878123272] , [ 1318478400000 , 7.2096304682224] , [ 1318564800000 , 2.2168612574586] , [ 1318824000000 , 2.2940737765508] , [ 1318910400000 , 3.9661640184321] , [ 1318996800000 , 2.5459367442254] , [ 1319083200000 , 1.0077657061596] , [ 1319169600000 , 0E+1] , [ 1319428800000 , 17.097555411023] , [ 1319515200000 , 11.606450464539] , [ 1319601600000 , 12.890914181168] , [ 1319688000000 , 1.7053981520553] , [ 1319774400000 , 16.688074744503] , [ 1320033600000 , 8.8496229558706] , [ 1320120000000 , 0.45520819065016] , [ 1320206400000 , 0.45131568652003] , [ 1320292800000 , 4.5090918739386] , [ 1320379200000 , 4.4878220190057] , [ 1320642000000 , 2.9620357751273] , [ 1320728400000 , 2.9520424700809] , [ 1320814800000 , 5.6960600961596] , [ 1320901200000 , 0.14966542040682] , [ 1320987600000 , 0.14815988444861] , [ 1321246800000 , 1.6446943339418] , [ 1321333200000 , 7.696261415648] , [ 1321419600000 , 1.6454294617394] , [ 1321506000000 , 1.6323159472142] , [ 1321592400000 , 1.6308217232577] , [ 1321851600000 , 0.080750085947044] , [ 1321938000000 , 1.5630223551003] , [ 1322024400000 , 2.2777524858011] , [ 1322197200000 , 2.9331068785017] , [ 1322456400000 , 12.226276438246] , [ 1322542800000 , 7.7451056618688] , [ 1322629200000 , 8.2237757916671] , [ 1322715600000 , 1.8897293216426] , [ 1322802000000 , 1.8692322866259] , [ 1323061200000 , 1.8416716319176] , [ 1323147600000 , 1.8104401561105] , [ 1323234000000 , 1.8470081251299] , [ 1323320400000 , 1.7932665784973] , [ 1323406800000 , 1.7609438764805] , [ 1323666000000 , 1.7744873055117] , [ 1323752400000 , 1.7865419795682] , [ 1323838800000 , 1.7842895866241] , [ 1323925200000 , 1.7644173362237] , [ 1324011600000 , 1.7738744265978] , [ 1324270800000 , 3.9299064361409] , [ 1324357200000 , 3.9056044544827] , [ 1324443600000 , 3.9320303990364] , [ 1324530000000 , 3.6632424216547] , [ 1324616400000 , 2.8040461137765] , [ 1324962000000 , 2.7961697124163] , [ 1325048400000 , 2.8100174259024] , [ 1325134800000 , 0.023172195237641] , [ 1325221200000 , 0.041095901679587] , [ 1325566800000 , 7.6724801728593] , [ 1325653200000 , 4.2763616561652] , [ 1325739600000 , 0E+1] , [ 1325826000000 , 1.4618791730321] , [ 1326085200000 , 0E+1] , [ 1326171600000 , 0] , [ 1326258000000 , 0] , [ 1326344400000 , 0] , [ 1326430800000 , 0] , [ 1326776400000 , 0] , [ 1326862800000 , 2.7250542101371] , [ 1326949200000 , 5.4622314246137] , [ 1327035600000 , 5.4712525616126] , [ 1327294800000 , 8.2296098737129] , [ 1327381200000 , 8.0642415359483] , [ 1327467600000 , 9.5377433735282] , [ 1327554000000 , 10.257196887831] , [ 1327640400000 , 10.260104241198] , [ 1327899600000 , 4.6398649406234] , [ 1327986000000 , 4.7145144046888] , [ 1328072400000 , 9.6281152277381] , [ 1328158800000 , 9.7280787855291] , [ 1328245200000 , 7.3396609008687] , [ 1328504400000 , 7.3134569128428] , [ 1328590800000 , 7.0048665680361] , [ 1328677200000 , 5.5020982774708] , [ 1328763600000 , 3.4682606408391] , [ 1328850000000 , 1.8077804938241] , [ 1329109200000 , 1.8312355230228] , [ 1329195600000 , 1.8406724565104] , [ 1329282000000 , 1.8529549830777] , [ 1329368400000 , 1.8424931768584] , [ 1329454800000 , 7.9055107025124] , [ 1329800400000 , 10.709974570265] , [ 1329886800000 , 13.302602263751] , [ 1329973200000 , 13.313954389015] , [ 1330059600000 , 10.483934817868] , [ 1330318800000 , 2.9058503121605] , [ 1330405200000 , 4.4918908152623] , [ 1330491600000 , 4.4542926831064] , [ 1330578000000 , 2.4197715545823] , [ 1330664400000 , 2.4131484187935] , [ 1330923600000 , 0.74897541145568] , [ 1331010000000 , 1.5830792559841] , [ 1331096400000 , 3.1568005778019] , [ 1331182800000 , 3.1811252122814] , [ 1331269200000 , 6.4543930191829] , [ 1331524800000 , 6.4275187369461] , [ 1331611200000 , 11.831789512505] , [ 1331697600000 , 11.846137364418] , [ 1331784000000 , 11.7137606442] , [ 1331870400000 , 10.176067276795] , [ 1332129600000 , 9.2316296811876] , [ 1332216000000 , 7.5957964446259] , [ 1332302400000 , 4.4474928932849] , [ 1332388800000 , 3.9281321681724] , [ 1332475200000 , 3.2857724075373] , [ 1332734400000 , 3.1842624387074] , [ 1332820800000 , 3.2226627450191] , [ 1332907200000 , 3.8989359742328] , [ 1332993600000 , 3.5758281362346] , [ 1333080000000 , 3.6401003587818] , [ 1333339200000 , 3.7777313585311] , [ 1333425600000 , 3.781034960428] , [ 1333512000000 , 4.8315911191317] , [ 1333598400000 , 0.56683039450387] , [ 1333944000000 , 3.8340659564813] , [ 1334030400000 , 4.0637693951563] , [ 1334116800000 , 3.9485243918444] , [ 1334203200000 , 3.8818396815084] , [ 1334289600000 , 7.1198330075262] , [ 1334548800000 , 5.5286517014158] , [ 1334635200000 , 0.59732819298186] , [ 1334721600000 , 3.8141617282652] , [ 1334808000000 , 6.7919650728735] , [ 1334894400000 , 6.8270129049705] , [ 1335153600000 , 0.60622657540105] , [ 1335240000000 , 4.6059830131653] , [ 1335326400000 , 4.6318792953283] , [ 1335412800000 , 6.2900689816543] , [ 1335499200000 , 3.8615977884794] , [ 1335758400000 , 0.70621117241196]]}]
+.map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+
+
+
+
+
+
+
+nv.charts.stackedAreaChart()
+    .selector('#chart1')
+    //.data(histcatexplongDaily)
+    .data(histcatexplong)
+    .build();
+
+
+
+
+</script>
diff --git a/deprecated/stackedAreaWithLegend.html b/deprecated/stackedAreaWithLegend.html
new file mode 100644
index 0000000..35ddf5f
--- /dev/null
+++ b/deprecated/stackedAreaWithLegend.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart {
+  margin: 10px;
+  height: 500px;
+}
+
+</style>
+<body>
+
+  <div id="chart">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script src="../src/models/stackedAreaWithLegend.js"></script>
+<script>
+
+
+var n = 4, // number of layers
+    m = 120; // number of samples per layer
+    //color = d3.interpolateRgb("#aad", "#556");
+
+//format data to our liking, add keys
+var data = stream_layers(n,m).map(function(data, i) {
+  return { 
+    key: 'Stream' + i,
+    values: data
+  };
+});
+
+
+
+
+
+var histcatexplong = [ 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1025409600000 , 23.041422681023] , [ 1028088000000 , 19.854291255832] , [ 1030766400000 , 21.02286281168] , [ 1033358400000 , 22.093608385173] , [ 1036040400000 , 25.108079299458] , [ 1038632400000 , 26.982389242348] , [ 1041310800000 , 19.828984957662] , [ 1043989200000 , 19.914055036294] , [ 1046408400000 , 19.436150539916] , [ 1049086800000 , 21.558650338602] , [ 1051675200000 , 24.395594061773] , [ 1054353600000 , 24.747089309384] , [ 1056945600000 , 23.491755498807] , [ 1059624000000 , 23.376634878164] , [ 1062302400000 , 24.581223154533] , [ 1064894400000 , 24.922476843538] , [ 1067576400000 , 27.357712939042] , [ 1070168400000 , 26.503020572593] , [ 1072846800000 , 26.658901244878] , [ 1075525200000 , 27.065704156445] , [ 1078030800000 , 28.735320452588] , [ 1080709200000 , 31.572277846319] , [ 1083297600000 , 30.932161503638] , [ 1085976000000 , 31.627029785554] , [ 1088568000000 , 28.728743674232] , [ 1091246400000 , 26.858365172675] , [ 1093924800000 , 27.279922830032] , [ 1096516800000 , 34.408301211324] , [ 1099195200000 , 34.794362930439] , [ 1101790800000 , 35.609978198951] , [ 1104469200000 , 33.574394968037] , [ 1107147600000 , 31.979405070598] , [ 1109566800000 , 31.19009040297] , [ 1112245200000 , 31.083933968994] , [ 1114833600000 , 29.668971113185] , [ 1117512000000 , 31.490638014379] , [ 1120104000000 , 31.818617451128] , [ 1122782400000 , 32.960314008183] , [ 1125460800000 , 31.313383196209] , [ 1128052800000 , 33.125486081852] , [ 1130734800000 , 32.791805509149] , [ 1133326800000 , 33.506038030366] , [ 1136005200000 , 26.96501697216] , [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218209] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957518] , [ 1149048000000 , 26.823411519396] , [ 1151640000000 , 23.850443591587] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393695] , [ 1159588800000 , 27.9771285113] , [ 1162270800000 , 29.073672469719] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687637] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271052] , [ 1175313600000 , 17.558388444187] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201301] , [ 1183176000000 , 18.729632971229] , [ 1185854400000 , 18.814523318847] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575716] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 17.175388025297] , [ 1201755600000 , 17.286592443522] , [ 1204261200000 , 16.323141626568] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391095] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.53936647598] , [ 1217476800000 , 15.255131790217] , [ 1220155200000 , 15.660963922592] , [ 1222747200000 , 13.254482273698] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090924] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672228] , [ 1241064000000 , 14.631445864799] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367017] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.756026065421] , [ 1259557200000 , 19.385804443146] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793024] , [ 1280548800000 , 29.461381693838] , [ 1283227200000 , 27.357322961861] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379724] , [ 1293771600000 , 29.449241421598] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449188] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.07966254541] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.418002742929] , [ 1312084800000 , 23.24364413887] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.67238082043] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213898] , [ 1330491600000 , 20.366462219461] , [ 1333166400000 , 19.284784434185] , [ 1335758400000 , 19.157810257624]]
+  }, 
+
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1025409600000 , 7.9356392949025] , [ 1028088000000 , 7.4514668527298] , [ 1030766400000 , 7.9085410566608] , [ 1033358400000 , 5.8996782364764] , [ 1036040400000 , 6.0591869346923] , [ 1038632400000 , 5.9667815800451] , [ 1041310800000 , 8.65528925664] , [ 1043989200000 , 8.7690763386254] , [ 1046408400000 , 8.6386160387453] , [ 1049086800000 , 5.9895557449743] , [ 1051675200000 , 6.3840324338159] , [ 1054353600000 , 6.5196511461441] , [ 1056945600000 , 7.0738618553114] , [ 1059624000000 , 6.5745957367133] , [ 1062302400000 , 6.4658359184444] , [ 1064894400000 , 2.7622758754954] , [ 1067576400000 , 2.9794782986241] , [ 1070168400000 , 2.8735432712019] , [ 1072846800000 , 1.6344817513645] , [ 1075525200000 , 1.5869248754883] , [ 1078030800000 , 1.7172279157246] , [ 1080709200000 , 1.9649927409867] , [ 1083297600000 , 2.0261695079196] , [ 1085976000000 , 2.0541261923929] , [ 1088568000000 , 3.9466318927569] , [ 1091246400000 , 3.7826770946089] , [ 1093924800000 , 3.9543021004028] , [ 1096516800000 , 3.8309891064711] , [ 1099195200000 , 3.6340958946166] , [ 1101790800000 , 3.5289755762525] , [ 1104469200000 , 5.702378559857] , [ 1107147600000 , 5.6539569019223] , [ 1109566800000 , 5.5449506370392] , [ 1112245200000 , 4.7579993280677] , [ 1114833600000 , 4.4816139372906] , [ 1117512000000 , 4.5965558568606] , [ 1120104000000 , 4.3747066116976] , [ 1122782400000 , 4.4588822917087] , [ 1125460800000 , 4.4460351848286] , [ 1128052800000 , 3.7989113035136] , [ 1130734800000 , 3.7743883140088] , [ 1133326800000 , 3.7727852823828] , [ 1136005200000 , 7.2968111448895] , [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220791] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 5.5611890039181] , [ 1335758400000 , 5.5979368839939]]
+  }, 
+
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1025409600000 , 1.4646843173806] , [ 1028088000000 , 1.2255947178893] , [ 1030766400000 , 1.4158447149914] , [ 1033358400000 , 1.0079176473732] , [ 1036040400000 , 1.30237558984] , [ 1038632400000 , 1.688609181773] , [ 1041310800000 , 2.084300956831] , [ 1043989200000 , 2.1374370551873] , [ 1046408400000 , 2.3282783517776] , [ 1049086800000 , 2.1973076058812] , [ 1051675200000 , 2.157261693164] , [ 1054353600000 , 2.2517863434814] , [ 1056945600000 , 1.2228256346504] , [ 1059624000000 , 1.1440109589209] , [ 1062302400000 , 1.2064470359759] , [ 1064894400000 , 2.500656510238] , [ 1067576400000 , 2.5387208947759] , [ 1070168400000 , 2.4603613044678] , [ 1072846800000 , 3.0150440824201] , [ 1075525200000 , 3.0543883162347] , [ 1078030800000 , 3.2706600781893] , [ 1080709200000 , 3.6312746608013] , [ 1083297600000 , 3.7328532659082] , [ 1085976000000 , 3.766358446065] , [ 1088568000000 , 2.6344481471685] , [ 1091246400000 , 2.763489510345] , [ 1093924800000 , 2.8565862394721] , [ 1096516800000 , 3.8555975117279] , [ 1099195200000 , 3.7062421881707] , [ 1101790800000 , 3.8020128704686] , [ 1104469200000 , 4.309131851142] , [ 1107147600000 , 4.3553997741931] , [ 1109566800000 , 4.8208488504576] , [ 1112245200000 , 4.1337237657138] , [ 1114833600000 , 3.8976502361354] , [ 1117512000000 , 4.0038454785722] , [ 1120104000000 , 3.6457285169699] , [ 1122782400000 , 3.7645930389974] , [ 1125460800000 , 3.9638322190019] , [ 1128052800000 , 4.2470697064323] , [ 1130734800000 , 3.9259866763827] , [ 1133326800000 , 3.8872767584613] , [ 1136005200000 , 1.4275237035221] , [ 1138683600000 , 1.544303464167] , [ 1141102800000 , 1.4387289432421] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 1.328626801128] , [ 1154318400000 , 1.2874050802627] , [ 1156996800000 , 1.0872743105593] , [ 1159588800000 , 0.96042562635813] , [ 1162270800000 , 0.93139372870616] , [ 1164862800000 , 0.94432167305385] , [ 1167541200000 , 1.277750166208] , [ 1170219600000 , 1.2204893886811] , [ 1172638800000 , 1.207489123122] , [ 1175313600000 , 1.2490651414113] , [ 1177905600000 , 1.2593129913052] , [ 1180584000000 , 1.373329808388] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 1.4516108933695] , [ 1225425600000 , 1.1856025268225] , [ 1228021200000 , 1.3430470355439] , [ 1230699600000 , 2.2752595354509] , [ 1233378000000 , 2.4031560010523] , [ 1235797200000 , 2.0822430731926] , [ 1238472000000 , 1.5640902826938] , [ 1241064000000 , 1.5812873972356] , [ 1243742400000 , 1.9462448548894] , [ 1246334400000 , 2.9464870223957] , [ 1249012800000 , 3.0744699383222] , [ 1251691200000 , 2.9422304628446] , [ 1254283200000 , 2.7503075599999] , [ 1256961600000 , 2.6506701800427] , [ 1259557200000 , 2.8005425319977] , [ 1262235600000 , 2.6816184971185] , [ 1264914000000 , 2.681206271327] , [ 1267333200000 , 2.8195488011259] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 1.0687057346382] , [ 1280548800000 , 1.2539400544134] , [ 1283227200000 , 1.1862969445955] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 1.941972859484] , [ 1298869200000 , 2.1142247697552] , [ 1301544000000 , 2.3788590206824] , [ 1304136000000 , 2.5337302877545] , [ 1306814400000 , 2.3163370395199] , [ 1309406400000 , 2.0645451843195] , [ 1312084800000 , 2.1004446672411] , [ 1314763200000 , 3.6301875804303] , [ 1317355200000 , 2.454204664652] , [ 1320033600000 , 2.196082370894] , [ 1322629200000 , 2.3358418255202] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  }, 
+
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1025409600000 , 7.9149900245423] , [ 1028088000000 , 7.0899888751059] , [ 1030766400000 , 7.5996132380614] , [ 1033358400000 , 8.2741174301034] , [ 1036040400000 , 9.3564460833513] , [ 1038632400000 , 9.7066786059904] , [ 1041310800000 , 10.213363052343] , [ 1043989200000 , 10.285809585273] , [ 1046408400000 , 10.222053149228] , [ 1049086800000 , 8.6188592137975] , [ 1051675200000 , 9.3335447543566] , [ 1054353600000 , 8.9312402186628] , [ 1056945600000 , 8.1895089343658] , [ 1059624000000 , 8.260622135079] , [ 1062302400000 , 7.7700786851364] , [ 1064894400000 , 7.9907428771318] , [ 1067576400000 , 8.7769091865606] , [ 1070168400000 , 8.4855077060661] , [ 1072846800000 , 9.6277203033655] , [ 1075525200000 , 9.9685913452624] , [ 1078030800000 , 10.615085181759] , [ 1080709200000 , 9.2902488079646] , [ 1083297600000 , 8.8610439830061] , [ 1085976000000 , 9.1075344931229] , [ 1088568000000 , 9.9156737639203] , [ 1091246400000 , 9.7826003238782] , [ 1093924800000 , 10.55403610555] , [ 1096516800000 , 10.926900264097] , [ 1099195200000 , 10.903144818736] , [ 1101790800000 , 10.862890389067] , [ 1104469200000 , 10.64604998964] , [ 1107147600000 , 10.042790814087] , [ 1109566800000 , 9.7173391591038] , [ 1112245200000 , 9.6122415755443] , [ 1114833600000 , 9.4337921146562] , [ 1117512000000 , 9.814827171183] , [ 1120104000000 , 12.059260396788] , [ 1122782400000 , 12.139649903873] , [ 1125460800000 , 12.281290663822] , [ 1128052800000 , 8.8037085409056] , [ 1130734800000 , 8.6300618239176] , [ 1133326800000 , 9.1225708491432] , [ 1136005200000 , 12.988124170836] , [ 1138683600000 , 13.356778764353] , [ 1141102800000 , 13.611196863271] , [ 1143781200000 , 6.8959030061189] , [ 1146369600000 , 6.9939633271353] , [ 1149048000000 , 6.7241510257676] , [ 1151640000000 , 5.5611293669517] , [ 1154318400000 , 5.6086488714041] , [ 1156996800000 , 5.4962849907033] , [ 1159588800000 , 6.9193153169278] , [ 1162270800000 , 7.0016334389778] , [ 1164862800000 , 6.7865422443273] , [ 1167541200000 , 9.0006454225383] , [ 1170219600000 , 9.2233916171431] , [ 1172638800000 , 8.8929316009479] , [ 1175313600000 , 10.345937520404] , [ 1177905600000 , 10.075914677026] , [ 1180584000000 , 10.089006188111] , [ 1183176000000 , 10.598330295008] , [ 1185854400000 , 9.9689546533009] , [ 1188532800000 , 9.7740580198146] , [ 1191124800000 , 10.558483060626] , [ 1193803200000 , 9.9314651823603] , [ 1196398800000 , 9.3997715873769] , [ 1199077200000 , 8.4086493387262] , [ 1201755600000 , 8.9698309085926] , [ 1204261200000 , 8.2778357995396] , [ 1206936000000 , 8.8585045600123] , [ 1209528000000 , 8.7013756413322] , [ 1212206400000 , 7.7933605469443] , [ 1214798400000 , 7.0236183483064] , [ 1217476800000 , 6.9873088186829] , [ 1220155200000 , 6.8031713070097] , [ 1222747200000 , 6.6869531315723] , [ 1225425600000 , 6.138256993963] , [ 1228021200000 , 5.6434994016354] , [ 1230699600000 , 5.495220262512] , [ 1233378000000 , 4.6885326869846] , [ 1235797200000 , 4.4524349883438] , [ 1238472000000 , 5.6766520778185] , [ 1241064000000 , 5.7675774480752] , [ 1243742400000 , 5.7882863168337] , [ 1246334400000 , 7.2666010034924] , [ 1249012800000 , 7.5191821322261] , [ 1251691200000 , 7.849651451445] , [ 1254283200000 , 10.383992037985] , [ 1256961600000 , 9.0653691861818] , [ 1259557200000 , 9.6705248324159] , [ 1262235600000 , 10.856380561349] , [ 1264914000000 , 11.27452370892] , [ 1267333200000 , 11.754156529088] , [ 1270008000000 , 8.2870811422455] , [ 1272600000000 , 8.0210264360699] , [ 1275278400000 , 7.5375074474865] , [ 1277870400000 , 8.3419527338039] , [ 1280548800000 , 9.4197471818443] , [ 1283227200000 , 8.7321733185797] , [ 1285819200000 , 9.6627062648126] , [ 1288497600000 , 10.187962234548] , [ 1291093200000 , 9.8144201733476] , [ 1293771600000 , 10.275723361712] , [ 1296450000000 , 16.796066079353] , [ 1298869200000 , 17.543254984075] , [ 1301544000000 , 16.673660675083] , [ 1304136000000 , 17.963944353609] , [ 1306814400000 , 16.63774086721] , [ 1309406400000 , 15.84857094609] , [ 1312084800000 , 14.767303362181] , [ 1314763200000 , 24.778452182433] , [ 1317355200000 , 18.370353229999] , [ 1320033600000 , 15.253137429099] , [ 1322629200000 , 14.989600840649] , [ 1325307600000 , 16.052539160125] , [ 1327986000000 , 16.424390322793] , [ 1330491600000 , 17.884020741104] , [ 1333166400000 , 18.372698836036] , [ 1335758400000 , 18.315881576096]]
+  },
+
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1025409600000 , 13.153938631352] , [ 1028088000000 , 12.456410521864] , [ 1030766400000 , 12.537048663919] , [ 1033358400000 , 13.947386398309] , [ 1036040400000 , 14.421680682568] , [ 1038632400000 , 14.143238262286] , [ 1041310800000 , 12.229635347478] , [ 1043989200000 , 12.508479916948] , [ 1046408400000 , 12.155368409526] , [ 1049086800000 , 13.335455563994] , [ 1051675200000 , 12.888210138167] , [ 1054353600000 , 12.842092790511] , [ 1056945600000 , 12.513816474199] , [ 1059624000000 , 12.21453674494] , [ 1062302400000 , 11.750848343935] , [ 1064894400000 , 10.526579636787] , [ 1067576400000 , 10.873596086087] , [ 1070168400000 , 11.019967131519] , [ 1072846800000 , 11.235789380602] , [ 1075525200000 , 11.859910850657] , [ 1078030800000 , 12.531031616536] , [ 1080709200000 , 11.360451067019] , [ 1083297600000 , 11.456244780202] , [ 1085976000000 , 11.436991407309] , [ 1088568000000 , 11.638595744327] , [ 1091246400000 , 11.190418301469] , [ 1093924800000 , 11.835608007589] , [ 1096516800000 , 11.540980244475] , [ 1099195200000 , 10.958762325687] , [ 1101790800000 , 10.885791159509] , [ 1104469200000 , 13.605810720109] , [ 1107147600000 , 13.128978067437] , [ 1109566800000 , 13.119012086882] , [ 1112245200000 , 13.003706129783] , [ 1114833600000 , 13.326996807689] , [ 1117512000000 , 13.547947991743] , [ 1120104000000 , 12.807959646616] , [ 1122782400000 , 12.931763821068] , [ 1125460800000 , 12.795359993008] , [ 1128052800000 , 9.6998935538319] , [ 1130734800000 , 9.3473740089131] , [ 1133326800000 , 9.36902067716] , [ 1136005200000 , 14.258619539875] , [ 1138683600000 , 14.21241095603] , [ 1141102800000 , 13.973193618249] , [ 1143781200000 , 15.218233920664] , [ 1146369600000 , 14.382109727451] , [ 1149048000000 , 13.894310878491] , [ 1151640000000 , 15.593086090031] , [ 1154318400000 , 16.244839695189] , [ 1156996800000 , 16.017088850647] , [ 1159588800000 , 14.183951830057] , [ 1162270800000 , 14.148523245696] , [ 1164862800000 , 13.424326059971] , [ 1167541200000 , 12.974450435754] , [ 1170219600000 , 13.232470418021] , [ 1172638800000 , 13.318762655574] , [ 1175313600000 , 15.961407746104] , [ 1177905600000 , 16.287714639805] , [ 1180584000000 , 16.24659058389] , [ 1183176000000 , 17.564505594808] , [ 1185854400000 , 17.872725373164] , [ 1188532800000 , 18.018998508756] , [ 1191124800000 , 15.584518016602] , [ 1193803200000 , 15.480850647182] , [ 1196398800000 , 15.699120036985] , [ 1199077200000 , 19.184281817226] , [ 1201755600000 , 19.691226605205] , [ 1204261200000 , 18.982314051293] , [ 1206936000000 , 18.707820309008] , [ 1209528000000 , 17.459630929759] , [ 1212206400000 , 16.500616076782] , [ 1214798400000 , 18.086324003978] , [ 1217476800000 , 18.929464156259] , [ 1220155200000 , 18.233728682084] , [ 1222747200000 , 16.315776297325] , [ 1225425600000 , 14.632892190251] , [ 1228021200000 , 14.667835024479] , [ 1230699600000 , 13.946993947309] , [ 1233378000000 , 14.394304684398] , [ 1235797200000 , 13.724462792967] , [ 1238472000000 , 10.930879035807] , [ 1241064000000 , 9.8339915513708] , [ 1243742400000 , 10.053858541872] , [ 1246334400000 , 11.786998438286] , [ 1249012800000 , 11.780994901769] , [ 1251691200000 , 11.305889670277] , [ 1254283200000 , 10.918452290083] , [ 1256961600000 , 9.6811395055706] , [ 1259557200000 , 10.971529744038] , [ 1262235600000 , 13.330210480209] , [ 1264914000000 , 14.592637568961] , [ 1267333200000 , 14.605329141157] , [ 1270008000000 , 13.936853794037] , [ 1272600000000 , 12.189480759072] , [ 1275278400000 , 11.676151385046] , [ 1277870400000 , 13.058852800018] , [ 1280548800000 , 13.62891543203] , [ 1283227200000 , 13.811107569918] , [ 1285819200000 , 13.786494560786] , [ 1288497600000 , 14.045162857531] , [ 1291093200000 , 13.697412447286] , [ 1293771600000 , 13.677681376221] , [ 1296450000000 , 19.96151186453] , [ 1298869200000 , 21.049198298156] , [ 1301544000000 , 22.687631094009] , [ 1304136000000 , 25.469010617433] , [ 1306814400000 , 24.88379943712] , [ 1309406400000 , 24.203843814249] , [ 1312084800000 , 22.138760964036] , [ 1314763200000 , 16.034636966228] , [ 1317355200000 , 15.394958944555] , [ 1320033600000 , 12.62564246197] , [ 1322629200000 , 12.973735699739] , [ 1325307600000 , 15.78601833615] , [ 1327986000000 , 15.227368020134] , [ 1330491600000 , 15.899752650733] , [ 1333166400000 , 15.661317319168] , [ 1335758400000 , 15.359891177281]]
+  } , 
+
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1025409600000 , 3.9133244953315] , [ 1028088000000 , 3.518489051173] , [ 1030766400000 , 3.7355675327774] , [ 1033358400000 , 2.6282873198607] , [ 1036040400000 , 2.8090400696474] , [ 1038632400000 , 3.0820718825965] , [ 1041310800000 , 4.2312761636941] , [ 1043989200000 , 4.2510922012943] , [ 1046408400000 , 4.07193350752] , [ 1049086800000 , 4.4040931689245] , [ 1051675200000 , 4.9759379689913] , [ 1054353600000 , 5.0856875680608] , [ 1056945600000 , 4.2233639497997] , [ 1059624000000 , 4.1845715132052] , [ 1062302400000 , 4.3055194312575] , [ 1064894400000 , 3.349297776236] , [ 1067576400000 , 3.7023871871544] , [ 1070168400000 , 3.7170568683668] , [ 1072846800000 , 3.9155694541972] , [ 1075525200000 , 3.9774182471036] , [ 1078030800000 , 4.1580444091887] , [ 1080709200000 , 4.5495573666535] , [ 1083297600000 , 4.5050302469253] , [ 1085976000000 , 4.7094278163836] , [ 1088568000000 , 6.1937658979517] , [ 1091246400000 , 6.0412923676877] , [ 1093924800000 , 6.1747253413885] , [ 1096516800000 , 6.0800072674329] , [ 1099195200000 , 5.7092602419448] , [ 1101790800000 , 6.092841893499] , [ 1104469200000 , 5.7466125264224] , [ 1107147600000 , 5.5824356250394] , [ 1109566800000 , 5.5727222001361] , [ 1112245200000 , 6.2116832774493] , [ 1114833600000 , 5.8847941423832] , [ 1117512000000 , 5.8120124594798] , [ 1120104000000 , 5.9445727342442] , [ 1122782400000 , 6.1631035517269] , [ 1125460800000 , 5.8577541392534] , [ 1128052800000 , 4.6507957123369] , [ 1130734800000 , 4.4741764311828] , [ 1133326800000 , 4.7062417975264] , [ 1136005200000 , 7.2759032827647] , [ 1138683600000 , 7.1590087090399] , [ 1141102800000 , 7.1297210970108] , [ 1143781200000 , 5.5774588290586] , [ 1146369600000 , 5.4977254491156] , [ 1149048000000 , 5.5138153113634] , [ 1151640000000 , 4.3198084032122] , [ 1154318400000 , 3.9179295839125] , [ 1156996800000 , 3.8110093051479] , [ 1159588800000 , 5.5629020916939] , [ 1162270800000 , 5.7241673711336] , [ 1164862800000 , 5.4715049695004] , [ 1167541200000 , 4.9193763571618] , [ 1170219600000 , 5.1360539472469] , [ 1172638800000 , 5.1327258759766] , [ 1175313600000 , 5.1888943925083] , [ 1177905600000 , 5.5191481293346] , [ 1180584000000 , 5.6093625614921] , [ 1183176000000 , 4.2706312987397] , [ 1185854400000 , 4.4453235132117] , [ 1188532800000 , 4.6228003109761] , [ 1191124800000 , 5.0645764756954] , [ 1193803200000 , 5.0723447230959] , [ 1196398800000 , 5.1457765818846] , [ 1199077200000 , 5.4067851597282] , [ 1201755600000 , 5.472241916816] , [ 1204261200000 , 5.3742740389688] , [ 1206936000000 , 6.251751933664] , [ 1209528000000 , 6.1406852153472] , [ 1212206400000 , 5.8164385627465] , [ 1214798400000 , 5.4255846656171] , [ 1217476800000 , 5.3738499417204] , [ 1220155200000 , 5.1815627753979] , [ 1222747200000 , 5.0305983235349] , [ 1225425600000 , 4.6823058607165] , [ 1228021200000 , 4.5941481589093] , [ 1230699600000 , 5.4669598474574] , [ 1233378000000 , 5.1249037357] , [ 1235797200000 , 4.3504421250742] , [ 1238472000000 , 4.6260881026002] , [ 1241064000000 , 5.0140402458945] , [ 1243742400000 , 4.7458462454773] , [ 1246334400000 , 6.0437019654564] , [ 1249012800000 , 6.4595216249754] , [ 1251691200000 , 6.6420468254156] , [ 1254283200000 , 5.8927271960913] , [ 1256961600000 , 5.4712108838002] , [ 1259557200000 , 6.1220254207747] , [ 1262235600000 , 5.5385935169255] , [ 1264914000000 , 5.7383377612639] , [ 1267333200000 , 6.1715976730415] , [ 1270008000000 , 4.0102262681174] , [ 1272600000000 , 3.769389679692] , [ 1275278400000 , 3.5301571031152] , [ 1277870400000 , 2.7660252652526] , [ 1280548800000 , 3.1409983385775] , [ 1283227200000 , 3.0528024863055] , [ 1285819200000 , 4.3126123157971] , [ 1288497600000 , 4.594654041683] , [ 1291093200000 , 4.5424126126793] , [ 1293771600000 , 4.7790043987302] , [ 1296450000000 , 7.4969154058289] , [ 1298869200000 , 7.9424751557821] , [ 1301544000000 , 7.1560736250547] , [ 1304136000000 , 7.9478117337855] , [ 1306814400000 , 7.4109214848895] , [ 1309406400000 , 7.5966457641101] , [ 1312084800000 , 7.165754444071] , [ 1314763200000 , 5.4816702524302] , [ 1317355200000 , 4.9893656089584] , [ 1320033600000 , 4.498385105327] , [ 1322629200000 , 4.6776090358151] , [ 1325307600000 , 8.1350814368063] , [ 1327986000000 , 8.0732769990652] , [ 1330491600000 , 8.5602340387277] , [ 1333166400000 , 8.5387619987197] , [ 1335758400000 , 8.5984656985168]]
+  } , 
+
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1025409600000 , 9.3433263069351] , [ 1028088000000 , 8.4583069475546] , [ 1030766400000 , 8.0342398154196] , [ 1033358400000 , 8.1538966876572] , [ 1036040400000 , 10.743604786849] , [ 1038632400000 , 12.349366155851] , [ 1041310800000 , 10.742682503899] , [ 1043989200000 , 11.360983869935] , [ 1046408400000 , 11.441336039535] , [ 1049086800000 , 10.897508791837] , [ 1051675200000 , 11.469101547709] , [ 1054353600000 , 12.086311476742] , [ 1056945600000 , 8.0697180773504] , [ 1059624000000 , 8.2004392233445] , [ 1062302400000 , 8.4566434900643] , [ 1064894400000 , 7.9565760979059] , [ 1067576400000 , 9.3764619255827] , [ 1070168400000 , 9.0747664160538] , [ 1072846800000 , 10.508939004673] , [ 1075525200000 , 10.69936754483] , [ 1078030800000 , 10.681562399145] , [ 1080709200000 , 13.184786109406] , [ 1083297600000 , 12.668213052351] , [ 1085976000000 , 13.430509403986] , [ 1088568000000 , 12.393086349213] , [ 1091246400000 , 11.942374044842] , [ 1093924800000 , 12.062227685742] , [ 1096516800000 , 11.969974363623] , [ 1099195200000 , 12.14374574055] , [ 1101790800000 , 12.69422821995] , [ 1104469200000 , 9.1235211044692] , [ 1107147600000 , 8.758211757584] , [ 1109566800000 , 8.8072309258443] , [ 1112245200000 , 11.687595946835] , [ 1114833600000 , 11.079723082664] , [ 1117512000000 , 12.049712896076] , [ 1120104000000 , 10.725319428684] , [ 1122782400000 , 10.844849996286] , [ 1125460800000 , 10.833535488461] , [ 1128052800000 , 17.180932407865] , [ 1130734800000 , 15.894764896516] , [ 1133326800000 , 16.412751299498] , [ 1136005200000 , 12.573569093402] , [ 1138683600000 , 13.242301508051] , [ 1141102800000 , 12.863536342041] , [ 1143781200000 , 21.034044171629] , [ 1146369600000 , 21.419084618802] , [ 1149048000000 , 21.142678863692] , [ 1151640000000 , 26.56848967753] , [ 1154318400000 , 24.839144939906] , [ 1156996800000 , 25.456187462166] , [ 1159588800000 , 26.350164502825] , [ 1162270800000 , 26.478333205189] , [ 1164862800000 , 26.425979547846] , [ 1167541200000 , 28.191461582256] , [ 1170219600000 , 28.930307448808] , [ 1172638800000 , 29.521413891117] , [ 1175313600000 , 28.188285966466] , [ 1177905600000 , 27.704619625831] , [ 1180584000000 , 27.49086242483] , [ 1183176000000 , 28.770679721286] , [ 1185854400000 , 29.06048067145] , [ 1188532800000 , 28.240998844973] , [ 1191124800000 , 33.004893194128] , [ 1193803200000 , 34.075180359928] , [ 1196398800000 , 32.548560664834] , [ 1199077200000 , 30.629727432729] , [ 1201755600000 , 28.642858788159] , [ 1204261200000 , 27.973575227843] , [ 1206936000000 , 27.393351882726] , [ 1209528000000 , 28.476095288522] , [ 1212206400000 , 29.29667866426] , [ 1214798400000 , 29.222333802896] , [ 1217476800000 , 28.092966093842] , [ 1220155200000 , 28.107159262922] , [ 1222747200000 , 25.482974832099] , [ 1225425600000 , 21.208115993834] , [ 1228021200000 , 20.295043095268] , [ 1230699600000 , 15.925754618402] , [ 1233378000000 , 17.162864628346] , [ 1235797200000 , 17.084345773174] , [ 1238472000000 , 22.24600710228] , [ 1241064000000 , 24.530543998508] , [ 1243742400000 , 25.084184918241] , [ 1246334400000 , 16.606166527359] , [ 1249012800000 , 17.239620011628] , [ 1251691200000 , 17.336739127379] , [ 1254283200000 , 25.478492475754] , [ 1256961600000 , 23.017152085244] , [ 1259557200000 , 25.617745423684] , [ 1262235600000 , 24.061133998641] , [ 1264914000000 , 23.223933318646] , [ 1267333200000 , 24.425887263936] , [ 1270008000000 , 35.501471156693] , [ 1272600000000 , 33.775013878675] , [ 1275278400000 , 30.417993630285] , [ 1277870400000 , 30.023598978467] , [ 1280548800000 , 33.327519522436] , [ 1283227200000 , 31.963388450372] , [ 1285819200000 , 30.49896723209] , [ 1288497600000 , 32.403696817913] , [ 1291093200000 , 31.47736071922] , [ 1293771600000 , 31.53259666241] , [ 1296450000000 , 41.760282761548] , [ 1298869200000 , 45.605771243237] , [ 1301544000000 , 39.986557966215] , [ 1304136000000 , 43.84633051005] , [ 1306814400000 , 39.857316881858] , [ 1309406400000 , 37.675127768207] , [ 1312084800000 , 35.775077970313] , [ 1314763200000 , 48.631009702578] , [ 1317355200000 , 42.830831754505] , [ 1320033600000 , 35.611502589362] , [ 1322629200000 , 35.320136981738] , [ 1325307600000 , 31.564136901516] , [ 1327986000000 , 32.074407502433] , [ 1330491600000 , 35.053013769977] , [ 1333166400000 , 33.873085184128] , [ 1335758400000 , 32.321039427046]]
+  } , 
+
+  {
+    "key" : "Materials" , 
+    "values" : [ [ 1025409600000 , 5.1162447683392] , [ 1028088000000 , 4.2022848306513] , [ 1030766400000 , 4.3543715758736] , [ 1033358400000 , 5.4641223667245] , [ 1036040400000 , 6.0041275884577] , [ 1038632400000 , 6.6050520064486] , [ 1041310800000 , 5.0154059912793] , [ 1043989200000 , 5.1835708554647] , [ 1046408400000 , 5.1142682006164] , [ 1049086800000 , 5.0271381717695] , [ 1051675200000 , 5.3437782653456] , [ 1054353600000 , 5.2105844515767] , [ 1056945600000 , 6.552565997799] , [ 1059624000000 , 6.9873363581831] , [ 1062302400000 , 7.010986789097] , [ 1064894400000 , 4.4254242025515] , [ 1067576400000 , 4.9613848042174] , [ 1070168400000 , 4.8854920484764] , [ 1072846800000 , 4.0441111794228] , [ 1075525200000 , 4.0219596813179] , [ 1078030800000 , 4.3065749225355] , [ 1080709200000 , 3.9148434915404] , [ 1083297600000 , 3.8659430654512] , [ 1085976000000 , 3.9572824600686] , [ 1088568000000 , 4.7372190641522] , [ 1091246400000 , 4.6871476374455] , [ 1093924800000 , 5.0398702564196] , [ 1096516800000 , 5.5221787544964] , [ 1099195200000 , 5.424646299798] , [ 1101790800000 , 5.9240223067349] , [ 1104469200000 , 5.9936860983601] , [ 1107147600000 , 5.8499523215019] , [ 1109566800000 , 6.4149040329325] , [ 1112245200000 , 6.4547895561969] , [ 1114833600000 , 5.9385382611161] , [ 1117512000000 , 6.0486751030592] , [ 1120104000000 , 5.23108613838] , [ 1122782400000 , 5.5857797121029] , [ 1125460800000 , 5.3454665096987] , [ 1128052800000 , 5.0439154120119] , [ 1130734800000 , 5.054634702913] , [ 1133326800000 , 5.3819451380848] , [ 1136005200000 , 5.2638869269803] , [ 1138683600000 , 5.5806167415681] , [ 1141102800000 , 5.4539047069985] , [ 1143781200000 , 7.6728842432362] , [ 1146369600000 , 7.719946716654] , [ 1149048000000 , 8.0144619912942] , [ 1151640000000 , 7.942223133434] , [ 1154318400000 , 8.3998279827444] , [ 1156996800000 , 8.532324572605] , [ 1159588800000 , 4.7324285199763] , [ 1162270800000 , 4.7402397487697] , [ 1164862800000 , 4.9042069355168] , [ 1167541200000 , 5.9583963430882] , [ 1170219600000 , 6.3693899239171] , [ 1172638800000 , 6.261153903813] , [ 1175313600000 , 5.3443942184584] , [ 1177905600000 , 5.4932111235361] , [ 1180584000000 , 5.5747393101109] , [ 1183176000000 , 5.3833633060013] , [ 1185854400000 , 5.5125898831832] , [ 1188532800000 , 5.8116112661327] , [ 1191124800000 , 4.3962296939996] , [ 1193803200000 , 4.6967663605521] , [ 1196398800000 , 4.7963004350914] , [ 1199077200000 , 4.1817985183351] , [ 1201755600000 , 4.3797643870182] , [ 1204261200000 , 4.6966642197965] , [ 1206936000000 , 4.3609995132565] , [ 1209528000000 , 4.4736290996496] , [ 1212206400000 , 4.3749762738128] , [ 1214798400000 , 3.3274661194507] , [ 1217476800000 , 3.0316184691337] , [ 1220155200000 , 2.5718140204728] , [ 1222747200000 , 2.7034994044603] , [ 1225425600000 , 2.2033786591364] , [ 1228021200000 , 1.9850621240805] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0.44495950017788] , [ 1256961600000 , 0.33945469262483] , [ 1259557200000 , 0.38348269455195] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0.52216435716176] , [ 1298869200000 , 0.59275786698454] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1025409600000 , 1.3503144674343] , [ 1028088000000 , 1.2232741112434] , [ 1030766400000 , 1.3930470790784] , [ 1033358400000 , 1.2631275030593] , [ 1036040400000 , 1.5842699103708] , [ 1038632400000 , 1.9546996043116] , [ 1041310800000 , 0.8504048300986] , [ 1043989200000 , 0.85340686311353] , [ 1046408400000 , 0.843061357391] , [ 1049086800000 , 2.119846992476] , [ 1051675200000 , 2.5285382124858] , [ 1054353600000 , 2.5056570712835] , [ 1056945600000 , 2.5212789901005] , [ 1059624000000 , 2.6192011642534] , [ 1062302400000 , 2.5382187823805] , [ 1064894400000 , 2.3393223047168] , [ 1067576400000 , 2.491219888698] , [ 1070168400000 , 2.497555874906] , [ 1072846800000 , 1.734018115546] , [ 1075525200000 , 1.9307268299646] , [ 1078030800000 , 2.2261679836799] , [ 1080709200000 , 1.7608893704206] , [ 1083297600000 , 1.6242690616808] , [ 1085976000000 , 1.7161663801295] , [ 1088568000000 , 1.7183554537038] , [ 1091246400000 , 1.7179780759145] , [ 1093924800000 , 1.7314274801784] , [ 1096516800000 , 1.2596883356752] , [ 1099195200000 , 1.381177053009] , [ 1101790800000 , 1.4408819615814] , [ 1104469200000 , 3.4743581836444] , [ 1107147600000 , 3.3603749903192] , [ 1109566800000 , 3.5350883257893] , [ 1112245200000 , 3.0949644237828] , [ 1114833600000 , 3.0796455899995] , [ 1117512000000 , 3.3441247640644] , [ 1120104000000 , 4.0947643978168] , [ 1122782400000 , 4.4072631274052] , [ 1125460800000 , 4.4870979780825] , [ 1128052800000 , 4.8404549457934] , [ 1130734800000 , 4.8293016233697] , [ 1133326800000 , 5.2238093263952] , [ 1136005200000 , 3.382306337815] , [ 1138683600000 , 3.7056975170243] , [ 1141102800000 , 3.7561118692318] , [ 1143781200000 , 2.861913700854] , [ 1146369600000 , 2.9933744103381] , [ 1149048000000 , 2.7127537218463] , [ 1151640000000 , 3.1195497076283] , [ 1154318400000 , 3.4066964004508] , [ 1156996800000 , 3.3754571113569] , [ 1159588800000 , 2.2965579982924] , [ 1162270800000 , 2.4486818633018] , [ 1164862800000 , 2.4002308848517] , [ 1167541200000 , 1.9649579750349] , [ 1170219600000 , 1.9385263638056] , [ 1172638800000 , 1.9128975336387] , [ 1175313600000 , 2.3412869836298] , [ 1177905600000 , 2.4337870351445] , [ 1180584000000 , 2.62179703171] , [ 1183176000000 , 3.2642864957929] , [ 1185854400000 , 3.3200396223709] , [ 1188532800000 , 3.3934212707572] , [ 1191124800000 , 4.2822327088179] , [ 1193803200000 , 4.1474964228541] , [ 1196398800000 , 4.1477082879801] , [ 1199077200000 , 5.2947122916128] , [ 1201755600000 , 5.2919843508028] , [ 1204261200000 , 5.198978305031] , [ 1206936000000 , 3.5603057673513] , [ 1209528000000 , 3.3009087690692] , [ 1212206400000 , 3.1784852603792] , [ 1214798400000 , 4.5889503538868] , [ 1217476800000 , 4.401779617494] , [ 1220155200000 , 4.2208301828278] , [ 1222747200000 , 3.89396671475] , [ 1225425600000 , 3.0423832241354] , [ 1228021200000 , 3.135520611578] , [ 1230699600000 , 1.9631418164089] , [ 1233378000000 , 1.8963543874958] , [ 1235797200000 , 1.8266636017025] , [ 1238472000000 , 0.93136635895188] , [ 1241064000000 , 0.92737801918888] , [ 1243742400000 , 0.97591889805002] , [ 1246334400000 , 2.6841193805515] , [ 1249012800000 , 2.5664341140531] , [ 1251691200000 , 2.3887523699873] , [ 1254283200000 , 1.1737801663681] , [ 1256961600000 , 1.0953582317281] , [ 1259557200000 , 1.2495674976653] , [ 1262235600000 , 0.36607452464754] , [ 1264914000000 , 0.3548719047291] , [ 1267333200000 , 0.36769242398939] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0.85450741275337] , [ 1288497600000 , 0.91360317921637] , [ 1291093200000 , 0.89647678692269] , [ 1293771600000 , 0.87800687192639] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0.43668720882994] , [ 1304136000000 , 0.4756523602692] , [ 1306814400000 , 0.46947368328469] , [ 1309406400000 , 0.45138896152316] , [ 1312084800000 , 0.43828726648117] , [ 1314763200000 , 2.0820861395316] , [ 1317355200000 , 0.9364411075395] , [ 1320033600000 , 0.60583907839773] , [ 1322629200000 , 0.61096950747437] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0.17112421375328] , [ 1036040400000 , 0.16363405009242] , [ 1038632400000 , 0.21933570171591] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , 0] , [ 1078030800000 , 0] , [ 1080709200000 , 0] , [ 1083297600000 , 0] , [ 1085976000000 , 0] , [ 1088568000000 , 0] , [ 1091246400000 , 0] , [ 1093924800000 , 0] , [ 1096516800000 , 0] , [ 1099195200000 , 0] , [ 1101790800000 , 0] , [ 1104469200000 , 0] , [ 1107147600000 , 0] , [ 1109566800000 , 0] , [ 1112245200000 , 0] , [ 1114833600000 , 0] , [ 1117512000000 , 0] , [ 1120104000000 , 0] , [ 1122782400000 , 0] , [ 1125460800000 , 0] , [ 1128052800000 , 0] , [ 1130734800000 , 0] , [ 1133326800000 , 0] , [ 1136005200000 , 0] , [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 0] , [ 1225425600000 , 0] , [ 1228021200000 , 0] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0]]
+  } , 
+
+  { 
+    "key" : "Not Available" , 
+    "values" : [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0] , [ 1036040400000 , 0] , [ 1038632400000 , 0] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , 0] , [ 1078030800000 , 0] , [ 1080709200000 , 0] , [ 1083297600000 , 0] , [ 1085976000000 , 0] , [ 1088568000000 , 0] , [ 1091246400000 , 0] , [ 1093924800000 , 0] , [ 1096516800000 , 0] , [ 1099195200000 , 0] , [ 1101790800000 , 0] , [ 1104469200000 , 0] , [ 1107147600000 , 0] , [ 1109566800000 , 0] , [ 1112245200000 , 0] , [ 1114833600000 , 0] , [ 1117512000000 , 0] , [ 1120104000000 , 0] , [ 1122782400000 , 0] , [ 1125460800000 , 0] , [ 1128052800000 , 0] , [ 1130734800000 , 0] , [ 1133326800000 , 0] , [ 1136005200000 , 0] , [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0.050172677311163] , [ 1170219600000 , 0.05010459739003] , [ 1172638800000 , 0.050681828777765] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0.18678212114368] , [ 1209528000000 , 0.17442959307088] , [ 1212206400000 , 0.16359572139598] , [ 1214798400000 , 0.15837381236842] , [ 1217476800000 , 0.15577933366753] , [ 1220155200000 , 0.14891802647046] , [ 1222747200000 , 0.1770757948046] , [ 1225425600000 , 0.18278762496453] , [ 1228021200000 , 0.19687349078343] , [ 1230699600000 , 0.23551013647077] , [ 1233378000000 , 0.25042391829233] , [ 1235797200000 , 0.26937282915476] , [ 1238472000000 , 0.23271248456665] , [ 1241064000000 , 0.20745841982123] , [ 1243742400000 , 0.2011712690448] , [ 1246334400000 , 0.21168244254666] , [ 1249012800000 , 0.20333696030696] , [ 1251691200000 , 0.19775078467844] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 1.3103821402664] , [ 1317355200000 , 1.0444700235618] , [ 1320033600000 , 0.81900499903221] , [ 1322629200000 , 0.81445352296526] , [ 1325307600000 , 0.27519092496306] , [ 1327986000000 , 0.28953340933973] , [ 1330491600000 , 0.31305944539777] , [ 1333166400000 , 0.28710464914403] , [ 1335758400000 , 0.27229889783707]]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+
+
+
+
+nv.addGraph(function() {
+
+
+  var width = function() { return parseInt(d3.select('#chart').style('width')) },
+      height = function() { return parseInt(d3.select('#chart').style('height')) };
+      //xTickFormat = d3.format(',r'),
+      xTickFormat = function(d) { return d3.time.format('%x')(new Date(d)) },
+      yTickFormat = d3.format(',.2f');
+
+  var chart = nv.models.stackedAreaWithLegend()
+              .width(width)
+              .height(height)
+              .clipEdge(true)
+              //.y(function(d) { return d.ytest }) //not ready yet for custom accessor, almost there
+
+  chart.xAxis
+      .tickFormat(xTickFormat);
+
+  chart.yAxis
+      .tickFormat(yTickFormat);
+
+
+
+  var svg = d3.select('#chart svg')
+    .attr('width', width())
+    .attr('height', height())
+    .datum(histcatexplong)
+    //.datum(data)
+
+  svg.transition().duration(500).call(chart);
+
+
+  chart.dispatch.on('tooltipShow', function(e) {
+      var offsetElement = document.getElementById("chart"),
+              left = e.pos[0] + offsetElement.offsetLeft,
+              top = e.pos[1] + offsetElement.offsetTop,
+              formatterY = chart.stacked.offset() == 'expand' ? d3.format(',.2%') : d3.format(',.2f'); //TODO: stacked format should be set by caller
+        //formatterX = function(d) { return d };
+
+    var content = '<h3>' + e.series.key + '</h3>' +
+                  '<p>' +
+                  formatterY(chart.y()(e.point)) + ' on ' + xTickFormat(chart.x()(e.point)) +
+                  '</p>';
+
+    nv.tooltip.show([left, top], content);
+  });
+
+  chart.dispatch.on('tooltipHide', function(e) {
+    nv.tooltip.cleanup();
+  });
+
+
+
+  window.onresize = function() {
+    d3.select('#chart svg')
+      .attr('width', width())
+      .attr('height', height())
+      .call(chart);
+  };
+
+
+  return chart;
+});
+
+
+
+/* Inspired by Lee Byron's test data generator. */
+function stream_layers(n, m, o) {
+  if (arguments.length < 3) o = 0;
+  function bump(a) {
+    var x = 1 / (.1 + Math.random()),
+        y = 2 * Math.random() - .5,
+        z = 10 / (.1 + Math.random());
+    for (var i = 0; i < m; i++) {
+      var w = (i / m - y) * z;
+      a[i] += x * Math.exp(-w * w);
+    }
+  }
+  return d3.range(n).map(function() {
+      var a = [], i;
+      for (i = 0; i < m; i++) a[i] = o + o * Math.random();
+      for (i = 0; i < 5; i++) bump(a);
+      return a.map(stream_index);
+    });
+}
+
+/* Another layer generator using gamma distributions. */
+function stream_waves(n, m) {
+  return d3.range(n).map(function(i) {
+    return d3.range(m).map(function(j) {
+        var x = 20 * j / m - i / 3;
+        return 2 * x * Math.exp(-.5 * x);
+      }).map(stream_index);
+    });
+}
+
+function stream_index(d, i) {
+  //return {x: i, ytest: Math.max(0, d)}; //Minor error with custom y getter/setter and stacked, need to fix
+  return {x: i, y: Math.max(0, d)};
+}
+
+
+</script>
diff --git a/deprecated/stackedAreaWithLegend.js b/deprecated/stackedAreaWithLegend.js
new file mode 100644
index 0000000..a7b9813
--- /dev/null
+++ b/deprecated/stackedAreaWithLegend.js
@@ -0,0 +1,297 @@
+
+nv.models.stackedAreaWithLegend = function() {
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      getWidth = function() { return 960 },
+      getHeight = function() { return 500 },
+      color = d3.scale.category20().range(),
+      showControls = true,
+      showLegend = true;
+
+  var x = d3.scale.linear(),
+      y = d3.scale.linear(),
+      getX = function(d) { return d.x },
+      getY = function(d) { return d.y },
+      xAxis = nv.models.axis().scale(x).orient('bottom'),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30),
+      stacked = nv.models.stackedArea(),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  //TODO: let user select default
+  var controlsData = [
+    { key: 'Stacked' },
+    { key: 'Stream', disabled: true },
+    { key: 'Expanded', disabled: true }
+  ];
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var width = getWidth(),
+          height = getHeight(),
+          availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom;
+
+      var seriesData = data.filter(function(d) { return !d.disabled })
+            .reduce(function(prev, curr, index) {  //sum up all the y's
+                curr.values.forEach(function(d,i) {
+                  if (!index) prev[i] = {x: getX(d,i), y:0};
+                  prev[i].y += getY(d,i);
+                });
+                return prev;
+              }, []);
+
+
+      x   .domain(d3.extent(d3.merge(seriesData), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      y   .domain(stacked.offset() == 'zero' ?
+            [0, d3.max(seriesData, function(d) { return d.y } )] :
+            [0, 1]  // 0 - 100%
+          )
+          .range([availableHeight, 0]);
+
+      stacked
+        .width(availableWidth)
+        .height(availableHeight)
+        //.color(color)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % 20];
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var wrap = d3.select(this).selectAll('g.wrap.stackedAreaWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 stackedAreaWithLegend').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y axis');
+      gEnter.append('g').attr('class', 'stackedWrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+      gEnter.append('g').attr('class', 'controlsWrap');
+
+
+      var g = wrap.select('g');
+
+
+      if (showLegend) {
+        //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
+        margin.top = legend.height();
+
+        legend
+          .width(width/2 - margin.right)
+          .color(color);
+
+        g.select('.legendWrap')
+            .datum(data)
+            .attr('transform', 'translate(' + (width/2 - margin.left) + ',' + (-margin.top) +')')
+            .call(legend);
+      }
+
+
+      if (showControls) {
+        controls.width(280).color(['#444', '#444', '#444']);
+        g.select('.controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var stackedWrap = g.select('.stackedWrap')
+          .datum(data);
+      d3.transition(stackedWrap).call(stacked);
+
+
+      xAxis
+        .domain(x.domain())
+        .range(x.range())
+        .ticks( width / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + availableHeight + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis
+        .domain(y.domain())
+        .range(y.range())
+        .ticks(stacked.offset() == 'wiggle' ? 0 : height / 36)
+        .tickSize(-availableWidth, 0)
+        .tickFormat(stacked.offset() == 'zero' ? d3.format(',.2f') : d3.format('%')); //TODO: stacked format should be set by caller
+
+      d3.transition(g.select('.y.axis'))
+          .call(yAxis);
+
+
+
+      //TODO: FIX Logic error, screws up when series are disabled by clicking legend, then series are desiabled by clicking the area
+      stacked.dispatch.on('areaClick.toggle', function(e) {
+        if (data.filter(function(d) { return !d.disabled }).length === 1)
+          data = data.map(function(d) { 
+            if (d.disabled)
+              d.values.map(function(p) { p.y = p._y || p.y; return p }); // ....
+
+            d.disabled = false; 
+
+            return d 
+          });
+        else
+          data = data.map(function(d,i) { 
+            if (!d.disabled && i !== e.seriesIndex)
+              d.values.map(function(p) { p._y = p.y; p.y = 0; return p }); //TODO: need to use value from getY, not always d.y
+
+            if (d.disabled && i === e.seriesIndex)
+              d.values.map(function(p) { p.y = p._y || p.y; return p }); // ....
+
+            d.disabled = (i != e.seriesIndex); 
+
+            return d 
+          });
+
+        selection.transition().call(chart);
+      });
+      legend.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        if (d.disabled)
+          d.values.map(function(p) { p._y = p.y; p.y = 0; return p }); //TODO: need to use value from getY, not always d.y
+        else
+          d.values.map(function(p) { p.y = p._y; return p }); // ....
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            d.values.map(function(p) { p.y = p._y; return p }); // ....
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        if (!d.disabled) return;
+
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Stacked':
+            stacked.style('stack');
+            break;
+          case 'Stream':
+            stacked.style('stream');
+            break;
+          case 'Expanded':
+            stacked.style('expand');
+            break;
+        }
+
+        selection.transition().call(chart);
+      });
+
+
+      /*
+      legend.dispatch.on('legendMouseover', function(d, i) {
+        d.hover = true;
+        selection.transition().call(chart)
+      });
+
+      legend.dispatch.on('legendMouseout', function(d, i) {
+        d.hover = false;
+        selection.transition().call(chart)
+      });
+      */
+
+      stacked.dispatch.on('tooltipShow', function(e) {
+        //disable tooltips when value ~= 0
+        //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+        if (!Math.round(getY(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+          setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+          return false;
+        }
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+        dispatch.tooltipShow(e);
+      });
+
+      stacked.dispatch.on('tooltipHide', function(e) {
+        dispatch.tooltipHide(e);
+      });
+    });
+
+
+
+    /*
+    // If the legend changed the margin's height, need to recalc positions... should think of a better way to prevent duplicate work
+    if (margin.top != legend.height())
+      chart(selection);
+     */
+
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.stacked = stacked;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, stacked, 'interactive', 'offset', 'order', 'style', 'clipEdge', 'size', 'forceX', 'forceY', 'forceSize');
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_); //not used locally, so could jsut be a rebind
+    stacked.x(getX);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    stacked.y(getY);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return getWidth;
+    getWidth = d3.functor(_);
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return getHeight;
+    getHeight = d3.functor(_);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/examples/bullet.html b/examples/bullet.html
new file mode 100644
index 0000000..f18bc8f
--- /dev/null
+++ b/examples/bullet.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+</style>
+<body>
+
+<br> <br> <br> <br> <br>
+
+<div class="gallery" id="chart"></div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/bullet.js"></script>
+<script>
+
+var width = 960,
+    height = 55,
+    margin = {top: 5, right: 40, bottom: 20, left: 120};
+
+var chart = nv.models.bullet()
+    .width(width - margin.right - margin.left)
+    .height(height - margin.top - margin.bottom);
+
+
+  data = [
+  {"title":"Revenue","subtitle":"US$, in thousands","ranges":[-150,-225,-300],"measures":[-220],"markers":[-250]}
+  /*
+  //TODO: fix the tooltip offset if multiple
+  ,
+  {"title":"Profit","subtitle":"%","ranges":[20,25,30],"measures":[21],"markers":[26]},
+  {"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"measures":[100],"markers":[550]},
+  {"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"measures":[1000],"markers":[1000]},
+  {"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"measures":[3.2,4.7],"markers":[4.4]}
+  */
+];
+
+  //TODO: to be consistent with other models, should be appending a g to an already made svg, not creating the svg element
+  var vis = d3.select("#chart").selectAll("svg")
+      .data(data)
+    .enter().append("svg")
+      .attr("class", "bullet nvd3")
+      .attr("width", width)
+      .attr("height", height)
+    //.append("g")
+      //.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
+
+  vis
+      .transition()
+      .duration(1000)
+      .call(chart);
+
+
+  window.transition = function() {
+    vis.datum(randomize);
+
+    vis
+      .transition()
+      .duration(1000)
+      .call(chart);
+  };
+
+
+
+
+
+
+
+
+function randomize(d) {
+  if (!d.randomizer) d.randomizer = randomizer(d);
+  d.ranges = d.ranges.map(d.randomizer);
+  d.markers = d.markers.map(d.randomizer);
+  d.measures = d.measures.map(d.randomizer);
+  return d;
+}
+
+function randomizer(d) {
+  var k = d3.max(d.ranges) * .2;
+  return function(d) {
+    return Math.max(0, d + k * (Math.random() - .5));
+  };
+}
+
+
+
+
+d3.select('body').on('click', window.transition);
+
+
+</script>
diff --git a/examples/bulletChart.html b/examples/bulletChart.html
new file mode 100644
index 0000000..7c5cd98
--- /dev/null
+++ b/examples/bulletChart.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+  font-family: Arial;
+}
+
+</style>
+<body>
+
+<br> <br> <br> <br> <br>
+
+Normal Bullet Chart 
+<div class="gallery with-transitions" id="chart"></div>
+
+Bullet Chart with Custom Labels
+<div class='gallery with-transitions' id='chart2'></div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/bullet.js"></script>
+<script src="../src/models/bulletChart.js"></script>
+<script>
+
+var width = 960,
+    height = 80,
+    margin = {top: 5, right: 40, bottom: 20, left: 120};
+
+var chart = nv.models.bulletChart()
+    .width(width - margin.right - margin.left)
+    .height(height - margin.top - margin.bottom);
+
+var chart2 = nv.models.bulletChart()
+    .width(width - margin.right - margin.left)
+    .height(height - margin.top - margin.bottom);
+
+  data = [
+  {"title":"Revenue","subtitle":"US$, in thousands","ranges":[150,225,300],"measures":[220],"markers":[250]}
+  /*
+  //TODO: fix the tooltip offset if multiple
+  ,
+  {"title":"Profit","subtitle":"%","ranges":[20,25,30],"measures":[21],"markers":[26]},
+  {"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"measures":[100],"markers":[550]},
+  {"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"measures":[1000],"markers":[1000]},
+  {"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"measures":[3.2,4.7],"markers":[4.4]}
+  */
+];
+
+dataWithLabels = [
+  {"title":"Revenue","subtitle":"US$, in thousands","ranges":[150,225,300],"measures":[220],"markers":[250],
+  "rangeLabels":['Maximum Inventory','Average Inventory','Minimum Inventory'], "measureLabels":['Current Inventory'], "markerLabels":['Target Inventory'] }
+];
+
+  //TODO: to be consistent with other models, should be appending a g to an already made svg, not creating the svg element
+  var vis = d3.select("#chart").selectAll("svg")
+      .data(data)
+    .enter().append("svg")
+      .attr("class", "bullet nvd3")
+      .attr("width", width)
+      .attr("height", height);
+
+  vis
+      .transition()
+      .duration(1000)
+      .call(chart);
+
+
+  var vis2 = d3.select("#chart2").selectAll("svg")
+    .data(dataWithLabels)
+    .enter().append('svg')
+      .attr('class',"bullet nvd3")
+      .attr("width",width)
+      .attr("height",height);
+
+      vis2.transition().duration(1000).call(chart2);
+
+
+  window.transition = function() {
+    vis.datum(randomize)
+      .transition()
+      .duration(1000)
+      .call(chart);
+
+    vis2.datum(randomize)
+      .transition()
+      .duration(1000)
+      .call(chart2);
+  };
+
+
+function randomize(d) {
+  if (!d.randomizer) d.randomizer = randomizer(d);
+  d.ranges = d.ranges.map(d.randomizer);
+  d.markers = d.markers.map(d.randomizer);
+  d.measures = d.measures.map(d.randomizer);
+  return d;
+}
+
+function randomizer(d) {
+  var k = d3.max(d.ranges) * .2;
+  return function(d) {
+    return Math.max(0, d + k * (Math.random() - .5));
+  };
+}
+
+
+
+
+d3.select('body').on('click', window.transition);
+
+
+</script>
diff --git a/examples/crossfilter.html b/examples/crossfilter.html
new file mode 100644
index 0000000..ce22807
--- /dev/null
+++ b/examples/crossfilter.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart">
+    <svg style="height: 500px;"></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/crossfilter.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFocusChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+extend = function(destination, source) {
+    for (var property in source) {
+    if (property in destination) { 
+      if ( typeof source[property] === "object" && 
+        typeof destination[property] === "object") {
+          destination[property] = extend(destination[property], source[property]);
+      } else {
+        continue; 
+      } 
+    } else {
+      destination[property] = source[property];
+    };
+    }
+    return destination;
+};
+
+nv.addGraph(function() {
+  var chart = nv.models.lineWithFocusChart();
+
+  chart.xAxis
+      .tickFormat(d3.format(',f'));
+  chart.x2Axis
+      .tickFormat(d3.format(',f'));
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+  chart.y2Axis
+      .tickFormat(d3.format(',.2f'));
+
+  var dimension = testCrossfilterData().data; 
+
+   var data = normalizeData(dimension.top(Infinity), 
+        [
+        { 
+          name: 'Stream #1',
+          key: 'stream1'
+        },
+        { 
+          name: 'Stream #2',
+          key: 'stream2'
+        },
+        { 
+          name: 'Stream #3',
+          key: 'stream3'
+        }
+        ], 'x');  
+    
+  d3.select('#chart svg')
+      .datum(data)
+    .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+function normalizeData(data, series, xAxis)
+  {
+    var sort = crossfilter.quicksort.by(function(d) { return d[xAxis]; });
+    var sorted = sort(data, 0, data.length);
+    
+    var result = [];
+
+    series.forEach(function(serie, index)
+    {
+      result.push({key: serie.name, values: [], color: serie.color});
+    });
+    
+    data.forEach(function(data, dataIndex)
+    {
+      series.forEach(function(serie, serieIndex)
+      {
+        result[serieIndex].values.push({x: data[xAxis],  y: data[serie.key]});
+      });
+    });
+    
+    return result;
+  };
+
+function testCrossfilterData() {
+  var data = crossfilter(testData());
+  
+  try 
+  {
+    data.data = data.dimension(function(d) { return d.y; });
+  } catch (e) 
+  {
+    console.log(e.stack);
+  }
+  
+  return data;
+}
+
+function testData() {
+  
+  var data1 = [];
+  var data2 = [];
+  var data3 = [];
+  
+  stream_layers(3,128,.1).map(function(layer, index) {
+    layer.forEach(function(item, i) {
+    var object = { x: item.x };
+    object['stream' + (index + 1)] = item.y;
+    eval('data' + (index + 1)).push(object);
+  });
+  });
+  
+  var data = extend(data1, data2);
+  var result = extend(data, data3);
+  
+  return result;
+}
+
+
+</script>
diff --git a/examples/crossfilterWithDimentions.html b/examples/crossfilterWithDimentions.html
new file mode 100644
index 0000000..cff2a6b
--- /dev/null
+++ b/examples/crossfilterWithDimentions.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart">
+    <svg style="height: 500px;"></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/crossfilter.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFocusChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+extend = function(destination, source) {
+    for (var property in source) {
+    if (property in destination) { 
+      if ( typeof source[property] === "object" && 
+        typeof destination[property] === "object") {
+          destination[property] = extend(destination[property], source[property]);
+      } else {
+        continue; 
+      } 
+    } else {
+      destination[property] = source[property];
+    };
+    }
+    return destination;
+};
+
+nv.addGraph(function() {
+  var chart = nv.models.lineWithFocusChart();
+
+  chart.xAxis
+      .tickFormat(d3.format(',f'));
+  chart.x2Axis
+      .tickFormat(d3.format(',f'));
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+  chart.y2Axis
+      .tickFormat(d3.format(',.2f'));
+
+  var rawData = testCrossfilterData();  
+  var data = normalizeData(rawData.datum, 
+        [
+        { 
+          name: 'Stream #1',
+          key: 'stream1'
+        },
+        { 
+          name: 'Stream #2',
+          key: 'stream2'
+        },
+        { 
+          name: 'Stream #3',
+          key: 'stream3'
+        }
+        ]);  
+    
+  d3.select('#chart svg')
+      .datum(data)
+    .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+function normalizeData(data, series)
+  {
+    var sort = crossfilter.quicksort.by(function(d) { return d.key; });
+    var result = [];
+    
+    for (var i = 0; i < series.length; i++)
+    {
+      var seriesData = data.top(Infinity);
+      var sorted = sort(seriesData, 0, seriesData.length);
+      var values = [];
+      
+      
+      seriesData.forEach(function(item, index)
+      {
+        values.push({x: item.key,  y: item.value[series[i].key]});
+      });
+      
+      result.push({key: series[i].name, values: values, color: series[i].color});
+    };
+    
+    return result;
+  };
+
+function testCrossfilterData() {
+  var data = crossfilter(testData());
+  
+  try 
+  {
+    data.data = data.dimension(function(d) { return d.x; });
+    data.datum = data.data.group(function(d) { return d; });
+    data.datum.reduce(function (p, v) { 
+                p.count++;
+                p.stream1 += v.stream1; 
+                p.stream2 += v.stream2;
+                p.stream3 += v.stream3;
+                return p; }, 
+              function (p, v) { 
+                p.count--;
+                p.stream1 -= v.stream1; 
+                p.stream2 -= v.stream2;
+                p.stream3 -= v.stream3;
+                return p; },
+              function () { return {count: 0, stream1: 0, stream2: 0, stream3: 0}; });    
+  } catch (e) 
+  {
+    console.log(e.stack);
+  }
+  
+  return data;
+}
+
+function testData() {
+  
+  var data1 = [];
+  var data2 = [];
+  var data3 = [];
+  
+  stream_layers(3,128,.1).map(function(layer, index) {
+    layer.forEach(function(item, i) {
+    var object = { x: item.x };
+    object['stream' + (index + 1)] = item.y;
+    eval('data' + (index + 1)).push(object);
+  });
+  });
+  
+  var data = extend(data1, data2);
+  var result = extend(data, data3);
+  
+  return result;
+}
+
+
+</script>
diff --git a/examples/crossfilterWithTables.html b/examples/crossfilterWithTables.html
new file mode 100644
index 0000000..95abd99
--- /dev/null
+++ b/examples/crossfilterWithTables.html
@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart">
+    <svg style="height: 500px;"></svg>
+  </div>
+  <div id="stream1" style="float: left; margin-left: 15px;">
+    <div><h1>Stream #1</h1></div>
+  </div>
+  <div id="stream2" style="float: left; margin-left: 15px;">
+    <div><h1>Stream #2</h1></div>
+  </div>
+  <div id="stream3" style="float: left; margin-left: 15px;">
+    <div><h1>Stream #3</h1></div>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/crossfilter.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFocusChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+extend = function(destination, source) {
+    for (var property in source) {
+    if (property in destination) { 
+      if ( typeof source[property] === "object" &&
+        typeof destination[property] === "object") {
+          destination[property] = extend(destination[property], source[property]);
+      } else {
+        continue;
+      }
+    } else {
+      destination[property] = source[property];
+    };
+    }
+    return destination;
+};
+
+var rawData = testCrossfilterData();
+
+nv.addGraph(function() {
+  var chart = nv.models.lineWithFocusChart();
+
+  chart.xAxis
+      .tickFormat(d3.format(',f'));
+  chart.x2Axis
+      .tickFormat(d3.format(',f'));
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+  chart.y2Axis
+      .tickFormat(d3.format(',.2f'));
+
+  chart.dispatch.on('brush', click);
+
+  var data = normalizeData(rawData.datum, 
+        [
+        {
+          name: 'Stream #1',
+          key: 'stream1'
+        },
+        {
+          name: 'Stream #2',
+          key: 'stream2'
+        },
+        {
+          name: 'Stream #3',
+          key: 'stream3'
+        }
+        ]);
+nv.log(data);
+  d3.select('#chart svg')
+      .datum(data)
+    .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+function click(e) {
+  extent = e.extent;
+
+  rawData.data.filter([extent[0], extent[1]]);
+  streams("stream1");
+  streams("stream2");
+  streams("stream3");
+}
+
+function streams(key) {
+  var topData = rawData.data.top(5);
+
+  var stream = d3.select("div#" + key).selectAll(".stream-data")
+      .data(topData, function(d) {
+        return d.key;
+      });
+
+  stream
+    .html(function(d) {
+      return d[key];
+    })
+
+  stream.enter().append("div")
+      .attr("class", "stream-data")
+      .html(function(d) {
+        return  d[key]; 
+      })
+
+  stream.exit().remove();
+
+  stream.order();
+}
+
+function normalizeData(data, series) {
+  var sort = crossfilter.quicksort.by(function(d) { return d.key; });
+  var result = [];
+
+  for (var i = 0; i < series.length; i++) {
+    var seriesData = data.top(Infinity);
+    var sorted = sort(seriesData, 0, seriesData.length);
+    var values = [];
+
+    seriesData.forEach(function(item, index) {
+        values.push({x: item.key,  y: item.value[series[i].key]});
+    });
+
+    result.push({key: series[i].name, values: values, color: series[i].color});
+  };
+
+  return result;
+};
+
+function testCrossfilterData() {
+  var data = crossfilter(testData());
+
+  try {
+    data.data = data.dimension(function(d) { return d.x; });
+    data.datum = data.data.group(function(d) { return d; });
+    data.datum.reduce(
+      function (p, v) {
+        p.count++;
+        p.stream1 += v.stream1;
+        p.stream2 += v.stream2;
+        p.stream3 += v.stream3;
+        return p;
+      },
+      function (p, v) {
+        p.count--;
+        p.stream1 -= v.stream1;
+        p.stream2 -= v.stream2;
+        p.stream3 -= v.stream3;
+        return p;
+      },
+      function () {
+        return {count: 0, stream1: 0, stream2: 0, stream3: 0};
+      });
+
+    data.stream1 = data.dimension(function(d) { return d.stream1; });
+    data.stream1datum = data.data.group(function(d) { return d; });
+    data.stream1datum.reduce(
+      function (p, v) {
+        p.count++;
+        p.stream1 += v.stream1;
+        p.stream2 += v.stream2;
+        p.stream3 += v.stream3;
+        return p;
+      },
+      function (p, v) {
+        p.count--;
+        p.stream1 -= v.stream1;
+        p.stream2 -= v.stream2;
+        p.stream3 -= v.stream3;
+        return p;
+      },
+      function () {
+        return {count: 0, stream1: 0, stream2: 0, stream3: 0};
+      }
+    );
+
+    data.stream2 = data.dimension(function(d) { return d.stream2; });
+    data.stream2datum = data.data.group(function(d) { return d; });
+    data.stream2datum.reduce(
+      function (p, v) {
+        p.count++;
+        p.stream1 += v.stream1;
+        p.stream2 += v.stream2;
+        p.stream3 += v.stream3;
+        return p;
+      },
+      function (p, v) {
+        p.count--;
+        p.stream1 -= v.stream1;
+        p.stream2 -= v.stream2;
+        p.stream3 -= v.stream3;
+        return p;
+      },
+      function () {
+        return {count: 0, stream1: 0, stream2: 0, stream3: 0};
+      }
+    );
+
+    data.stream3 = data.dimension(function(d) { return d.stream3; });
+    data.stream3datum = data.data.group(function(d) { return d; });
+    data.stream3datum.reduce(
+      function (p, v) {
+        p.count++;
+        p.stream1 += v.stream1;
+        p.stream2 += v.stream2;
+        p.stream3 += v.stream3;
+        return p; },
+      function (p, v) {
+        p.count--;
+        p.stream1 -= v.stream1;
+        p.stream2 -= v.stream2;
+        p.stream3 -= v.stream3;
+        return p;
+      },
+      function () {
+        return {count: 0, stream1: 0, stream2: 0, stream3: 0};
+      }
+    );
+  } catch (e) {
+    nv.log(e.stack);
+  }
+
+  return data;
+}
+
+function testData() {
+  var data1 = [];
+  var data2 = [];
+  var data3 = [];
+
+  stream_layers(3,128,.1).map(function(layer, index) {
+    layer.forEach(function(item, i) {
+      var object = { x: item.x };
+      object['stream' + (index + 1)] = item.y;
+      eval('data' + (index + 1)).push(object);
+    });
+  });
+
+  var data = extend(data1, data2);
+  var result = extend(data, data3);
+
+  return result;
+}
+
+
+</script>
diff --git a/examples/cumulativeLineChart.html b/examples/cumulativeLineChart.html
new file mode 100644
index 0000000..a0c4b58
--- /dev/null
+++ b/examples/cumulativeLineChart.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+
+.chart svg {
+  height: 450px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+  <div class='navigation'>
+      Tests:
+      <a href="../test/lineChartTest.html">Line Chart</a>
+      <a href="../test/stackedAreaChartTest.html">Stacked Area</a>
+      <a href="cumulativeLineChart.html">Cumulative Line</a>
+  </div>
+  <div id="chart1" class='chart with-transitions'>
+    <strong>Chart with new tooltips and guide line (with-transitions)</strong>
+    <svg></svg>
+  </div>
+  <div id="chart2" class='chart with-transitions'>
+    <strong>Chart with old tooltips (with-transitions)</strong>
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/cumulativeLineChart.js"></script>
+<script>
+
+
+// Wrapping in nv.addGraph allows for '0 timeout render', stores rendered charts in nv.graphs, and may do more in the future... it's NOT required
+
+nv.addGraph(function() {  
+   var chart = nv.models.cumulativeLineChart()
+             .useInteractiveGuideline(true)
+             .x(function(d) { return d[0] })
+             .y(function(d) { return d[1]/100 })
+             .color(d3.scale.category10().range())
+             .average(function(d) { return d.mean/100; })
+             .transitionDuration(300)
+             .clipVoronoi(false);
+
+   chart.xAxis
+      .tickFormat(function(d) {
+          return d3.time.format('%m/%d/%y')(new Date(d))
+        });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.1%'));
+
+  d3.select('#chart1 svg')
+      .datum(cumulativeTestData())
+      .call(chart);
+
+  //TODO: Figure out a good way to do this automatically
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+nv.addGraph(function() {  
+   var chart = nv.models.cumulativeLineChart()
+             .useInteractiveGuideline(false)
+             .rightAlignYAxis(true)
+             .margin({right:90})
+             .x(function(d) { return d[0] })
+             .y(function(d) { return d[1]/100 })
+             .color(d3.scale.category10().range())
+             .average(function(d) { return d.mean/100; })
+             .clipVoronoi(false);
+
+   chart.xAxis
+      .tickFormat(function(d) {
+          return d3.time.format('%m/%d/%y')(new Date(d))
+        });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.1%'));
+
+  d3.select('#chart2 svg')
+      .datum(cumulativeTestData())
+      .call(chart);
+
+  //TODO: Figure out a good way to do this automatically
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+
+function flatTestData() {
+  return [
+    {
+      key: "Snakes",
+      values: [0,1,2,3,4,5,6,7,8,9].map(function(d) {
+        var currentDate = new Date();
+        currentDate.setDate(currentDate.getDate() + d);
+        return [currentDate, 0]
+      })
+    }
+  ];
+}
+
+
+function cumulativeTestData() {
+
+
+
+  return [
+
+                {
+                    key: "Long",
+                    values: [ [ 1083297600000 , -2.974623048543] , [ 1085976000000 , -1.7740300785979] , [ 1088568000000 , 4.4681318138177] , [ 1091246400000 , 7.0242541001353] , [ 1093924800000 , 7.5709603667586] , [ 1096516800000 , 20.612245065736] , [ 1099195200000 , 21.698065237316] , [ 1101790800000 , 40.501189458018] , [ 1104469200000 , 50.464679413194] , [ 1107147600000 , 48.917421973355] , [ 1109566800000 , 63.750936549160] , [ 1112245200000 , 59.072499126460] , [ 1114833600000 , 43.373158880492] , [ 1117512000000 , 54.490918947556] , [ 1120104000000 , 56.661178852079] , [ 1122782400000 , 73.450103545496] , [ 1125460800000 , 71.714526354907] , [ 1128052800000 , 85.221664349607] , [ 1130734800000 , 77.769261392481] , [ 1133326800000 , 95.966528716500] , [ 1136005200000 , 107.59132116397] , [ 1138683600000 , 127.25740096723] , [ 1141102800000 , 122.13917498830] , [ 1143781200000 , 126.53657279774] , [ 1146369600000 , 132.39300992970] , [ 1149048000000 , 120.11238242904] , [ 1151640000000 , 118.41408917750] , [ 1154318400000 , 107.92918924621] , [ 1156996800000 , 110.28057249569] , [ 1159588800000 , 117.20485334692] , [ 1162270800000 , 141.33556756948] , [ 1164862800000 , 159.59452727893] , [ 1167541200000 , 167.09801853304] , [ 1170219600000 , 185.46849659215] , [ 1172638800000 , 184.82474099990] , [ 1175313600000 , 195.63155213887] , [ 1177905600000 , 207.40597044171] , [ 1180584000000 , 230.55966698196] , [ 1183176000000 , 239.55649035292] , [ 1185854400000 , 241.35915085208] , [ 1188532800000 , 239.89428956243] , [ 1191124800000 , 260.47781917715] , [ 1193803200000 , 276.39457482225] , [ 1196398800000 , 258.66530682672] , [ 1199077200000 , 250.98846121893] , [ 1201755600000 , 226.89902618127] , [ 1204261200000 , 227.29009273807] , [ 1206936000000 , 218.66476654350] , [ 1209528000000 , 232.46605902918] , [ 1212206400000 , 253.25667081117] , [ 1214798400000 , 235.82505363925] , [ 1217476800000 , 229.70112774254] , [ 1220155200000 , 225.18472705952] , [ 1222747200000 , 189.13661746552] , [ 1225425600000 , 149.46533007301] , [ 1228021200000 , 131.00340772114] , [ 1230699600000 , 135.18341728866] , [ 1233378000000 , 109.15296887173] , [ 1235797200000 , 84.614772549760] , [ 1238472000000 , 100.60810015326] , [ 1241064000000 , 141.50134895610] , [ 1243742400000 , 142.50405083675] , [ 1246334400000 , 139.81192372672] , [ 1249012800000 , 177.78205544583] , [ 1251691200000 , 194.73691933074] , [ 1254283200000 , 209.00838460225] , [ 1256961600000 , 198.19855877420] , [ 1259557200000 , 222.37102417812] , [ 1262235600000 , 234.24581081250] , [ 1264914000000 , 228.26087689346] , [ 1267333200000 , 248.81895126250] , [ 1270008000000 , 270.57301075186] , [ 1272600000000 , 292.64604322550] , [ 1275278400000 , 265.94088520518] , [ 1277870400000 , 237.82887467569] , [ 1280548800000 , 265.55973314204] , [ 1283227200000 , 248.30877330928] , [ 1285819200000 , 278.14870066912] , [ 1288497600000 , 292.69260960288] , [ 1291093200000 , 300.84263809599] , [ 1293771600000 , 326.17253914628] , [ 1296450000000 , 337.69335966505] , [ 1298869200000 , 339.73260965121] , [ 1301544000000 , 346.87865120765] , [ 1304136000000 , 347.92991526628] , [ 1306814400000 , 342.04627502669] , [ 1309406400000 , 333.45386231233] , [ 1312084800000 , 323.15034181243] , [ 1314763200000 , 295.66126882331] , [ 1317355200000 , 251.48014579253] , [ 1320033600000 , 295.15424257905] , [ 1322629200000 , 294.54766764397] , [ 1325307600000 , 295.72906119051] , [ 1327986000000 , 325.73351347613] , [ 1330491600000 , 340.16106061186] , [ 1333166400000 , 345.15514071490] , [ 1335758400000 , 337.10259395679] , [ 1338436800000 , 318.68216333837] , [ 1341028800000 , 317.03683945246] , [ 1343707200000 , 318.53549659997] , [ 1346385600000 , 332.85381464104] , [ 1348977600000 , 337.36534373477] , [ 1351656000000 , 350.27872156161] , [ 1354251600000 , 349.45128876100]]
+                    ,
+                    mean: 250
+                },
+                {
+                    key: "Short",
+                    values: [ [ 1083297600000 , -0.77078283705125] , [ 1085976000000 , -1.8356366650335] , [ 1088568000000 , -5.3121322073127] , [ 1091246400000 , -4.9320975829662] , [ 1093924800000 , -3.9835408823225] , [ 1096516800000 , -6.8694685316805] , [ 1099195200000 , -8.4854877428545] , [ 1101790800000 , -15.933627197384] , [ 1104469200000 , -15.920980069544] , [ 1107147600000 , -12.478685045651] , [ 1109566800000 , -17.297761889305] , [ 1112245200000 , -15.247129891020] , [ 1114833600000 , -11.336459046839] , [ 1117512000000 , -13.298990907415] , [ 1120104000000 , -16.360027000056] , [ 1122782400000 , -18.527929522030] , [ 1125460800000 , -22.176516738685] , [ 1128052800000 , -23.309665368330] , [ 1130734800000 , -21.629973409748] , [ 1133326800000 , -24.186429093486] , [ 1136005200000 , -29.116707312531] , [ 1138683600000 , -37.188037874864] , [ 1141102800000 , -34.689264821198] , [ 1143781200000 , -39.505932105359] , [ 1146369600000 , -45.339572492759] , [ 1149048000000 , -43.849353192764] , [ 1151640000000 , -45.418353922571] , [ 1154318400000 , -44.579281059919] , [ 1156996800000 , -44.027098363370] , [ 1159588800000 , -41.261306759439] , [ 1162270800000 , -47.446018534027] , [ 1164862800000 , -53.413782948909] , [ 1167541200000 , -50.700723647419] , [ 1170219600000 , -56.374090913296] , [ 1172638800000 , -61.754245220322] , [ 1175313600000 , -66.246241587629] , [ 1177905600000 , -75.351650899999] , [ 1180584000000 , -81.699058262032] , [ 1183176000000 , -82.487023368081] , [ 1185854400000 , -86.230055113277] , [ 1188532800000 , -84.746914818507] , [ 1191124800000 , -100.77134971977] , [ 1193803200000 , -109.95435565947] , [ 1196398800000 , -99.605672965057] , [ 1199077200000 , -99.607249394382] , [ 1201755600000 , -94.874614950188] , [ 1204261200000 , -105.35899063105] , [ 1206936000000 , -106.01931193802] , [ 1209528000000 , -110.28883571771] , [ 1212206400000 , -119.60256203030] , [ 1214798400000 , -115.62201315802] , [ 1217476800000 , -106.63824185202] , [ 1220155200000 , -99.848746318951] , [ 1222747200000 , -85.631219602987] , [ 1225425600000 , -63.547909262067] , [ 1228021200000 , -59.753275364457] , [ 1230699600000 , -63.874977883542] , [ 1233378000000 , -56.865697387488] , [ 1235797200000 , -54.285579501988] , [ 1238472000000 , -56.474659581885] , [ 1241064000000 , -63.847137745644] , [ 1243742400000 , -68.754247867325] , [ 1246334400000 , -69.474257009155] , [ 1249012800000 , -75.084828197067] , [ 1251691200000 , -77.101028237237] , [ 1254283200000 , -80.454866854387] , [ 1256961600000 , -78.984349952220] , [ 1259557200000 , -83.041230807854] , [ 1262235600000 , -84.529748348935] , [ 1264914000000 , -83.837470195508] , [ 1267333200000 , -87.174487671969] , [ 1270008000000 , -90.342293007487] , [ 1272600000000 , -93.550928464991] , [ 1275278400000 , -85.833102140765] , [ 1277870400000 , -79.326501831592] , [ 1280548800000 , -87.986196903537] , [ 1283227200000 , -85.397862121771] , [ 1285819200000 , -94.738167050020] , [ 1288497600000 , -98.661952897151] , [ 1291093200000 , -99.609665952708] , [ 1293771600000 , -103.57099836183] , [ 1296450000000 , -104.04353411322] , [ 1298869200000 , -108.21382792587] , [ 1301544000000 , -108.74006900920] , [ 1304136000000 , -112.07766650960] , [ 1306814400000 , -109.63328199118] , [ 1309406400000 , -106.53578966772] , [ 1312084800000 , -103.16480871469] , [ 1314763200000 , -95.945078001828] , [ 1317355200000 , -81.226687340874] , [ 1320033600000 , -90.782206596168] , [ 1322629200000 , -89.484445370113] , [ 1325307600000 , -88.514723135326] , [ 1327986000000 , -93.381292724320] , [ 1330491600000 , -97.529705609172] , [ 1333166400000 , -99.520481439189] , [ 1335758400000 , -99.430184898669] , [ 1338436800000 , -93.349934521973] , [ 1341028800000 , -95.858475286491] , [ 1343707200000 , -95.522755836605] , [ 1346385600000 , -98.503848862036] , [ 1348977600000 , -101.49415251896] , [ 1351656000000 , -101.50099325672] , [ 1354251600000 , -99.487094927489]]
+                    ,
+                    mean: -60
+                },
+                
+                 
+                {
+                    key: "Gross",
+                    mean: 125,
+                    values: [ [ 1083297600000 , -3.7454058855943] , [ 1085976000000 , -3.6096667436314] , [ 1088568000000 , -0.8440003934950] , [ 1091246400000 , 2.0921565171691] , [ 1093924800000 , 3.5874194844361] , [ 1096516800000 , 13.742776534056] , [ 1099195200000 , 13.212577494462] , [ 1101790800000 , 24.567562260634] , [ 1104469200000 , 34.543699343650] , [ 1107147600000 , 36.438736927704] , [ 1109566800000 , 46.453174659855] , [ 1112245200000 , 43.825369235440] , [ 1114833600000 , 32.036699833653] , [ 1117512000000 , 41.191928040141] , [ 1120104000000 , 40.301151852023] , [ 1122782400000 , 54.922174023466] , [ 1125460800000 , 49.538009616222] , [ 1128052800000 , 61.911998981277] , [ 1130734800000 , 56.139287982733] , [ 1133326800000 , 71.780099623014] , [ 1136005200000 , 78.474613851439] , [ 1138683600000 , 90.069363092366] , [ 1141102800000 , 87.449910167102] , [ 1143781200000 , 87.030640692381] , [ 1146369600000 , 87.053437436941] , [ 1149048000000 , 76.263029236276] , [ 1151640000000 , 72.995735254929] , [ 1154318400000 , 63.349908186291] , [ 1156996800000 , 66.253474132320] , [ 1159588800000 , 75.943546587481] , [ 1162270800000 , 93.889549035453] , [ 1164862800000 , 106.18074433002] , [ 1167541200000 , 116.39729488562] , [ 1170219600000 , 129.09440567885] , [ 1172638800000 , 123.07049577958] , [ 1175313600000 , 129.38531055124] , [ 1177905600000 , 132.05431954171] , [ 1180584000000 , 148.86060871993] , [ 1183176000000 , 157.06946698484] , [ 1185854400000 , 155.12909573880] , [ 1188532800000 , 155.14737474392] , [ 1191124800000 , 159.70646945738] , [ 1193803200000 , 166.44021916278] , [ 1196398800000 , 159.05963386166] , [ 1199077200000 , 151.38121182455] , [ 1201755600000 , 132.02441123108] , [ 1204261200000 , 121.93110210702] , [ 1206936000000 , 112.64545460548] , [ 1209528000000 , 122.17722331147] , [ 1212206400000 , 133.65410878087] , [ 1214798400000 , 120.20304048123] , [ 1217476800000 , 123.06288589052] , [ 1220155200000 , 125.33598074057] , [ 1222747200000 , 103.50539786253] , [ 1225425600000 , 85.917420810943] , [ 1228021200000 , 71.250132356683] , [ 1230699600000 , 71.308439405118] , [ 1233378000000 , 52.287271484242] , [ 1235797200000 , 30.329193047772] , [ 1238472000000 , 44.133440571375] , [ 1241064000000 , 77.654211210456] , [ 1243742400000 , 73.749802969425] , [ 1246334400000 , 70.337666717565] , [ 1249012800000 , 102.69722724876] , [ 1251691200000 , 117.63589109350] , [ 1254283200000 , 128.55351774786] , [ 1256961600000 , 119.21420882198] , [ 1259557200000 , 139.32979337027] , [ 1262235600000 , 149.71606246357] , [ 1264914000000 , 144.42340669795] , [ 1267333200000 , 161.64446359053] , [ 1270008000000 , 180.23071774437] , [ 1272600000000 , 199.09511476051] , [ 1275278400000 , 180.10778306442] , [ 1277870400000 , 158.50237284410] , [ 1280548800000 , 177.57353623850] , [ 1283227200000 , 162.91091118751] , [ 1285819200000 , 183.41053361910] , [ 1288497600000 , 194.03065670573] , [ 1291093200000 , 201.23297214328] , [ 1293771600000 , 222.60154078445] , [ 1296450000000 , 233.35556801977] , [ 1298869200000 , 231.22452435045] , [ 1301544000000 , 237.84432503045] , [ 1304136000000 , 235.55799131184] , [ 1306814400000 , 232.11873570751] , [ 1309406400000 , 226.62381538123] , [ 1312084800000 , 219.34811113539] , [ 1314763200000 , 198.69242285581] , [ 1317355200000 , 168.90235629066] , [ 1320033600000 , 202.64725756733] , [ 1322629200000 , 203.05389378105] , [ 1325307600000 , 204.85986680865] , [ 1327986000000 , 229.77085616585] , [ 1330491600000 , 239.65202435959] , [ 1333166400000 , 242.33012622734] , [ 1335758400000 , 234.11773262149] , [ 1338436800000 , 221.47846307887] , [ 1341028800000 , 216.98308827912] , [ 1343707200000 , 218.37781386755] , [ 1346385600000 , 229.39368622736] , [ 1348977600000 , 230.54656412916] , [ 1351656000000 , 243.06087025523] , [ 1354251600000 , 244.24733578385]]
+                },
+                {
+                    key: "S&P 1500",
+                    values: [ [ 1083297600000 , -1.7798428181819] , [ 1085976000000 , -0.36883324836999] , [ 1088568000000 , 1.7312581046040] , [ 1091246400000 , -1.8356125950460] , [ 1093924800000 , -1.5396564170877] , [ 1096516800000 , -0.16867791409247] , [ 1099195200000 , 1.3754263993413] , [ 1101790800000 , 5.8171640898041] , [ 1104469200000 , 9.4350145241608] , [ 1107147600000 , 6.7649081510160] , [ 1109566800000 , 9.1568499314776] , [ 1112245200000 , 7.2485090994419] , [ 1114833600000 , 4.8762222306595] , [ 1117512000000 , 8.5992339354652] , [ 1120104000000 , 9.0896517982086] , [ 1122782400000 , 13.394644048577] , [ 1125460800000 , 12.311842010760] , [ 1128052800000 , 13.221003650717] , [ 1130734800000 , 11.218481009206] , [ 1133326800000 , 15.565352598445] , [ 1136005200000 , 15.623703865926] , [ 1138683600000 , 19.275255326383] , [ 1141102800000 , 19.432433717836] , [ 1143781200000 , 21.232881244655] , [ 1146369600000 , 22.798299192958] , [ 1149048000000 , 19.006125095476] , [ 1151640000000 , 19.151889158536] , [ 1154318400000 , 19.340022855452] , [ 1156996800000 , 22.027934841859] , [ 1159588800000 , 24.903300681329] , [ 1162270800000 , 29.146492833877] , [ 1164862800000 , 31.781626082589] , [ 1167541200000 , 33.358770738428] , [ 1170219600000 , 35.622684613497] , [ 1172638800000 , 33.332821711366] , [ 1175313600000 , 34.878748635832] , [ 1177905600000 , 40.582332613844] , [ 1180584000000 , 45.719535502920] , [ 1183176000000 , 43.239344722386] , [ 1185854400000 , 38.550955100342] , [ 1188532800000 , 40.585368816283] , [ 1191124800000 , 45.601374057981] , [ 1193803200000 , 48.051404337892] , [ 1196398800000 , 41.582581696032] , [ 1199077200000 , 40.650580792748] , [ 1201755600000 , 32.252222066493] , [ 1204261200000 , 28.106390258553] , [ 1206936000000 , 27.532698196687] , [ 1209528000000 , 33.986390463852] , [ 1212206400000 , 36.302660526438] , [ 1214798400000 , 25.015574480172] , [ 1217476800000 , 23.989494069029] , [ 1220155200000 , 25.934351445531] , [ 1222747200000 , 14.627592011699] , [ 1225425600000 , -5.2249403809749] , [ 1228021200000 , -12.330933408050] , [ 1230699600000 , -11.000291508188] , [ 1233378000000 , -18.563864948088] , [ 1235797200000 , -27.213097001687] , [ 1238472000000 , -20.834133840523] , [ 1241064000000 , -12.717886701719] , [ 1243742400000 , -8.1644613083526] , [ 1246334400000 , -7.9108408918201] , [ 1249012800000 , -0.77002391591209] , [ 1251691200000 , 2.8243816569672] , [ 1254283200000 , 6.8761411421070] , [ 1256961600000 , 4.5060912230294] , [ 1259557200000 , 10.487179794349] , [ 1262235600000 , 13.251375597594] , [ 1264914000000 , 9.2207594803415] , [ 1267333200000 , 12.836276936538] , [ 1270008000000 , 19.816793904978] , [ 1272600000000 , 22.156787167211] , [ 1275278400000 , 12.518039090576] , [ 1277870400000 , 6.4253587440854] , [ 1280548800000 , 13.847372028409] , [ 1283227200000 , 8.5454736090364] , [ 1285819200000 , 18.542801953304] , [ 1288497600000 , 23.037064683183] , [ 1291093200000 , 23.517422401888] , [ 1293771600000 , 31.804723416068] , [ 1296450000000 , 34.778247386072] , [ 1298869200000 , 39.584883855230] , [ 1301544000000 , 40.080647664875] , [ 1304136000000 , 44.180050667889] , [ 1306814400000 , 42.533535927221] , [ 1309406400000 , 40.105374449011] , [ 1312084800000 , 37.014659267156] , [ 1314763200000 , 29.263745084262] , [ 1317355200000 , 19.637463417584] , [ 1320033600000 , 33.157645345770] , [ 1322629200000 , 32.895053150988] , [ 1325307600000 , 34.111544824647] , [ 1327986000000 , 40.453985817473] , [ 1330491600000 , 46.435700783313] , [ 1333166400000 , 51.062385488671] , [ 1335758400000 , 50.130448220658] , [ 1338436800000 , 41.035476682018] , [ 1341028800000 , 46.591932296457] , [ 1343707200000 , 48.349391180634] , [ 1346385600000 , 51.913011286919] , [ 1348977600000 , 55.747238313752] , [ 1351656000000 , 52.991824077209] , [ 1354251600000 , 49.556311883284]]
+                }
+            ];
+
+
+
+
+
+  return [
+                {
+                    key: "Series 1",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , -6.3382185140371] , [ 1030766400000 , -5.9507873460847] , [ 1033358400000 , -11.569146943813] , [ 1036040400000 , -5.4767332317425] , [ 1038632400000 , 0.50794682203014] , [ 1041310800000 , -5.5310285460542] , [ 1043989200000 , -5.7838296963382] , [ 1046408400000 , -7.3249341615649] , [ 1049086800000 , -6.7078630712489] , [ 1051675200000 , 0.44227126150934] , [ 1054353600000 , 7.2481659343222] , [ 1056945600000 , 9.2512381306992] , [ 1059624000000 , 11.341210982529] , [ 1062302400000 , 14.734820409020] , [ 1064894400000 , 12.387148007542] , [ 1067576400000 , 18.436471461827] , [ 1070168400000 , 19.830742266977] , [ 1072846800000 , 22.643205829887] , [ 1075525200000 , 26.743156781239] , [ 1078030800000 , 29.597478802228] , [ 1080709200000 , 30.831697585341] , [ 1083297600000 , 28.054068024708] , [ 1085976000000 , 29.294079423832] , [ 1088568000000 , 30.269264061274] , [ 1091246400000 , 24.934526898906] , [ 1093924800000 , 24.265982759406] , [ 1096516800000 , 27.217794897473] , [ 1099195200000 , 30.802601992077] , [ 1101790800000 , 36.331003758254] , [ 1104469200000 , 43.142498700060] , [ 1107147600000 , 40.558263931958] , [ 1109566800000 , 42.543622385800] , [ 1112245200000 , 41.683584710331] , [ 1114833600000 , 36.375367302328] , [ 1117512000000 , 40.719688980730] , [ 1120104000000 , 43.897963036919] , [ 1122782400000 , 49.797033975368] , [ 1125460800000 , 47.085993935989] , [ 1128052800000 , 46.601972859745] , [ 1130734800000 , 41.567784572762] , [ 1133326800000 , 47.296923737245] , [ 1136005200000 , 47.642969612080] , [ 1138683600000 , 50.781515820954] , [ 1141102800000 , 52.600229204305] , [ 1143781200000 , 55.599684490628] , [ 1146369600000 , 57.920388436633] , [ 1149048000000 , 53.503593218971] , [ 1151640000000 , 53.522973979964] , [ 1154318400000 , 49.846822298548] , [ 1156996800000 , 54.721341614650] , [ 1159588800000 , 58.186236223191] , [ 1162270800000 , 63.908065540997] , [ 1164862800000 , 69.767285129367] , [ 1167541200000 , 72.534013373592] , [ 1170219600000 , 77.991819436573] , [ 1172638800000 , 78.143584404990] , [ 1175313600000 , 83.702398665233] , [ 1177905600000 , 91.140859312418] , [ 1180584000000 , 98.590960607028] , [ 1183176000000 , 96.245634754228] , [ 1185854400000 , 92.326364432615] , [ 1188532800000 , 97.068765332230] , [ 1191124800000 , 105.81025556260] , [ 1193803200000 , 114.38348777791] , [ 1196398800000 , 103.59604949810] , [ 1199077200000 , 101.72488429307] , [ 1201755600000 , 89.840147735028] , [ 1204261200000 , 86.963597532664] , [ 1206936000000 , 84.075505208491] , [ 1209528000000 , 93.170105645831] , [ 1212206400000 , 103.62838083121] , [ 1214798400000 , 87.458241365091] , [ 1217476800000 , 85.808374141319] , [ 1220155200000 , 93.158054469193] , [ 1222747200000 , 65.973252382360] , [ 1225425600000 , 44.580686638224] , [ 1228021200000 , 36.418977140128] , [ 1230699600000 , 38.727678144761] , [ 1233378000000 , 36.692674173387] , [ 1235797200000 , 30.033022809480] , [ 1238472000000 , 36.707532162718] , [ 1241064000000 , 52.191457688389] , [ 1243742400000 , 56.357883979735] , [ 1246334400000 , 57.629002180305] , [ 1249012800000 , 66.650985790166] , [ 1251691200000 , 70.839243432186] , [ 1254283200000 , 78.731998491499] , [ 1256961600000 , 72.375528540349] , [ 1259557200000 , 81.738387881630] , [ 1262235600000 , 87.539792394232] , [ 1264914000000 , 84.320762662273] , [ 1267333200000 , 90.621278391889] , [ 1270008000000 , 102.47144881651] , [ 1272600000000 , 102.79320353429] , [ 1275278400000 , 90.529736050479] , [ 1277870400000 , 76.580859994531] , [ 1280548800000 , 86.548979376972] , [ 1283227200000 , 81.879653334089] , [ 1285819200000 , 101.72550015956] , [ 1288497600000 , 107.97964852260] , [ 1291093200000 , 106.16240630785] , [ 1293771600000 , 114.84268599533] , [ 1296450000000 , 121.60793322282] , [ 1298869200000 , 133.41437346605] , [ 1301544000000 , 125.46646042904] , [ 1304136000000 , 129.76784954301] , [ 1306814400000 , 128.15798861044] , [ 1309406400000 , 121.92388706072] , [ 1312084800000 , 116.70036100870] , [ 1314763200000 , 88.367701837033] , [ 1317355200000 , 59.159665765725] , [ 1320033600000 , 79.793568139753] , [ 1322629200000 , 75.903834028417] , [ 1325307600000 , 72.704218209157] , [ 1327986000000 , 84.936990804097] , [ 1330491600000 , 93.388148670744]]
+                },
+                {
+                    key: "Series 2",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , 0] , [ 1030766400000 , 0] , [ 1033358400000 , 0] , [ 1036040400000 , 0] , [ 1038632400000 , 0] , [ 1041310800000 , 0] , [ 1043989200000 , 0] , [ 1046408400000 , 0] , [ 1049086800000 , 0] , [ 1051675200000 , 0] , [ 1054353600000 , 0] , [ 1056945600000 , 0] , [ 1059624000000 , 0] , [ 1062302400000 , 0] , [ 1064894400000 , 0] , [ 1067576400000 , 0] , [ 1070168400000 , 0] , [ 1072846800000 , 0] , [ 1075525200000 , -0.049184266875945] , [ 1078030800000 , -0.10757569491991] , [ 1080709200000 , -0.075601531307242] , [ 1083297600000 , -0.061245277988149] , [ 1085976000000 , -0.068227316401169] , [ 1088568000000 , -0.11242758058502] , [ 1091246400000 , -0.074848439408270] , [ 1093924800000 , -0.11465623676497] , [ 1096516800000 , -0.24370633342416] , [ 1099195200000 , -0.21523268478893] , [ 1101790800000 , -0.37859370911822] , [ 1104469200000 , -0.41932884345151] , [ 1107147600000 , -0.45393735984802] , [ 1109566800000 , -0.50868179522598] , [ 1112245200000 , -0.48164396881207] , [ 1114833600000 , -0.41605962887194] , [ 1117512000000 , -0.48490348490240] , [ 1120104000000 , -0.55071036101311] , [ 1122782400000 , -0.67489170505394] , [ 1125460800000 , -0.74978070939342] , [ 1128052800000 , -0.86395050745343] , [ 1130734800000 , -0.78524898506764] , [ 1133326800000 , -0.99800440950854] , [ 1136005200000 , -1.1177951153878] , [ 1138683600000 , -1.4119975432964] , [ 1141102800000 , -1.2409959736465] , [ 1143781200000 , -1.3088936375431] , [ 1146369600000 , -1.5495785469683] , [ 1149048000000 , -1.1563414981293] , [ 1151640000000 , -0.87192471725994] , [ 1154318400000 , -0.84073995183442] , [ 1156996800000 , -0.88761892867370] , [ 1159588800000 , -0.81748513917485] , [ 1162270800000 , -1.2874081041274] , [ 1164862800000 , -1.9234702981339] , [ 1167541200000 , -1.8377768147648] , [ 1170219600000 , -2.7107654031830] , [ 1172638800000 , -2.6493268125418] , [ 1175313600000 , -3.0814553134551] , [ 1177905600000 , -3.8509837783574] , [ 1180584000000 , -5.2919167850718] , [ 1183176000000 , -5.2297750650773] , [ 1185854400000 , -3.9335668501451] , [ 1188532800000 , -2.3695525190114] , [ 1191124800000 , -2.3084243151854] , [ 1193803200000 , -3.0753680726738] , [ 1196398800000 , -2.2346609938962] , [ 1199077200000 , -3.0598810361615] , [ 1201755600000 , -1.8410154270386] , [ 1204261200000 , -1.6479442038620] , [ 1206936000000 , -1.9293858622780] , [ 1209528000000 , -3.0769590460943] , [ 1212206400000 , -4.2423933501421] , [ 1214798400000 , -2.6951491617768] , [ 1217476800000 , -2.8981825939957] , [ 1220155200000 , -2.9662727940324] , [ 1222747200000 , 0.21556750497498] , [ 1225425600000 , 2.6784995167088] , [ 1228021200000 , 4.1296711248958] , [ 1230699600000 , 3.7311068218734] , [ 1233378000000 , 4.7695330866954] , [ 1235797200000 , 5.1919133040990] , [ 1238472000000 , 4.1025856045660] , [ 1241064000000 , 2.8498939666225] , [ 1243742400000 , 2.8106017222851] , [ 1246334400000 , 2.8456526669963] , [ 1249012800000 , 0.65563070754298] , [ 1251691200000 , -0.30022343874633] , [ 1254283200000 , -1.1600358228964] , [ 1256961600000 , -0.26674408835052] , [ 1259557200000 , -1.4693389757812] , [ 1262235600000 , -2.7855421590594] , [ 1264914000000 , -1.2668244065703] , [ 1267333200000 , -2.5537804115548] , [ 1270008000000 , -4.9144552474502] , [ 1272600000000 , -6.0484408234831] , [ 1275278400000 , -3.3834349033750] , [ 1277870400000 , -0.46752826932523] , [ 1280548800000 , -1.8030186027963] , [ 1283227200000 , -0.99623230097881] , [ 1285819200000 , -3.3475370235594] , [ 1288497600000 , -3.8187026520342] , [ 1291093200000 , -4.2354146250353] , [ 1293771600000 , -5.6795404292885] , [ 1296450000000 , -6.2928665328172] , [ 1298869200000 , -6.8549277434419] , [ 1301544000000 , -6.9925308360918] , [ 1304136000000 , -8.3216548655839] , [ 1306814400000 , -7.7682867271435] , [ 1309406400000 , -6.9244213301058] , [ 1312084800000 , -5.7407624451404] , [ 1314763200000 , -2.1813149077927] , [ 1317355200000 , 2.9407596325999] , [ 1320033600000 , -1.1130607112134] , [ 1322629200000 , -2.0274822307752] , [ 1325307600000 , -1.8372559072154] , [ 1327986000000 , -4.0732815531148] , [ 1330491600000 , -6.4417038470291]]
+                },
+                {
+                    key: "Series 3",
+                    values: [ [ 1025409600000 , 0] , [ 1028088000000 , -6.3382185140371] , [ 1030766400000 , -5.9507873460847] , [ 1033358400000 , -11.569146943813] , [ 1036040400000 , -5.4767332317425] , [ 1038632400000 , 0.50794682203014] , [ 1041310800000 , -5.5310285460542] , [ 1043989200000 , -5.7838296963382] , [ 1046408400000 , -7.3249341615649] , [ 1049086800000 , -6.7078630712489] , [ 1051675200000 , 0.44227126150934] , [ 1054353600000 , 7.2481659343222] , [ 1056945600000 , 9.2512381306992] , [ 1059624000000 , 11.341210982529] , [ 1062302400000 , 14.734820409020] , [ 1064894400000 , 12.387148007542] , [ 1067576400000 , 18.436471461827] , [ 1070168400000 , 19.830742266977] , [ 1072846800000 , 22.643205829887] , [ 1075525200000 , 26.693972514363] , [ 1078030800000 , 29.489903107308] , [ 1080709200000 , 30.756096054034] , [ 1083297600000 , 27.992822746720] , [ 1085976000000 , 29.225852107431] , [ 1088568000000 , 30.156836480689] , [ 1091246400000 , 24.859678459498] , [ 1093924800000 , 24.151326522641] , [ 1096516800000 , 26.974088564049] , [ 1099195200000 , 30.587369307288] , [ 1101790800000 , 35.952410049136] , [ 1104469200000 , 42.723169856608] , [ 1107147600000 , 40.104326572110] , [ 1109566800000 , 42.034940590574] , [ 1112245200000 , 41.201940741519] , [ 1114833600000 , 35.959307673456] , [ 1117512000000 , 40.234785495828] , [ 1120104000000 , 43.347252675906] , [ 1122782400000 , 49.122142270314] , [ 1125460800000 , 46.336213226596] , [ 1128052800000 , 45.738022352292] , [ 1130734800000 , 40.782535587694] , [ 1133326800000 , 46.298919327736] , [ 1136005200000 , 46.525174496692] , [ 1138683600000 , 49.369518277658] , [ 1141102800000 , 51.359233230659] , [ 1143781200000 , 54.290790853085] , [ 1146369600000 , 56.370809889665] , [ 1149048000000 , 52.347251720842] , [ 1151640000000 , 52.651049262704] , [ 1154318400000 , 49.006082346714] , [ 1156996800000 , 53.833722685976] , [ 1159588800000 , 57.368751084016] , [ 1162270800000 , 62.620657436870] , [ 1164862800000 , 67.843814831233] , [ 1167541200000 , 70.696236558827] , [ 1170219600000 , 75.281054033390] , [ 1172638800000 , 75.494257592448] , [ 1175313600000 , 80.620943351778] , [ 1177905600000 , 87.289875534061] , [ 1180584000000 , 93.299043821956] , [ 1183176000000 , 91.015859689151] , [ 1185854400000 , 88.392797582470] , [ 1188532800000 , 94.699212813219] , [ 1191124800000 , 103.50183124741] , [ 1193803200000 , 111.30811970524] , [ 1196398800000 , 101.36138850420] , [ 1199077200000 , 98.665003256909] , [ 1201755600000 , 87.999132307989] , [ 1204261200000 , 85.315653328802] , [ 1206936000000 , 82.146119346213] , [ 1209528000000 , 90.093146599737] , [ 1212206400000 , 99.385987481068] , [ 1214798400000 , 84.763092203314] , [ 1217476800000 , 82.910191547323] , [ 1220155200000 , 90.191781675161] , [ 1222747200000 , 66.188819887335] , [ 1225425600000 , 47.259186154933] , [ 1228021200000 , 40.548648265024] , [ 1230699600000 , 42.458784966634] , [ 1233378000000 , 41.462207260082] , [ 1235797200000 , 35.224936113579] , [ 1238472000000 , 40.810117767284] , [ 1241064000000 , 55.041351655012] , [ 1243742400000 , 59.168485702020] , [ 1246334400000 , 60.474654847301] , [ 1249012800000 , 67.306616497709] , [ 1251691200000 , 70.539019993440] , [ 1254283200000 , 77.571962668603] , [ 1256961600000 , 72.108784451998] , [ 1259557200000 , 80.269048905849] , [ 1262235600000 , 84.754250235173] , [ 1264914000000 , 83.053938255703] , [ 1267333200000 , 88.067497980334] , [ 1270008000000 , 97.556993569060] , [ 1272600000000 , 96.744762710807] , [ 1275278400000 , 87.146301147104] , [ 1277870400000 , 76.113331725206] , [ 1280548800000 , 84.745960774176] , [ 1283227200000 , 80.883421033110] , [ 1285819200000 , 98.377963136001] , [ 1288497600000 , 104.16094587057] , [ 1291093200000 , 101.92699168281] , [ 1293771600000 , 109.16314556604] , [ 1296450000000 , 115.31506669000] , [ 1298869200000 , 126.55944572261] , [ 1301544000000 , 118.47392959295] , [ 1304136000000 , 121.44619467743] , [ 1306814400000 , 120.38970188330] , [ 1309406400000 , 114.99946573061] , [ 1312084800000 , 110.95959856356] , [ 1314763200000 , 86.186386929240] , [ 1317355200000 , 62.100425398325] , [ 1320033600000 , 78.680507428540] , [ 1322629200000 , 73.876351797642] , [ 1325307600000 , 70.866962301942] , [ 1327986000000 , 80.863709250982] , [ 1330491600000 , 86.946444823715]]
+                },
+                {
+                    key: "Series 4",
+                    values: [ [ 1025409600000 , -7.0674410638835] , [ 1028088000000 , -14.663359292964] , [ 1030766400000 , -14.104393060540] , [ 1033358400000 , -23.114477037218] , [ 1036040400000 , -16.774256687841] , [ 1038632400000 , -11.902028464000] , [ 1041310800000 , -16.883038668422] , [ 1043989200000 , -19.104223676831] , [ 1046408400000 , -20.420523282736] , [ 1049086800000 , -19.660555051587] , [ 1051675200000 , -13.106911231646] , [ 1054353600000 , -8.2448460302143] , [ 1056945600000 , -7.0313058730976] , [ 1059624000000 , -5.1485118700389] , [ 1062302400000 , -3.0011028761469] , [ 1064894400000 , -4.1367265281467] , [ 1067576400000 , 1.5425209565025] , [ 1070168400000 , 2.7673533607299] , [ 1072846800000 , 7.7077114755360] , [ 1075525200000 , 9.7565015112434] , [ 1078030800000 , 11.396888609473] , [ 1080709200000 , 10.013964745578] , [ 1083297600000 , 8.0558890950562] , [ 1085976000000 , 9.6081966657458] , [ 1088568000000 , 11.918590426432] , [ 1091246400000 , 7.9945345523982] , [ 1093924800000 , 8.3201276776796] , [ 1096516800000 , 9.8283954846342] , [ 1099195200000 , 11.527125859650] , [ 1101790800000 , 16.413657596527] , [ 1104469200000 , 20.393798297928] , [ 1107147600000 , 17.456308413907] , [ 1109566800000 , 20.087778400999] , [ 1112245200000 , 17.988336990817] , [ 1114833600000 , 15.378490151331] , [ 1117512000000 , 19.474322935730] , [ 1120104000000 , 20.013851070354] , [ 1122782400000 , 24.749943726975] , [ 1125460800000 , 23.558710274826] , [ 1128052800000 , 24.558915040889] , [ 1130734800000 , 22.355860488034] , [ 1133326800000 , 27.138026265756] , [ 1136005200000 , 27.202220808591] , [ 1138683600000 , 31.219437344964] , [ 1141102800000 , 31.392355525125] , [ 1143781200000 , 33.373099232542] , [ 1146369600000 , 35.095277582309] , [ 1149048000000 , 30.923356507615] , [ 1151640000000 , 31.083717332561] , [ 1154318400000 , 31.290690671561] , [ 1156996800000 , 34.247769216679] , [ 1159588800000 , 37.411073177620] , [ 1162270800000 , 42.079177096411] , [ 1164862800000 , 44.978191659648] , [ 1167541200000 , 46.713271025310] , [ 1170219600000 , 49.203892437699] , [ 1172638800000 , 46.684723471826] , [ 1175313600000 , 48.385458973500] , [ 1177905600000 , 54.660197840305] , [ 1180584000000 , 60.311838415602] , [ 1183176000000 , 57.583282204682] , [ 1185854400000 , 52.425398898751] , [ 1188532800000 , 54.663538086985] , [ 1191124800000 , 60.181844325224] , [ 1193803200000 , 62.877219773621] , [ 1196398800000 , 55.760611512951] , [ 1199077200000 , 54.735280367784] , [ 1201755600000 , 45.495912959474] , [ 1204261200000 , 40.934919015876] , [ 1206936000000 , 40.303777633187] , [ 1209528000000 , 47.403740368773] , [ 1212206400000 , 49.951960898839] , [ 1214798400000 , 37.534590035098] , [ 1217476800000 , 36.405758293321] , [ 1220155200000 , 38.545373001858] , [ 1222747200000 , 26.106358664455] , [ 1225425600000 , 4.2658006768744] , [ 1228021200000 , -3.5517839867557] , [ 1230699600000 , -2.0878920761513] , [ 1233378000000 , -10.408879093829] , [ 1235797200000 , -19.924242196038] , [ 1238472000000 , -12.906491912782] , [ 1241064000000 , -3.9774866468346] , [ 1243742400000 , 1.0319171601402] , [ 1246334400000 , 1.3109350357718] , [ 1249012800000 , 9.1668309061935] , [ 1251691200000 , 13.121178985954] , [ 1254283200000 , 17.578680237511] , [ 1256961600000 , 14.971294355085] , [ 1259557200000 , 21.551327027338] , [ 1262235600000 , 24.592328423819] , [ 1264914000000 , 20.158087829555] , [ 1267333200000 , 24.135661929185] , [ 1270008000000 , 31.815205405903] , [ 1272600000000 , 34.389524768466] , [ 1275278400000 , 23.785555857522] , [ 1277870400000 , 17.082756649072] , [ 1280548800000 , 25.248007727100] , [ 1283227200000 , 19.415179069165] , [ 1285819200000 , 30.413636349327] , [ 1288497600000 , 35.357952964550] , [ 1291093200000 , 35.886413535859] , [ 1293771600000 , 45.003601951959] , [ 1296450000000 , 48.274893564020] , [ 1298869200000 , 53.562864914648] , [ 1301544000000 , 54.108274337412] , [ 1304136000000 , 58.618190111927] , [ 1306814400000 , 56.806793965598] , [ 1309406400000 , 54.135477252994] , [ 1312084800000 , 50.735258942442] , [ 1314763200000 , 42.208170945813] , [ 1317355200000 , 31.617916826724] , [ 1320033600000 , 46.492005006737] , [ 1322629200000 , 46.203116922145] , [ 1325307600000 , 47.541427643137] , [ 1327986000000 , 54.518998440993] , [ 1330491600000 , 61.099720234693]]
+                }
+  ]
+                
+  /*
+  .map(function(line) {
+    line.values = line.values.map(function(d) { return {x: d[0], y: d[1]/100  }});
+    return line;
+  });
+  */
+}
+
+
+</script>
diff --git a/examples/discreteBarChart.html b/examples/discreteBarChart.html
new file mode 100644
index 0000000..5381f36
--- /dev/null
+++ b/examples/discreteBarChart.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg{
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 10px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<!-- including all the components so I don't have to minify every time I test in development -->
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/discreteBar.js"></script>
+<script src="../src/models/discreteBarChart.js"></script>
+<script>
+
+
+
+
+
+historicalBarChart = [ 
+  {
+    key: "Cumulative Return",
+    values: [
+      { 
+        "label" : "A" ,
+        "value" : 29.765957771107
+      } , 
+      { 
+        "label" : "B" , 
+        "value" : 0
+      } , 
+      { 
+        "label" : "C" , 
+        "value" : 32.807804682612
+      } , 
+      { 
+        "label" : "D" , 
+        "value" : 196.45946739256
+      } , 
+      { 
+        "label" : "E" ,
+        "value" : 0.19434030906893
+      } , 
+      { 
+        "label" : "F" , 
+        "value" : 98.079782601442
+      } , 
+      { 
+        "label" : "G" , 
+        "value" : 13.925743130903
+      } , 
+      { 
+        "label" : "H" , 
+        "value" : 5.1387322875705
+      }
+    ]
+  }
+];
+
+
+
+
+nv.addGraph(function() {  
+  var chart = nv.models.discreteBarChart()
+      .x(function(d) { return d.label })
+      .y(function(d) { return d.value })
+      .staggerLabels(true)
+      //.staggerLabels(historicalBarChart[0].values.length > 8)
+      .tooltips(false)
+      .showValues(true)
+      .transitionDuration(250)
+      ;
+
+  d3.select('#chart1 svg')
+      .datum(historicalBarChart)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+</script>
diff --git a/examples/historicalBar.html b/examples/historicalBar.html
new file mode 100644
index 0000000..49a075a
--- /dev/null
+++ b/examples/historicalBar.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/utils.js"></script>
+
+<script> 
+
+
+nv.addGraph({
+  generate: function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40;
+
+    var chart = nv.models.historicalBar()
+        .padData(true)
+        .width(width)
+        .height(height);
+
+    d3.select("#test1")
+      .attr('width', width)
+      .attr('height', height)
+      .datum(sinData())
+      .transition()
+      .call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+
+    graph.dispatch.on('elementMouseover', function(e) {
+        var offsetElement = document.getElementById("chart"),
+                left = e.pos[0],
+                top = e.pos[1];
+
+                /*
+        var content = '<h3>' + e.label + '</h3>' +
+                '<p>' +
+                e.value +
+                '</p>';
+                */
+
+        var content = '<p>' + e.point.y + '</p>';
+
+        nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's');
+    });
+
+    graph.dispatch.on('elementMouseout', function(e) {
+        nv.tooltip.cleanup();
+    });
+
+    /*
+    graph.dispatch.on('elementClick', function(e) {
+        console.log("Bar Click",e);
+    });
+
+    graph.dispatch.on('chartClick', function(e) {
+        console.log("Chart Click",e);
+    });
+
+    graph.dispatch.on('chartClick', function(e) {
+        console.log('Click Switching to');
+        if (td === 0) {
+            d3.select("#test1")
+                    .datum(testdata2)
+                    .call(graph);
+            td = 1;
+
+        } else {
+            d3.select("#test1")
+                    .datum(testdata)
+                    .call(graph);
+            td = 0;
+        }
+      });
+    */
+
+
+    window.onresize = function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40;
+
+      graph
+        .width(width)
+        .height(height)
+
+      d3.select("#test1")
+          .attr('width', width)
+          .attr('height', height)
+        .call(graph);
+    };
+  }
+});
+
+
+
+
+
+//Simple test data generators
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+function sinData() {
+  var sin = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    }
+  ];
+}
+
+</script>
diff --git a/examples/historicalBarChart.html b/examples/historicalBarChart.html
new file mode 100644
index 0000000..c196391
--- /dev/null
+++ b/examples/historicalBarChart.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+<div style="width: 100%; height: 400px;">
+<svg id="test1"></svg>
+</div>
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/historicalBarChart.js"></script>
+<script src="../src/utils.js"></script>
+
+<script> 
+
+var chart;
+nv.addGraph(function() {
+  chart = nv.models.historicalBarChart();
+  chart
+    .margin({left: 100, bottom: 100})
+    .x(function(d,i) { return i })
+    .transitionDuration(250)
+    ;
+
+  // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+  chart.xAxis
+    .axisLabel("Time (s)")
+    .tickFormat(d3.format(',.1f'));
+
+  chart.yAxis
+    .axisLabel('Voltage (v)')
+    .tickFormat(d3.format(',.2f'));
+
+  chart.showXAxis(true);
+
+  d3.select('#test1')
+    .datum(sinData())
+    .transition().duration(0)
+    .call(chart);
+
+  //TODO: Figure out a good way to do this automatically
+  nv.utils.windowResize(chart.update);
+  //nv.utils.windowResize(function() { d3.select('#chart1 svg').call(chart) });
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+
+//Simple test data generators
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+function sinData() {
+  var sin = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    }
+  ];
+}
+
+</script>
diff --git a/examples/horizon.html b/examples/horizon.html
new file mode 100644
index 0000000..8c49bdb
--- /dev/null
+++ b/examples/horizon.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+  /*
+* {
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+*/
+
+
+body {
+  font-family: sans-serif;
+}
+
+svg {
+  top: 10px;
+  left: 10px;
+  position: absolute;
+}
+
+svg > g > path {
+  pointer-events: none;
+}
+
+.nv-horizonBackground {
+  fill: none;
+  stroke: none;
+  pointer-events: all;
+}
+
+#horizon-controls {
+  position: absolute;
+  width: 940px;
+  padding: 10px;
+  z-index: 1;
+}
+
+#horizon-bands {
+  float: right;
+}
+
+
+</style>
+<body>
+
+  <div id="wrap">
+
+    <div id="horizon-controls">
+      <input name="mode" type="radio" value="mirror" id="horizon-mode-mirror" checked><label for="horizon-mode-mirror"> Mirror</label>
+      <input name="mode" type="radio" value="offset" id="horizon-mode-offset"><label for="horizon-mode-offset"> Offset</label>
+      <span id="horizon-bands"><span id="horizon-bands-value">1</span> <button class="first">&#x2212;</button><button class="last">+</button></span>
+    </div>
+    <div><svg id="chart1"></svg></div>
+
+  </div>
+
+
+<script src="../lib/d3.v2.js"></script>
+<script src="../lib/horizon.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script>
+
+
+//TODO: create a nv.models.horizonChart model 
+// (if need be an nv.models.horizon model as well, but might get away with just using d3.horizon)
+// the horizontChart model should have a "tooltip" like functionality that shows a point over the 
+// current value based on the mouse's x position
+
+var width = 960,
+    height = 300;
+
+nv.addGraph(function() {
+  var data = sine();
+
+  var chart = d3.horizon()
+    .width(width)
+    .height(height)
+    .bands(1)
+    .mode("mirror")
+    .interpolate("basis");
+
+  var svg = d3.select('#chart1').attr('width', width).attr('height', height);
+
+  var bg = svg.append('rect').attr('class', 'nv-horizonBackground').attr('height', height).attr('width', width);
+
+  svg.datum(data).call(chart);
+
+  var point = svg.append('circle').attr('class', 'nv-hoverPoint')
+      .attr('r', '4')
+      .attr('cx', -3)
+      .attr('cy', -3);
+
+  // Enable mode buttons.
+  d3.selectAll("#horizon-controls input[name=mode]").on("change", function() {
+    svg.call(chart.duration(0).mode(this.value));
+  });
+
+  // Enable bands buttons.
+  d3.selectAll("#horizon-bands button").data([-1, 1]).on("click", function(d) {
+    var n = Math.max(1, chart.bands() + d);
+    d3.select("#horizon-bands-value").text(n);
+    svg.call(chart.duration(1000).bands(n).height(height / n));
+
+    //just updating point temporarily here to have it not be visible on band change until user moves his mouse over the chart
+    point
+      .attr('cx', -3)
+      .attr('cy', -3)
+  });
+
+
+  //****THE CHANGES MADE TO THIS EXAMPLE BY ME ARE VERY UGLY.... TODO: Fix/Clean up after all functionality is correct
+  bg.on('mousemove', function() {
+    var m1 = d3.mouse(this);
+    var x = m1[0];
+    var scales = svg.node().__chart__;
+    var i = Math.round( scales.x.invert(x) );
+    //var y = (data[i][1] < 0 || chart.mode() == 'mirror' ? height : 0) - scales.y(chart.mode() == 'mirror' ? Math.abs(data[i][1]) : data[i][1] );
+    var y = height - scales.y(chart.mode() == 'mirror' ? Math.abs(data[i][1]) : data[i][1] ) - (chart.mode() == 'offset' && data[i][1] < 0 ? height : 0  );
+    var t = scales.t(data[i][1]);
+    var bandRange = scales.y.range()[1];
+
+    y = y % (height / chart.bands());
+    //nv.log(y, height, y % height);
+
+    //nv.log(scales.y.range(), scales.y.domain());
+
+    //nv.log( x, i, data[i], y )
+    //nv.log(scales);
+
+    point
+      .attr('cx', scales.x(i))
+      .attr('cy', y)
+      .attr('transform',
+        'translate(0,' + chart.bands + ')'
+      );
+
+    //var m2 = d3.mouse(d3.select('body').node());
+    //nv.log(m1, m2);
+    //nv.log(d3.event, this, d3.mouse(this));
+  });
+
+  return chart;
+});
+
+
+
+function sine() {
+  var sin = [];
+
+  for (var i = 0; i < 200; i++) {
+    sin.push([ i, Math.sin(i/10) + .2 ]);
+  }
+
+  return sin;
+}
+
+
+</script>
diff --git a/examples/images/grey-minus.png b/examples/images/grey-minus.png
new file mode 100644
index 0000000..f1e6768
--- /dev/null
+++ b/examples/images/grey-minus.png
Binary files differ
diff --git a/examples/images/grey-plus.png b/examples/images/grey-plus.png
new file mode 100644
index 0000000..10b73a5
--- /dev/null
+++ b/examples/images/grey-plus.png
Binary files differ
diff --git a/examples/images/nvd3_sampleLineChart1.png b/examples/images/nvd3_sampleLineChart1.png
new file mode 100644
index 0000000..05d7ef2
--- /dev/null
+++ b/examples/images/nvd3_sampleLineChart1.png
Binary files differ
diff --git a/examples/indentedtree.html b/examples/indentedtree.html
new file mode 100644
index 0000000..a5a1a06
--- /dev/null
+++ b/examples/indentedtree.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+</style>
+<body>
+
+  <div id="example1" style="width:600px"></div>
+
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/indentedTree.js"></script>
+<script>
+
+// THIS API WILL BE CHANGING!!  this was ported from a different graphing collection, its only been halfway ported to the nvd3 style
+
+var testTree = [{
+  key: 'NVD3',
+  url: 'http://novus.github.com/nvd3',
+  values: [
+    {
+      key: "Charts",
+      _values: [
+        {
+          key: "Simple Line",
+          type: "Historical",
+          url: "http://novus.github.com/nvd3/ghpages/line.html"
+        },
+        {
+          key: "Scatter / Bubble",
+          type: "Snapshot",
+          url: "http://novus.github.com/nvd3/ghpages/scatter.html"
+        },
+        {
+          key: "Stacked / Stream / Expanded Area",
+          type: "Historical",
+          url: "http://novus.github.com/nvd3/ghpages/stackedArea.html"
+        },
+        {
+          key: "Discrete Bar",
+          type: "Snapshot",
+          url: "http://novus.github.com/nvd3/ghpages/discreteBar.html"
+        },
+        {
+          key: "Grouped / Stacked Multi-Bar",
+          type: "Snapshot / Historical",
+          url: "http://novus.github.com/nvd3/ghpages/multiBar.html"
+        },
+        {
+          key: "Horizontal Grouped Bar",
+          type: "Snapshot",
+          url: "http://novus.github.com/nvd3/ghpages/multiBarHorizontal.html"
+        },
+        {
+          key: "Line and Bar Combo",
+          type: "Historical",
+          url: "http://novus.github.com/nvd3/ghpages/linePlusBar.html"
+        },
+        {
+          key: "Cumulative Line",
+          type: "Historical",
+          url: "http://novus.github.com/nvd3/ghpages/cumulativeLine.html"
+        },
+        {
+          key: "Line with View Finder",
+          type: "Historical",
+          url: "http://novus.github.com/nvd3/ghpages/lineWithFocus.html"
+        }
+      ]
+    },
+    {
+      key: "Chart Components",
+      _values: [
+        {
+          key: "Legend",
+          type: "Universal",
+          url: "http://novus.github.com/nvd3/examples/legend.html"
+        }
+      ]
+    }
+  ]
+}];
+
+
+
+var testColumns = [
+  {
+    key: 'key',
+    label: 'Name',
+    showCount: true,
+    width: '75%',
+    type: 'text',
+    classes: function(d) { return d.url ? 'clickable name' : 'name' },
+    click: function(d) {
+       if (d.url) window.location.href = d.url;
+    }
+  },
+  {
+    key: 'type',
+    label: 'Type',
+    width: '25%',
+    type: 'text'
+  }
+];
+
+
+
+nv.addGraph(function() {
+  var chart = nv.models.indentedTree()
+                .columns(testColumns);
+
+  d3.select('#example1')
+      .datum(testTree)
+    .call(chart);
+});
+
+
+
+
+</script>
diff --git a/examples/index.html b/examples/index.html
new file mode 100644
index 0000000..6589248
--- /dev/null
+++ b/examples/index.html
@@ -0,0 +1,98 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
+<title>NVD3 Examples List</title>
+<body>
+<style>
+body {
+	font-family: Helvetica;
+	/* IE10 Consumer Preview */ 
+	background-image: -ms-radial-gradient(left top, circle farthest-corner, #FFFFFF 0%, #DEE2FF 100%);
+
+	/* Mozilla Firefox */ 
+	background-image: -moz-radial-gradient(left top, circle farthest-corner, #FFFFFF 0%, #DEE2FF 100%);
+
+	/* Opera */ 
+	background-image: -o-radial-gradient(left top, circle farthest-corner, #FFFFFF 0%, #DEE2FF 100%);
+
+	/* Webkit (Safari/Chrome 10) */ 
+	background-image: -webkit-gradient(radial, left top, 0, left top, 1012, color-stop(0, #FFFFFF), color-stop(1, #DEE2FF));
+
+	/* Webkit (Chrome 11+) */ 
+	background-image: -webkit-radial-gradient(left top, circle farthest-corner, #FFFFFF 0%, #DEE2FF 100%);
+
+	/* W3C Markup, IE10 Release Preview */ 
+	background-image: radial-gradient(circle farthest-corner at left top, #FFFFFF 0%, #DEE2FF 100%);
+}
+
+ul {
+	list-style: none;
+	float: left;
+	margin-right: 20px;
+	border-right: solid 1px #ccc;
+}
+
+li {
+	padding: 8px;
+	min-width: 220px;
+}
+
+a {
+	text-decoration: none;
+	display:block;
+}
+
+li:hover {
+	background-color: #ccc;
+}
+</style>
+<h2>NVD3 Examples List</h2>
+<ul>
+<li><a href="bullet.html">Bullet</a>
+<li><a href="bulletChart.html">BulletChart</a>
+<li><a href="crossfilter.html">Crossfilter</a>
+<li><a href="crossfilterWithDimentions.html">CrossfilterWithDimentions</a>
+<li><a href="crossfilterWithTables.html">CrossfilterWithTables</a>
+<li><a href="cumulativeLineChart.html">CumulativeLineChart</a>
+<li><a href="discreteBarChart.html">DiscreteBarChart</a>
+<li><a href="historicalBar.html">HistoricalBar</a>
+<li><a href="historicalBarChart.html">HistoricalBarChart</a>
+<li><a href="horizon.html">Horizon</a>
+<li><a href="indentedtree.html">Indentedtree</a>
+<li><a href="legend.html">Legend</a>
+<li><a href="line.html">Line</a>
+<li><a href="lineChart.html">LineChart</a>
+<li><a href="lineChartSVGResize.html">LineChartSVGResize</a>
+<li><a href="linePlusBarChart.html">LinePlusBarChart</a>
+<li><a href="linePlusBarWithFocusChart.html">LinePlusBarWithFocusChart</a>
+<li><a href="lineWithFisheyeChart.html">LineWithFisheyeChart</a>
+<li><a href="lineWithFocusChart.html">LineWithFocusChart</a>
+</ul>
+<ul>
+<li><a href="multiBar.html">MultiBar</a>
+<li><a href="multiBarChart.html">MultiBarChart</a>
+<li><a href="multiBarHorizontalChart.html">MultiBarHorizontalChart</a>
+<li><a href="multiChart.html">MultiChart</a>
+<li><a href="parallelCoordinates.html">ParallelCoordinates</a>
+<li><a href="pie.html">Pie</a>
+<li><a href="pieChart.html">PieChart</a>
+<li><a href="scatter.html">Scatter</a>
+<li><a href="scatterChart.html">ScatterChart</a>
+<li><a href="scatterPlusLineChart.html">ScatterPlusLineChart</a>
+<li><a href="sparkline.html">Sparkline</a>
+<li><a href="sparklinePlus.html">SparklinePlus</a>
+<li><a href="stackedArea.html">StackedArea</a>
+<li><a href="stackedAreaChart.html">StackedAreaChart</a>
+</ul>
+
+<ul>
+	<strong>Test pages</strong>
+	<li><a href="../test/lineChartTest.html">Line Chart</a></li>
+	<li><a href="../test/pieChartTest.html">Pie Chart</a></li>
+	<li><a href="../test/ScatterChartTest.html">Scatter Chart</a></li>
+	<li><a href="../test/stackedAreaChartTest.html">Stacked Area Chart</a></li>
+	<li><a href="../test/multiBarChartTest.html">Multibar Chart</a></li>
+	<li><a href="../test/polylinearTest.html">Polylinear Scale Line Chart</a></li>
+	<li><a href="../test/realTimeChartTest.html">Real Time Chart</a></li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/examples/legend.html b/examples/legend.html
new file mode 100644
index 0000000..b5211ab
--- /dev/null
+++ b/examples/legend.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script>
+
+
+//Format A
+nv.addGraph({
+  generate: function() {
+    var width = 500,
+        height = 20;
+
+    var chart = nv.models.legend()
+                .width(width)
+                .height(height);
+
+    chart.dispatch.on('legendClick', function(d,i) { console.log(d,i) });
+
+    //chart.xaxis.tickFormat(d3.format(".02f"))
+
+    d3.select('#test1')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(sinAndCos())
+      .call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+    var chart = graph,
+        height = chart.height();
+
+    d3.select('#test1')
+        .attr('height', height)
+        .call(chart)
+  }
+});
+
+
+
+function sinAndCos() {
+  return [
+    {
+      key: "Sine Wave"
+    },
+    {
+      key: "A Very Long Series Label"
+    },
+    {
+      key: "A Very Long Series Label"
+    },
+    {
+      key: "A Very Long Series Label"
+    },
+    {
+      key: "Cosine Wave"
+    },
+    {
+      key: "Another test label"
+    }
+  ];
+}
+
+
+</script>
diff --git a/examples/line.html b/examples/line.html
new file mode 100644
index 0000000..917437e
--- /dev/null
+++ b/examples/line.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/utils.js"></script>
+<script>
+
+
+
+//Format A
+nv.addGraph({
+  generate: function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40;
+
+    var chart = nv.models.line()
+                .width(width)
+                .height(height)
+                .margin({top: 20, right: 20, bottom: 20, left: 20})
+
+
+    d3.select('#test1')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(sinAndCos())
+      .call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+    window.onresize = function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40,
+          margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#test1')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+    };
+  }
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/examples/lineChart.html b/examples/lineChart.html
new file mode 100644
index 0000000..5e6e56d
--- /dev/null
+++ b/examples/lineChart.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 200px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+
+}
+#chart1 {
+  margin-top: 200px;
+  margin-left: 100px;
+}
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+<div id="chart1" >
+  <svg style="height: 500px;"></svg>
+</div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineChart.js"></script>
+
+<script>
+// Wrapping in nv.addGraph allows for '0 timeout render', stores rendered charts in nv.graphs, and may do more in the future... it's NOT required
+var chart;
+
+nv.addGraph(function() {
+  chart = nv.models.lineChart()
+  .options({
+    margin: {left: 100, bottom: 100},
+    x: function(d,i) { return i},
+    showXAxis: true,
+    showYAxis: true,
+    transitionDuration: 250
+  })
+  ;
+
+  // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+  chart.xAxis
+    .axisLabel("Time (s)")
+    .tickFormat(d3.format(',.1f'));
+
+  chart.yAxis
+    .axisLabel('Voltage (v)')
+    .tickFormat(d3.format(',.2f'))
+    ;
+
+  d3.select('#chart1 svg')
+    .datum(sinAndCos())
+    .call(chart);
+
+  //TODO: Figure out a good way to do this automatically
+  nv.utils.windowResize(chart.update);
+  //nv.utils.windowResize(function() { d3.select('#chart1 svg').call(chart) });
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+function sinAndCos() {
+  var sin = [],
+    cos = [],
+    rand = [],
+    rand2 = []
+    ;
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: i % 10 == 5 ? null : Math.sin(i/10) }); //the nulls are to show how defined works
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+    rand.push({x:i, y: Math.random() / 10});
+    rand2.push({x: i, y: Math.cos(i/10) + Math.random() / 10 })
+  }
+
+  return [
+    {
+      area: true,
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    },
+    {
+      values: rand,
+      key: "Random Points",
+      color: "#2222ff"
+    }
+    ,
+    {
+      values: rand2,
+      key: "Random Cosine",
+      color: "#667711"
+    }
+  ];
+}
+
+</script>
diff --git a/examples/lineChartSVGResize.html b/examples/lineChartSVGResize.html
new file mode 100644
index 0000000..51d8175
--- /dev/null
+++ b/examples/lineChartSVGResize.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+</style>
+<body>
+  <div id="chartZoom">
+    <a href="#" id="zoomIn">Zoom In</a> <a href="#" id="zoomOut">Zoom Out</a>
+  </div>
+
+  <div id="chart1" class='with-transitions'>
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineChart.js"></script>
+<script>
+
+
+nv.addGraph(function() {
+  var chart = nv.models.lineChart();
+  var fitScreen = false;
+  var width = 600;
+  var height = 300;
+  var zoom = 1;
+
+  chart.useInteractiveGuideline(true);
+  chart.xAxis
+      .tickFormat(d3.format(',r'));
+
+  chart.yAxis
+      .axisLabel('Voltage (v)')
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart1 svg')
+      .attr('perserveAspectRatio', 'xMinYMid')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(sinAndCos());
+
+  setChartViewBox();
+  resizeChart();
+
+  // These resizes both do the same thing, and require recalculating the chart
+  //nv.utils.windowResize(chart.update);
+  //nv.utils.windowResize(function() { d3.select('#chart1 svg').call(chart) });
+  nv.utils.windowResize(resizeChart);
+
+  d3.select('#zoomIn').on('click', zoomIn);
+  d3.select('#zoomOut').on('click', zoomOut);
+
+
+  function setChartViewBox() {
+    var w = width * zoom,
+        h = height * zoom;
+
+    chart
+        .width(w)
+        .height(h);
+
+    d3.select('#chart1 svg')
+        .attr('viewBox', '0 0 ' + w + ' ' + h)
+      .transition().duration(500)
+        .call(chart);
+  }
+
+  function zoomOut() {
+    zoom += .25;
+    setChartViewBox();
+  }
+
+  function zoomIn() {
+    if (zoom <= .5) return;
+    zoom -= .25;
+    setChartViewBox();
+  }
+
+  // This resize simply sets the SVG's dimensions, without a need to recall the chart code
+  // Resizing because of the viewbox and perserveAspectRatio settings
+  // This scales the interior of the chart unlike the above
+  function resizeChart() {
+    var container = d3.select('#chart1');
+    var svg = container.select('svg');
+
+    if (fitScreen) {
+      // resize based on container's width AND HEIGHT
+      var windowSize = nv.utils.windowSize();
+      svg.attr("width", windowSize.width);
+      svg.attr("height", windowSize.height);
+    } else {
+      // resize based on container's width
+      var aspect = chart.width() / chart.height();
+      var targetWidth = parseInt(container.style('width'));
+      svg.attr("width", targetWidth);
+      svg.attr("height", Math.round(targetWidth / aspect));
+    }
+  };
+
+
+  return chart;
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10) });
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/examples/linePlusBarChart.html b/examples/linePlusBarChart.html
new file mode 100644
index 0000000..2b6aa15
--- /dev/null
+++ b/examples/linePlusBarChart.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 svg {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1" class='with-3d-shadow with-transitions'>
+    <svg> </svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/linePlusBarChart.js"></script>
+<script>
+
+
+var testdata = [
+  {
+    "key" : "Quantity" ,
+    "bar": true,
+    "values" : [ [ 1136005200000 , 1271000.0] , [ 1138683600000 , 1271000.0] , [ 1141102800000 , 1271000.0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 3899486.0] , [ 1162270800000 , 3899486.0] , [ 1164862800000 , 3899486.0] , [ 1167541200000 , 3564700.0] , [ 1170219600000 , 3564700.0] , [ 1172638800000 , 3564700.0] , [ 1175313600000 , 2648493.0] , [ 1177905600000 , 2648493.0] , [ 1180584000000 , 2648493.0] , [ 1183176000000 , 2522993.0] , [ 1185854400000 , 2522993.0] , [ 1188532800000 , 2522993.0] , [ 1191124800000 , 2906501.0] , [ 1193803200000 , 2906501.0] , [ 1196398800000 , 2906501.0] , [ 1199077200000 , 2206761.0] , [ 1201755600000 , 2206761.0] , [ 1204261200000 , 2206761.0] , [ 1206936000000 , 2287726.0] , [ 1209528000000 , 2287726.0] , [ 1212206400000 , 2287726.0] , [ 1214798400000 , 2732646.0] , [ 1217476800000 , 2732646.0] , [ 1220155200000 , 2732646.0] , [ 1222747200000 , 2599196.0] , [ 1225425600000 , 2599196.0] , [ 1228021200000 , 2599196.0] , [ 1230699600000 , 1924387.0] , [ 1233378000000 , 1924387.0] , [ 1235797200000 , 1924387.0] , [ 1238472000000 , 1756311.0] , [ 1241064000000 , 1756311.0] , [ 1243742400000 , 1756311.0] , [ 1246334400000 , 1743470.0] , [ 1249012800000 , 1743470.0] , [ 1251691200000 , 1743470.0] , [ 1254283200000 , 1519010.0] , [ 1256961600000 , 1519010.0] , [ 1259557200000 , 1519010.0] , [ 1262235600000 , 1591444.0] , [ 1264914000000 , 1591444.0] , [ 1267333200000 , 1591444.0] , [ 1270008000000 , 1543784.0] , [ 1272600000000 , 1543784.0] , [ 1275278400000 , 1543784.0] , [ 1277870400000 , 1309915.0] , [ 1280548800000 , 1309915.0] , [ 1283227200000 , 1309915.0] , [ 1285819200000 , 1331875.0] , [ 1288497600000 , 1331875.0] , [ 1291093200000 , 1331875.0] , [ 1293771600000 , 1331875.0] , [ 1296450000000 , 1154695.0] , [ 1298869200000 , 1154695.0] , [ 1301544000000 , 1194025.0] , [ 1304136000000 , 1194025.0] , [ 1306814400000 , 1194025.0] , [ 1309406400000 , 1194025.0] , [ 1312084800000 , 1194025.0] , [ 1314763200000 , 1244525.0] , [ 1317355200000 , 475000.0] , [ 1320033600000 , 475000.0] , [ 1322629200000 , 475000.0] , [ 1325307600000 , 690033.0] , [ 1327986000000 , 690033.0] , [ 1330491600000 , 690033.0] , [ 1333166400000 , 514733.0] , [ 1335758400000 , 514733.0]]
+  },
+  {
+    "key" : "Price" ,
+    "values" : [ [ 1136005200000 , 71.89] , [ 1138683600000 , 75.51] , [ 1141102800000 , 68.49] , [ 1143781200000 , 62.72] , [ 1146369600000 , 70.39] , [ 1149048000000 , 59.77] , [ 1151640000000 , 57.27] , [ 1154318400000 , 67.96] , [ 1156996800000 , 67.85] , [ 1159588800000 , 76.98] , [ 1162270800000 , 81.08] , [ 1164862800000 , 91.66] , [ 1167541200000 , 84.84] , [ 1170219600000 , 85.73] , [ 1172638800000 , 84.61] , [ 1175313600000 , 92.91] , [ 1177905600000 , 99.8] , [ 1180584000000 , 121.191] , [ 1183176000000 , 122.04] , [ 1185854400000 , 131.76] , [ 1188532800000 , 138.48] , [ 1191124800000 , 153.47] , [ 1193803200000 , 189.95] , [ 1196398800000 , 182.22] , [ 1199077200000 , 198.08] , [ 1201755600000 , 135.36] , [ 1204261200000 , 125.02] , [ 1206936000000 , 143.5] , [ 1209528000000 , 173.95] , [ 1212206400000 , 188.75] , [ 1214798400000 , 167.44] , [ 1217476800000 , 158.95] , [ 1220155200000 , 169.53] , [ 1222747200000 , 113.66] , [ 1225425600000 , 107.59] , [ 1228021200000 , 92.67] , [ 1230699600000 , 85.35] , [ 1233378000000 , 90.13] , [ 1235797200000 , 89.31] , [ 1238472000000 , 105.12] , [ 1241064000000 , 125.83] , [ 1243742400000 , 135.81] , [ 1246334400000 , 142.43] , [ 1249012800000 , 163.39] , [ 1251691200000 , 168.21] , [ 1254283200000 , 185.35] , [ 1256961600000 , 188.5] , [ 1259557200000 , 199.91] , [ 1262235600000 , 210.732] , [ 1264914000000 , 192.063] , [ 1267333200000 , 204.62] , [ 1270008000000 , 235.0] , [ 1272600000000 , 261.09] , [ 1275278400000 , 256.88] , [ 1277870400000 , 251.53] , [ 1280548800000 , 257.25] , [ 1283227200000 , 243.1] , [ 1285819200000 , 283.75] , [ 1288497600000 , 300.98] , [ 1291093200000 , 311.15] , [ 1293771600000 , 322.56] , [ 1296450000000 , 339.32] , [ 1298869200000 , 353.21] , [ 1301544000000 , 348.5075] , [ 1304136000000 , 350.13] , [ 1306814400000 , 347.83] , [ 1309406400000 , 335.67] , [ 1312084800000 , 390.48] , [ 1314763200000 , 384.83] , [ 1317355200000 , 381.32] , [ 1320033600000 , 404.78] , [ 1322629200000 , 382.2] , [ 1325307600000 , 405.0] , [ 1327986000000 , 456.48] , [ 1330491600000 , 542.44] , [ 1333166400000 , 599.55] , [ 1335758400000 , 583.98] ]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
+  return series;
+});
+
+/*
+//For testing single data point
+var testdata = [
+  {
+    "key" : "Quantity" ,
+    "bar": true,
+    "values" : [ [ 1136005200000 , 1271000.0] ]
+  } ,
+  {
+    "key" : "Price" ,
+    "values" : [ [ 1136005200000 , 71.89] ]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
+  return series;
+});
+*/
+
+var chart;
+
+nv.addGraph(function() {
+    chart = nv.models.linePlusBarChart()
+        .margin({top: 30, right: 60, bottom: 50, left: 70})
+        .x(function(d,i) { return i })
+        .color(d3.scale.category10().range());
+
+    chart.xAxis.tickFormat(function(d) {
+      var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
+      return dx ? d3.time.format('%x')(new Date(dx)) : '';
+      })
+      .showMaxMin(false);
+
+    chart.y1Axis
+        .tickFormat(d3.format(',f'));
+
+    chart.y2Axis
+        .tickFormat(function(d) { return '$' + d3.format(',.2f')(d) });
+
+    chart.bars.forceY([0]).padData(false);
+    //chart.lines.forceY([0]);
+
+    d3.select('#chart1 svg')
+        .datum(testdata)
+      .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+    return chart;
+});
+
+</script>
diff --git a/examples/linePlusBarWithFocusChart.html b/examples/linePlusBarWithFocusChart.html
new file mode 100644
index 0000000..4eac5d8
--- /dev/null
+++ b/examples/linePlusBarWithFocusChart.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 svg {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1" class='with-3d-shadow with-transitions'>
+    <svg> </svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/linePlusBarWithFocusChart.js"></script>
+<script>
+
+
+var testdata = [
+  {
+    "key" : "Quantity" ,
+    "bar": true,
+    "values" : [ [ 1136005200000 , 1271000.0] , [ 1138683600000 , 1271000.0] , [ 1141102800000 , 1271000.0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 3899486.0] , [ 1162270800000 , 3899486.0] , [ 1164862800000 , 3899486.0] , [ 1167541200000 , 3564700.0] , [ 1170219600000 , 3564700.0] , [ 1172638800000 , 3564700.0] , [ 1175313600000 , 2648493.0] , [ 1177905600000 , 2648493.0] , [ 1180584000000 , 2648493.0] , [ 1183176000000 , 2522993.0] , [ 1185854400000 , 2522993.0] , [ 1188532800000 , 2522993.0] , [ 1191124800000 , 2906501.0] , [ 1193803200000 , 2906501.0] , [ 1196398800000 , 2906501.0] , [ 1199077200000 , 2206761.0] , [ 1201755600000 , 2206761.0] , [ 1204261200000 , 2206761.0] , [ 1206936000000 , 2287726.0] , [ 1209528000000 , 2287726.0] , [ 1212206400000 , 2287726.0] , [ 1214798400000 , 2732646.0] , [ 1217476800000 , 2732646.0] , [ 1220155200000 , 2732646.0] , [ 1222747200000 , 2599196.0] , [ 1225425600000 , 2599196.0] , [ 1228021200000 , 2599196.0] , [ 1230699600000 , 1924387.0] , [ 1233378000000 , 1924387.0] , [ 1235797200000 , 1924387.0] , [ 1238472000000 , 1756311.0] , [ 1241064000000 , 1756311.0] , [ 1243742400000 , 1756311.0] , [ 1246334400000 , 1743470.0] , [ 1249012800000 , 1743470.0] , [ 1251691200000 , 1743470.0] , [ 1254283200000 , 1519010.0] , [ 1256961600000 , 1519010.0] , [ 1259557200000 , 1519010.0] , [ 1262235600000 , 1591444.0] , [ 1264914000000 , 1591444.0] , [ 1267333200000 , 1591444.0] , [ 1270008000000 , 1543784.0] , [ 1272600000000 , 1543784.0] , [ 1275278400000 , 1543784.0] , [ 1277870400000 , 1309915.0] , [ 1280548800000 , 1309915.0] , [ 1283227200000 , 1309915.0] , [ 1285819200000 , 1331875.0] , [ 1288497600000 , 1331875.0] , [ 1291093200000 , 1331875.0] , [ 1293771600000 , 1331875.0] , [ 1296450000000 , 1154695.0] , [ 1298869200000 , 1154695.0] , [ 1301544000000 , 1194025.0] , [ 1304136000000 , 1194025.0] , [ 1306814400000 , 1194025.0] , [ 1309406400000 , 1194025.0] , [ 1312084800000 , 1194025.0] , [ 1314763200000 , 1244525.0] , [ 1317355200000 , 475000.0] , [ 1320033600000 , 475000.0] , [ 1322629200000 , 475000.0] , [ 1325307600000 , 690033.0] , [ 1327986000000 , 690033.0] , [ 1330491600000 , 690033.0] , [ 1333166400000 , 514733.0] , [ 1335758400000 , 514733.0]]
+  },
+  {
+    "key" : "Price" ,
+    "values" : [ [ 1136005200000 , 71.89] , [ 1138683600000 , 75.51] , [ 1141102800000 , 68.49] , [ 1143781200000 , 62.72] , [ 1146369600000 , 70.39] , [ 1149048000000 , 59.77] , [ 1151640000000 , 57.27] , [ 1154318400000 , 67.96] , [ 1156996800000 , 67.85] , [ 1159588800000 , 76.98] , [ 1162270800000 , 81.08] , [ 1164862800000 , 91.66] , [ 1167541200000 , 84.84] , [ 1170219600000 , 85.73] , [ 1172638800000 , 84.61] , [ 1175313600000 , 92.91] , [ 1177905600000 , 99.8] , [ 1180584000000 , 121.191] , [ 1183176000000 , 122.04] , [ 1185854400000 , 131.76] , [ 1188532800000 , 138.48] , [ 1191124800000 , 153.47] , [ 1193803200000 , 189.95] , [ 1196398800000 , 182.22] , [ 1199077200000 , 198.08] , [ 1201755600000 , 135.36] , [ 1204261200000 , 125.02] , [ 1206936000000 , 143.5] , [ 1209528000000 , 173.95] , [ 1212206400000 , 188.75] , [ 1214798400000 , 167.44] , [ 1217476800000 , 158.95] , [ 1220155200000 , 169.53] , [ 1222747200000 , 113.66] , [ 1225425600000 , 107.59] , [ 1228021200000 , 92.67] , [ 1230699600000 , 85.35] , [ 1233378000000 , 90.13] , [ 1235797200000 , 89.31] , [ 1238472000000 , 105.12] , [ 1241064000000 , 125.83] , [ 1243742400000 , 135.81] , [ 1246334400000 , 142.43] , [ 1249012800000 , 163.39] , [ 1251691200000 , 168.21] , [ 1254283200000 , 185.35] , [ 1256961600000 , 188.5] , [ 1259557200000 , 199.91] , [ 1262235600000 , 210.732] , [ 1264914000000 , 192.063] , [ 1267333200000 , 204.62] , [ 1270008000000 , 235.0] , [ 1272600000000 , 261.09] , [ 1275278400000 , 256.88] , [ 1277870400000 , 251.53] , [ 1280548800000 , 257.25] , [ 1283227200000 , 243.1] , [ 1285819200000 , 283.75] , [ 1288497600000 , 300.98] , [ 1291093200000 , 311.15] , [ 1293771600000 , 322.56] , [ 1296450000000 , 339.32] , [ 1298869200000 , 353.21] , [ 1301544000000 , 348.5075] , [ 1304136000000 , 350.13] , [ 1306814400000 , 347.83] , [ 1309406400000 , 335.67] , [ 1312084800000 , 390.48] , [ 1314763200000 , 384.83] , [ 1317355200000 , 381.32] , [ 1320033600000 , 404.78] , [ 1322629200000 , 382.2] , [ 1325307600000 , 405.0] , [ 1327986000000 , 456.48] , [ 1330491600000 , 542.44] , [ 1333166400000 , 599.55] , [ 1335758400000 , 583.98]]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
+  return series;
+});
+
+
+/*
+//For testing single data point
+var testdata = [
+  {
+    "key" : "Quantity" ,
+    "bar": true,
+    "values" : [ [ 1136005200000 , 1271000.0] ]
+  } ,
+  {
+    "key" : "Price" ,
+    "values" : [ [ 1136005200000 , 71.89] ]
+  }
+].map(function(series) {
+  series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
+  return series;
+});
+*/
+
+
+
+nv.addGraph(function() {
+    var chart = nv.models.linePlusBarWithFocusChart()
+        .margin({top: 30, right: 60, bottom: 50, left: 70})
+        .x(function(d,i) { return i })
+        .color(d3.scale.category10().range());
+
+    chart.xAxis.tickFormat(function(d) {
+
+      var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
+      if (dx > 0) {
+          return d3.time.format('%x')(new Date(dx))
+      }
+      return null;
+    });
+
+    chart.x2Axis.tickFormat(function(d) {
+      var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
+      return d3.time.format('%x')(new Date(dx))
+    });
+    
+    chart.y1Axis
+        .tickFormat(d3.format(',f'));
+
+    chart.y3Axis
+        .tickFormat(d3.format(',f'));
+        
+    chart.y2Axis
+        .tickFormat(function(d) { return '$' + d3.format(',.2f')(d) });
+
+    chart.y4Axis
+        .tickFormat(function(d) { return '$' + d3.format(',.2f')(d) });
+        
+    chart.bars.forceY([0]);
+    chart.bars2.forceY([0]);
+    //chart.lines.forceY([0]);
+    nv.log(testdata);
+    d3.select('#chart1 svg')
+        .datum(testdata)
+        .call(chart);
+
+//    nv.utils.windowResize(chart.update);
+
+    return chart;
+});
+
+</script>
diff --git a/examples/lineWithFisheyeChart.html b/examples/lineWithFisheyeChart.html
new file mode 100644
index 0000000..e081850
--- /dev/null
+++ b/examples/lineWithFisheyeChart.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1" class='with-3d-shadow with-transitions'>
+    <svg style="height: 500px;"></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/fisheye.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/lineWithFisheye.js"></script>
+<script src="../src/models/lineWithFisheyeChart.js"></script>
+<script>
+
+
+// Wrapping in nv.addGraph allows for '0 timeout render', stors rendered charts in nv.graphs, and may do more in the future... it's NOT required
+nv.addGraph(function() {  
+  var chart = nv.models.lineChart();
+
+  chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+      .tickFormat(d3.format(',r'));
+
+  chart.yAxis
+      .axisLabel('Voltage (v)')
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart1 svg')
+      .datum(sinAndCos())
+    .transition().duration(500)
+      .call(chart);
+
+  //TODO: Figure out a good way to do this automatically
+  nv.utils.windowResize(chart.update);
+  //nv.utils.windowResize(function() { d3.select('#chart1 svg').call(chart) });
+
+  return chart;
+});
+
+
+
+function sinAndCos() {
+  var sin = [],
+      cos = [];
+
+  for (var i = 0; i < 200; i++) {
+    sin.push({x: i, y: Math.sin(i/2)});
+    cos.push({x: i, y: .5 * Math.cos(i)});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    }
+  ];
+}
+
+
+</script>
diff --git a/examples/lineWithFocusChart.html b/examples/lineWithFocusChart.html
new file mode 100644
index 0000000..c5278a1
--- /dev/null
+++ b/examples/lineWithFocusChart.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+svg {
+  display: block;
+}
+
+#chart1 svg {
+  height: 500px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  margin: 50px;
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart" class='with-3d-shadow with-transitions'>
+    <svg style="height: 500px;"></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineWithFocusChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+
+nv.addGraph(function() {
+  var chart = nv.models.lineWithFocusChart();
+
+ // chart.transitionDuration(500);
+  chart.xAxis
+      .tickFormat(d3.format(',f'));
+  chart.x2Axis
+      .tickFormat(d3.format(',f'));
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+  chart.y2Axis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart svg')
+      .datum(testData())
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+
+function testData() {
+  return stream_layers(3,128,.1).map(function(data, i) {
+    return { 
+      key: 'Stream' + i,
+      values: data
+    };
+  });
+}
+
+
+</script>
diff --git a/examples/multiBar.html b/examples/multiBar.html
new file mode 100644
index 0000000..f00de23
--- /dev/null
+++ b/examples/multiBar.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+  <div id="test1">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBar.js"></script>
+<script src="../src/utils.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+  //var test_data = stream_layers(3,128,.1).map(function(data, i) {
+  var test_data = stream_layers(3,128,.1).map(function(data, i) {
+    return {
+      key: 'Stream' + i,
+      values: data
+    };
+  });
+
+nv.addGraph({
+  generate: function() {
+      var width = nv.utils.windowSize().width - 40,
+      height = nv.utils.windowSize().height - 40;
+
+      var chart = nv.models.multiBar()
+                .width(width)
+                .height(height)
+                .stacked(true)
+
+
+    var svg = d3.select('#test1 svg')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(test_data);
+
+    svg.transition().duration(500).call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+
+
+    window.onresize = function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height - 40,
+        margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#test1 svg')
+        .attr('width', width)
+        .attr('height', height)
+        transition().duration(500)
+        .call(graph);
+
+      };
+  }
+});
+
+
+
+</script>
diff --git a/examples/multiBarChart.html b/examples/multiBarChart.html
new file mode 100644
index 0000000..55e3010
--- /dev/null
+++ b/examples/multiBarChart.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body>
+
+  <div id="chart1" class='with-3d-shadow with-transitions'>
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBar.js"></script>
+<script src="../src/models/multiBarChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+var test_data = stream_layers(3,10+Math.random()*100,.1).map(function(data, i) {
+//var test_data = stream_layers(3,1,.1).map(function(data, i) { //for testing single data point
+  return {
+    key: 'Stream' + i,
+    values: data
+  };
+});
+
+console.log('td',test_data);
+
+var negative_test_data = new d3.range(0,3).map(function(d,i) { return {
+  key: 'Stream' + i,
+  values: new d3.range(0,11).map( function(f,j) {
+    return { 
+             y: 10 + Math.random()*100 * (Math.floor(Math.random()*100)%2 ? 1 : -1),
+             x: j
+           }
+  })
+  };  
+});
+
+var chart;
+nv.addGraph(function() {
+    chart = nv.models.multiBarChart()
+      .barColor(d3.scale.category20().range())
+      .margin({bottom: 100})
+      .transitionDuration(300)
+      .delay(0)
+      .rotateLabels(45)
+      .groupSpacing(0.1)
+      ;
+
+    chart.multibar
+      .hideable(true);
+
+    chart.reduceXTicks(false).staggerLabels(true);
+
+    chart.xAxis
+        .axisLabel("Current Index")
+        .showMaxMin(true)
+        .tickFormat(d3.format(',.6f'));
+
+    chart.yAxis
+        .tickFormat(d3.format(',.1f'));
+
+    d3.select('#chart1 svg')
+        .datum(negative_test_data)
+       .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+    return chart;
+});
+
+
+
+
+</script>
diff --git a/examples/multiBarHorizontalChart.html b/examples/multiBarHorizontalChart.html
new file mode 100644
index 0000000..5157263
--- /dev/null
+++ b/examples/multiBarHorizontalChart.html
@@ -0,0 +1,389 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 {
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+#chart1 svg {
+  height: 500px;
+}
+
+</style>
+<body>
+
+  <div id="chart1" class='with-3d-shadow with-transitions'>
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBarHorizontal.js"></script>
+<script src="../src/models/multiBarHorizontalChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+
+
+long_short_data = [ 
+  {
+    key: 'Series1',
+    color: '#d62728',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : -1.8746444827653
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : -8.0961543492239
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : -0.57072943117674
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : -2.4174010336624
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : -0.72009071426284
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : -0.77154485523777
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : -0.90152097798131
+      } , 
+      {
+        "label" : "Group H" ,
+        "value" : -0.91445417330854
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : -0.055746319141851
+      }
+    ]
+  },
+  {
+    key: 'Series2',
+    color: '#1f77b4',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : 25.307646510375
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : 16.756779544553
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : 18.451534877007
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : 8.6142352811805
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : 7.8082472075876
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : 5.259101026956
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : 0.30947953487127
+      } , 
+      { 
+        "label" : "Group H" ,
+        "value" : 0
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : 0 
+      }
+    ]
+  },
+  {
+    key: 'Series3',
+    color: '#2ca02c',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : -25.307646510375
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : 16.756779544553
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : -18.451534877007
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : 8.6142352811805
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : -7.8082472075876
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : 5.259101026956
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : -0.30947953487127
+      } , 
+      { 
+        "label" : "Group H" ,
+        "value" : 0
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : 0 
+      }
+    ]
+  }
+];
+
+
+
+long_short_pos_data = [ 
+  {
+    key: 'Series1',
+    color: '#d62728',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : 1.8746444827653
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : 8.0961543492239
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : 0.57072943117674
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : 2.4174010336624
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : 0.72009071426284
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : 0.77154485523777
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : 0.90152097798131
+      } , 
+      {
+        "label" : "Group H" ,
+        "value" : 0.91445417330854
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : 0.055746319141851
+      }
+    ]
+  },
+  {
+    key: 'Series2',
+    color: '#1f77b4',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : 25.307646510375
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : 16.756779544553
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : 18.451534877007
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : 8.6142352811805
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : 7.8082472075876
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : 5.259101026956
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : 0.30947953487127
+      } , 
+      { 
+        "label" : "Group H" ,
+        "value" : 0
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : 0 
+      }
+    ]
+  }
+];
+
+
+long_short_neg_data = [ 
+  {
+    key: 'Series1',
+    color: '#d62728',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : -1.8746444827653
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : -8.0961543492239
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : -0.57072943117674
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : -2.4174010336624
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : -0.72009071426284
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : -0.77154485523777
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : -0.90152097798131
+      } , 
+      {
+        "label" : "Group H" ,
+        "value" : -0.91445417330854
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : -0.055746319141851
+      }
+    ]
+  },
+  {
+    key: 'Series2',
+    color: '#1f77b4',
+    values: [
+      { 
+        "label" : "Group A" ,
+        "value" : -25.307646510375
+      } , 
+      { 
+        "label" : "Group B" ,
+        "value" : -16.756779544553
+      } , 
+      { 
+        "label" : "Group C" ,
+        "value" : -18.451534877007
+      } , 
+      { 
+        "label" : "Group D" ,
+        "value" : -8.6142352811805
+      } , 
+      {
+        "label" : "Group E" ,
+        "value" : -7.8082472075876
+      } , 
+      { 
+        "label" : "Group F" ,
+        "value" : -5.259101026956
+      } , 
+      { 
+        "label" : "Group G" ,
+        "value" : -0.30947953487127
+      } , 
+      { 
+        "label" : "Group H" ,
+        "value" : 0
+      } , 
+      { 
+        "label" : "Group I" ,
+        "value" : 0 
+      }
+    ]
+  }
+];
+
+
+
+
+var chart;
+nv.addGraph(function() {
+  chart = nv.models.multiBarHorizontalChart()
+      .x(function(d) { return d.label })
+      .y(function(d) { return d.value })
+      .margin({top: 30, right: 20, bottom: 50, left: 175})
+      //.showValues(true)
+      //.tooltips(false)
+      .barColor(d3.scale.category20().range())
+      .transitionDuration(250)
+      .stacked(true)
+      //.showControls(false);
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart1 svg')
+      .datum(long_short_data)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+
+
+</script>
diff --git a/examples/multiChart.html b/examples/multiChart.html
new file mode 100644
index 0000000..3bfa693
--- /dev/null
+++ b/examples/multiChart.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1 svg {
+  height: 500px;
+  margin: 10px;
+  min-width: 100px;
+  min-height: 100px;
+/*
+  Minimum height and width is a good idea to prevent negative SVG dimensions...
+  For example width should be =< margin.left + margin.right + 1,
+  of course 1 pixel for the entire chart would not be very useful, BUT should not have errors
+*/
+}
+
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+  <div id="chart1" >
+    <svg> </svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/multiBar.js"></script>
+<script src="../src/models/multiChart.js"></script>
+<script src="stream_layers.js"></script>
+<script>
+
+
+var testdata = stream_layers(7,10+Math.random()*100,.1).map(function(data, i) {
+  return {
+    key: 'Stream' + i,
+    values: data.map(function(a){a.y = a.y * (i <= 1 ? -1 : 1); return a})
+  };
+});
+
+testdata[0].type = "area"
+testdata[0].yAxis = 1
+testdata[1].type = "area"
+testdata[1].yAxis = 1
+testdata[2].type = "line"
+testdata[2].yAxis = 1
+testdata[3].type = "line"
+testdata[3].yAxis = 2
+testdata[4].type = "bar"
+testdata[4].yAxis = 2
+testdata[5].type = "bar"
+testdata[5].yAxis = 2
+testdata[6].type = "bar"
+testdata[6].yAxis = 2
+
+
+nv.addGraph(function() {
+    var chart = nv.models.multiChart()
+        .margin({top: 30, right: 60, bottom: 50, left: 70})
+        .color(d3.scale.category10().range());
+
+    chart.xAxis
+        .tickFormat(d3.format(',f'));
+
+    chart.yAxis1
+        .tickFormat(d3.format(',.1f'));
+
+    chart.yAxis2
+        .tickFormat(d3.format(',.1f'));
+
+
+    d3.select('#chart1 svg')
+        .datum(testdata)
+      .transition().duration(500).call(chart);
+
+    return chart;
+});
+
+</script>
+</html>
\ No newline at end of file
diff --git a/examples/nations.json b/examples/nations.json
new file mode 100644
index 0000000..c9e730c
--- /dev/null
+++ b/examples/nations.json
@@ -0,0 +1 @@
+[{"name":"Angola","region":"Sub-Saharan Africa","income":[[1800,359.93],[1820,359.93],[1913,556.12],[1950,3363.02],[1951,3440.9],[1952,3520.61],[1953,3598.81],[1954,3450.82],[1955,3672.08],[1956,3549.04],[1957,3827.94],[1958,3966.42],[1959,3917.76],[1960,4006.21],[1961,4463.83],[1962,4269.28],[1963,4413.6],[1964,4826.49],[1965,5102.21],[1966,5308.14],[1967,5522.78],[1968,5346.63],[1969,5408.12],[1970,5651.88],[1971,5526.21],[1972,5473.29],[1973,5722.02],[1974,5470.21],[1975,3430.85],[1976,3050.32],[1977,3008.65],[1978,3070.82],[1979,3064.89],[1980,3074.75],[1981,2953.41],[1982,2756.95],[1983,2584.56],[1984,2527.47],[1985,2492.83],[1986,2220.61],[1987,2430.21],[1988,2728.53],[1989,2730.56],[1990,2777.42],[1991,2730.85],[1992,2627.85],[1993,1869.92],[1994,1851.45],[1995,1989.02],[1996,2157.35],[1997,2277.14],[1998,2384.48],[1999,2417.18],[2000,2446.65],[2001,2479.69],[2002,2773.29],[2003,2785.39],[2004,3007.11],[2005,3533],[2006,4069.56],[2007,4755.46],[2008,5228.74],[2009,5055.59]],"population":[[1800,1567028],[1820,1567028],[1940,3738000],[1950,4117617],[1951,4173095],[1952,4232095],[1953,4293840],[1954,4357527],[1955,4423223],[1956,4490992],[1957,4561361],[1958,4635885],[1959,4714676],[1960,4797344],[1961,4752489],[1962,4826015],[1963,4919586],[1964,5026044],[1965,5134818],[1966,5201250],[1967,5247469],[1968,5350384],[1969,5471641],[1970,5605626],[1971,5752775],[1972,5894858],[1973,6025841],[1974,5986432],[1975,5884241],[1976,5942225],[1977,6162675],[1978,6285716],[1979,6451227],[1980,6741465],[1981,6877697],[1982,7016384],[1983,7238214],[1984,7439658],[1985,7581504],[1986,7744932],[1987,7874230],[1988,8018724],[1989,8148595],[1990,8290856],[1991,8490763],[1992,8735988],[1993,8961438],[1994,9170032],[1995,9421477],[1996,9660081],[1997,9875024],[1998,10071442],[1999,10263229],[2000,10442812],[2001,10623424],[2002,10866106],[2003,11186202],[2004,11521432],[2005,11827315],[2006,12127071],[2007,12420476],[2008,12707546]],"lifeExpectancy":[[1800,26.98],[1940,26.98],[1950,29.22],[1951,29.42],[1952,29.81],[1953,30.21],[1954,30.6],[1955,31],[1956,31.4],[1957,31.8],[1958,32.2],[1959,32.6],[1960,33],[1961,33.4],[1962,33.8],[1963,34.2],[1964,34.6],[1965,35],[1966,35.4],[1967,35.8],[1968,36.2],[1969,36.6],[1970,37],[1971,37.41],[1972,37.83],[1973,38.26],[1974,38.68],[1975,39.09],[1976,39.46],[1977,39.8],[1978,40.1],[1979,40.34],[1980,40.55],[1981,40.71],[1982,40.85],[1983,40.97],[1984,41.08],[1985,41.2],[1986,41.33],[1987,41.48],[1988,41.64],[1989,41.81],[1990,41.99],[1991,42.16],[1992,42.32],[1993,42.46],[1994,42.59],[1995,42.7],[1996,42.82],[1997,42.96],[1998,43.12],[1999,43.32],[2000,43.56],[2001,43.86],[2002,44.22],[2003,44.61],[2004,45.05],[2005,45.52],[2006,46.02],[2007,46.54],[2008,47.06],[2009,47.58]]},{"name":"Benin","region":"Sub-Saharan Africa","income":[[1800,553.72],[1820,553.72],[1913,855.53],[1950,1104.47],[1951,1083.57],[1952,1062.75],[1953,1012.84],[1954,1021.29],[1955,1000.66],[1956,980.06],[1957,959.6],[1958,974.04],[1959,988.88],[1960,996.93],[1961,1006.39],[1962,949.5],[1963,970.34],[1964,1012.25],[1965,1039.34],[1966,1051.67],[1967,1035.83],[1968,1048.78],[1969,1052.8],[1970,1047.17],[1971,1024.93],[1972,1085.8],[1973,1081.87],[1974,973.64],[1975,987.96],[1976,1002.19],[1977,1029.16],[1978,1032.01],[1979,1083.17],[1980,1154.23],[1981,1186.7],[1982,1277.9],[1983,1187.14],[1984,1243.82],[1985,1297.16],[1986,1285.08],[1987,1225.86],[1988,1222.9],[1989,1158.34],[1990,1165.47],[1991,1181.65],[1992,1191.21],[1993,1177.91],[1994,1168.53],[1995,1176.67],[1996,1202.15],[1997,1232.98],[1998,1251.88],[1999,1272.8],[2000,1307.57],[2001,1333.3],[2002,1372.88],[2003,1386.05],[2004,1389.13],[2005,1390],[2006,1402.94],[2007,1428.15],[2008,1459.07],[2009,1457.57]],"population":[[1800,636559],[1820,636559],[1950,1672661],[1951,1704916],[1952,1738315],[1953,1772899],[1954,1808895],[1955,1846175],[1956,1884978],[1957,1925173],[1958,1966816],[1959,2010163],[1960,2055083],[1961,2101846],[1962,2151895],[1963,2202775],[1964,2255760],[1965,2310714],[1966,2367951],[1967,2427334],[1968,2488957],[1969,2553162],[1970,2619809],[1971,2689271],[1972,2761407],[1973,2836325],[1974,2914439],[1975,2995605],[1976,3080268],[1977,3168267],[1978,3259760],[1979,3354798],[1980,3444361],[1981,3540043],[1982,3641603],[1983,3748839],[1984,3861680],[1985,3982013],[1986,4110035],[1987,4243788],[1988,4382448],[1989,4526250],[1990,4676077],[1991,4828814],[1992,4981671],[1993,5214220],[1994,5487359],[1995,5700089],[1996,5886094],[1997,6066080],[1998,6248686],[1999,6435871],[2000,6627964],[2001,6824931],[2002,7026113],[2003,7230693],[2004,7438437],[2005,7649360],[2006,7862944],[2007,8078314],[2008,8294941]],"lifeExpectancy":[[1800,31],[1944,31],[1950,36.53],[1951,36.73],[1952,37.15],[1953,37.58],[1954,38.01],[1955,38.45],[1956,38.9],[1957,39.35],[1958,39.8],[1959,40.26],[1960,40.72],[1961,41.18],[1962,41.64],[1963,42.1],[1964,42.55],[1965,43.01],[1966,43.47],[1967,43.95],[1968,44.43],[1969,44.93],[1970,45.45],[1971,45.99],[1972,46.55],[1973,47.12],[1974,47.69],[1975,48.25],[1976,48.79],[1977,49.29],[1978,49.75],[1979,50.17],[1980,50.54],[1981,50.87],[1982,51.15],[1983,51.42],[1984,51.68],[1985,51.94],[1986,52.24],[1987,52.57],[1988,52.95],[1989,53.37],[1990,53.84],[1991,54.34],[1992,54.86],[1993,55.38],[1994,55.89],[1995,56.38],[1996,56.84],[1997,57.26],[1998,57.64],[1999,58],[2000,58.34],[2001,58.68],[2002,59.02],[2003,59.38],[2004,59.77],[2005,60.17],[2006,60.6],[2007,61.03],[2008,61.47],[2009,61.89]]},{"name":"Botswana","region":"Sub-Saharan Africa","income":[[1800,407.36],[1820,407.36],[1913,629.4],[1950,825.25],[1951,840.94],[1952,851.24],[1953,865.86],[1954,880.5],[1955,893.58],[1956,905.91],[1957,918.23],[1958,929.05],[1959,944.14],[1960,953.26],[1961,971.44],[1962,983.65],[1963,999.69],[1964,1018.75],[1965,1034.37],[1966,1119.01],[1967,1214.71],[1968,1319.18],[1969,1424.21],[1970,1532.71],[1971,1769.34],[1972,2263.61],[1973,2658.43],[1974,3077.33],[1975,2897.18],[1976,3271.32],[1977,3214.86],[1978,3640.34],[1979,3818.4],[1980,4178.48],[1981,4399.13],[1982,4551.14],[1983,5079.53],[1984,5450.44],[1985,5656.04],[1986,5889.64],[1987,6205.88],[1988,6959.66],[1989,7619.62],[1990,7829.23],[1991,7964.58],[1992,7954.11],[1993,7860.65],[1994,7898.05],[1995,8030.48],[1996,8281.92],[1997,8647.14],[1998,8990.98],[1999,9416.67],[2000,10107.99],[2001,10543.61],[2002,11003.61],[2003,11391.09],[2004,11722.59],[2005,12057],[2006,12574.18],[2007,13010.7],[2008,13240.06],[2009,12282.28]],"population":[[1800,121000],[1904,121000],[1911,125000],[1921,153000],[1936,266000],[1946,296000],[1950,430413],[1951,436320],[1952,442308],[1953,448377],[1954,454640],[1955,461100],[1956,467765],[1957,474639],[1958,481731],[1959,489080],[1960,496695],[1961,504585],[1962,512764],[1963,521237],[1964,529966],[1965,538100],[1966,545965],[1967,553541],[1968,561941],[1969,571874],[1970,583999],[1971,599647],[1972,619351],[1973,643076],[1974,671769],[1975,704591],[1976,741273],[1977,781472],[1978,822247],[1979,862602],[1980,900476],[1981,934438],[1982,970347],[1983,1006466],[1984,1042702],[1985,1078902],[1986,1114934],[1987,1151184],[1988,1188137],[1989,1225684],[1990,1263643],[1991,1301796],[1992,1342614],[1993,1385749],[1994,1427426],[1995,1466989],[1996,1503652],[1997,1536536],[1998,1564950],[1999,1588505],[2000,1607069],[2001,1620848],[2002,1630347],[2003,1636213],[2004,1639231],[2005,1640115],[2006,1639833],[2007,1639131],[2008,1638393]],"lifeExpectancy":[[1800,33.6],[1945,33.6],[1950,46.82],[1951,47.02],[1952,47.43],[1953,47.84],[1954,48.25],[1955,48.65],[1956,49.05],[1957,49.45],[1958,49.85],[1959,50.23],[1960,50.61],[1961,50.98],[1962,51.33],[1963,51.68],[1964,52.02],[1965,52.37],[1966,52.74],[1967,53.13],[1968,53.57],[1969,54.04],[1970,54.56],[1971,55.13],[1972,55.75],[1973,56.39],[1974,57.04],[1975,57.7],[1976,58.33],[1977,58.93],[1978,59.48],[1979,59.99],[1980,60.46],[1981,60.92],[1982,61.38],[1983,61.85],[1984,62.31],[1985,62.77],[1986,63.23],[1987,63.65],[1988,64],[1989,64.22],[1990,64.24],[1991,63.97],[1992,63.38],[1993,62.47],[1994,61.26],[1995,59.76],[1996,57.98],[1997,56.05],[1998,54.08],[1999,52.21],[2000,50.65],[2001,49.59],[2002,49.11],[2003,49.22],[2004,49.87],[2005,50.92],[2006,52.17],[2007,53.39],[2008,54.4],[2009,55.12]]},{"name":"Burkina Faso","region":"Sub-Saharan Africa","income":[[1800,454.33],[1820,454.33],[1913,497.44],[1950,515.71],[1951,529.66],[1952,543.26],[1953,557.01],[1954,571.4],[1955,586.4],[1956,601.99],[1957,617.18],[1958,633.89],[1959,649.7],[1960,661.86],[1961,684.8],[1962,722.51],[1963,708.58],[1964,719.57],[1965,740.98],[1966,737.83],[1967,794.83],[1968,810.76],[1969,817.43],[1970,809.75],[1971,831.9],[1972,854.74],[1973,798.63],[1974,772.28],[1975,727.95],[1976,709.39],[1977,743.39],[1978,811.57],[1979,800.89],[1980,794.76],[1981,809.75],[1982,807.2],[1983,778.05],[1984,770.53],[1985,848.8],[1986,955.4],[1987,912.06],[1988,957.87],[1989,917.41],[1990,880.17],[1991,938.09],[1992,931.75],[1993,895.91],[1994,878.97],[1995,889.91],[1996,929.21],[1997,946.29],[1998,978.6],[1999,1009.59],[2000,1001.48],[2001,1029.97],[2002,1037.65],[2003,1080.53],[2004,1096.85],[2005,1140],[2006,1175.51],[2007,1189.88],[2008,1223.52],[2009,1234.42]],"population":[[1800,1665421],[1820,1665421],[1950,4376162],[1951,4422822],[1952,4469979],[1953,4517639],[1954,4565808],[1955,4614490],[1956,4663691],[1957,4713416],[1958,4763672],[1959,4814463],[1960,4865796],[1961,4890688],[1962,4919632],[1963,4952695],[1964,4989961],[1965,5031519],[1966,5077473],[1967,5127935],[1968,5183033],[1969,5242904],[1970,5303777],[1971,5366018],[1972,5433886],[1973,5507594],[1974,5587373],[1975,5673472],[1976,5764606],[1977,5889574],[1978,6023204],[1979,6165533],[1980,6315312],[1981,6471556],[1982,6634596],[1983,6804810],[1984,6982590],[1985,7168228],[1986,7367641],[1987,7586551],[1988,7824563],[1989,8076170],[1990,8335771],[1991,8603238],[1992,8878303],[1993,9159653],[1994,9467871],[1995,9772602],[1996,10060724],[1997,10352843],[1998,10652495],[1999,10975109],[2000,11308552],[2001,11732326],[2002,12251209],[2003,12705775],[2004,13092647],[2005,13491736],[2006,13902972],[2007,14326203],[2008,14761339]],"lifeExpectancy":[[1800,29.2],[1945,29.2],[1950,32.89],[1951,33.09],[1952,33.49],[1953,33.9],[1954,34.34],[1955,34.79],[1956,35.26],[1957,35.74],[1958,36.24],[1959,36.74],[1960,37.25],[1961,37.76],[1962,38.25],[1963,38.73],[1964,39.2],[1965,39.63],[1966,40.04],[1967,40.43],[1968,40.79],[1969,41.14],[1970,41.48],[1971,41.82],[1972,42.17],[1973,42.53],[1974,42.9],[1975,43.27],[1976,43.64],[1977,44],[1978,44.33],[1979,44.65],[1980,44.95],[1981,45.22],[1982,45.49],[1983,45.75],[1984,46.01],[1985,46.27],[1986,46.51],[1987,46.75],[1988,46.98],[1989,47.2],[1990,47.42],[1991,47.65],[1992,47.89],[1993,48.14],[1994,48.41],[1995,48.7],[1996,49.01],[1997,49.34],[1998,49.68],[1999,50.02],[2000,50.37],[2001,50.72],[2002,51.07],[2003,51.42],[2004,51.76],[2005,52.09],[2006,52.42],[2007,52.74],[2008,53.06],[2009,53.38]]},{"name":"Burundi","region":"Sub-Saharan Africa","income":[[1800,447.59],[1820,447.59],[1913,353.82],[1950,322.23],[1951,334.76],[1952,339.3],[1953,346.93],[1954,359.61],[1955,364.64],[1956,372],[1957,379.56],[1958,383.38],[1959,398.3],[1960,396.94],[1961,333.27],[1962,355.2],[1963,364.13],[1964,376.1],[1965,380.08],[1966,387.47],[1967,412.98],[1968,400.03],[1969,388.1],[1970,483.32],[1971,510.51],[1972,464.1],[1973,496.11],[1974,484.51],[1975,478.55],[1976,506.22],[1977,556.1],[1978,536.58],[1979,522.02],[1980,539.85],[1981,574.48],[1982,559.6],[1983,563.3],[1984,549.69],[1985,600.88],[1986,611.89],[1987,621.82],[1988,628.59],[1989,623.27],[1990,630.44],[1991,646.51],[1992,631.7],[1993,613.04],[1994,585.18],[1995,507.2],[1996,462.85],[1997,463.12],[1998,473.7],[1999,455.41],[2000,443.76],[2001,440.51],[2002,446.4],[2003,427.14],[2004,431.76],[2005,420.08],[2006,432.95],[2007,439.64],[2008,450.54],[2009,457.07]],"population":[[1800,899097],[1820,899097],[1950,2362522],[1951,2403682],[1952,2445618],[1953,2488348],[1954,2531886],[1955,2576249],[1956,2621454],[1957,2667518],[1958,2714458],[1959,2763722],[1960,2815405],[1961,2894153],[1962,2961915],[1963,3008458],[1964,3088827],[1965,3170653],[1966,3253610],[1967,3330989],[1968,3400775],[1969,3460144],[1970,3521913],[1971,3596811],[1972,3529983],[1973,3540066],[1974,3594958],[1975,3676308],[1976,3749077],[1977,3834415],[1978,3929974],[1979,4119789],[1980,4299555],[1981,4480338],[1982,4580410],[1983,4692262],[1984,4802889],[1985,4906862],[1986,5002688],[1987,5126023],[1988,5257314],[1989,5379124],[1990,5505113],[1991,5636676],[1992,5809236],[1993,5632915],[1994,5681513],[1995,6077812],[1996,6100754],[1997,6121610],[1998,6271409],[1999,6458283],[2000,6621126],[2001,6810307],[2002,7021078],[2003,7251827],[2004,7516212],[2005,7795426],[2006,8090068],[2007,8390505],[2008,8691005]],"lifeExpectancy":[[1800,31.5],[1945,31.5],[1950,38.42],[1951,38.58],[1952,38.88],[1953,39.18],[1954,39.49],[1955,39.79],[1956,40.08],[1957,40.38],[1958,40.68],[1959,40.98],[1960,41.29],[1961,41.61],[1962,41.93],[1963,42.25],[1964,42.57],[1965,42.87],[1966,43.13],[1967,43.35],[1968,43.53],[1969,43.66],[1970,43.78],[1971,43.91],[1972,44.07],[1973,44.28],[1974,44.55],[1975,44.87],[1976,45.24],[1977,45.63],[1978,46.02],[1979,46.4],[1980,46.76],[1981,47.11],[1982,47.44],[1983,47.75],[1984,48],[1985,48.15],[1986,48.13],[1987,47.91],[1988,47.52],[1989,46.97],[1990,46.36],[1991,45.76],[1992,45.27],[1993,44.96],[1994,44.85],[1995,44.95],[1996,45.23],[1997,45.61],[1998,46.03],[1999,46.47],[2000,46.9],[2001,47.33],[2002,47.77],[2003,48.22],[2004,48.69],[2005,49.15],[2006,49.61],[2007,50.06],[2008,50.51],[2009,50.95]]},{"name":"Cameroon","region":"Sub-Saharan Africa","income":[[1800,517.46],[1820,517.46],[1913,799.51],[1950,1117.97],[1951,1145.39],[1952,1172.67],[1953,1199.76],[1954,1227.65],[1955,1256.24],[1956,1284.39],[1957,1313.05],[1958,1342.09],[1959,1370.44],[1960,1386.31],[1961,1380.62],[1962,1399.61],[1963,1427.16],[1964,1452.69],[1965,1455.61],[1966,1495.91],[1967,1508.45],[1968,1575.87],[1969,1621],[1970,1635.98],[1971,1649.53],[1972,1684.15],[1973,1671.33],[1974,1706.3],[1975,1752.24],[1976,1739.5],[1977,1783.43],[1978,1824.31],[1979,1867.89],[1980,1989.19],[1981,2256.63],[1982,2367.98],[1983,2461.92],[1984,2575.35],[1985,2719.24],[1986,2824.45],[1987,2602.66],[1988,2411.32],[1989,2131.49],[1990,2036.08],[1991,1903.16],[1992,1793.16],[1993,1688.77],[1994,1603.04],[1995,1613.97],[1996,1652.43],[1997,1694.34],[1998,1736.44],[1999,1770.65],[2000,1803.44],[2001,1857.15],[2002,1934.01],[2003,1967.39],[2004,1997.11],[2005,1995],[2006,2003.19],[2007,2012.18],[2008,2013.83],[2009,1997.18]],"population":[[1800,1860054],[1820,1860054],[1926,2547668],[1931,3023000],[1936,3241694],[1950,4887591],[1951,4947090],[1952,5009067],[1953,5073595],[1954,5140805],[1955,5210832],[1956,5283822],[1957,5359923],[1958,5439350],[1959,5522218],[1960,5608760],[1961,5699165],[1962,5793633],[1963,5892378],[1964,5995682],[1965,6103788],[1966,6216951],[1967,6335506],[1968,6459744],[1969,6590041],[1970,6726733],[1971,6870244],[1972,7021028],[1973,7179499],[1974,7346174],[1975,7521530],[1976,7721125],[1977,7959865],[1978,8206825],[1979,8451209],[1980,8746201],[1981,9024472],[1982,9250831],[1983,9521511],[1984,9815056],[1985,10127591],[1986,10454538],[1987,10780667],[1988,11105864],[1989,11438491],[1990,11778594],[1991,12122404],[1992,12467171],[1993,12814205],[1994,13161203],[1995,13504356],[1996,13848792],[1997,14195809],[1998,14543246],[1999,14889962],[2000,15233673],[2001,15577246],[2002,15929988],[2003,16286408],[2004,16637276],[2005,16988132],[2006,17340702],[2007,17696293],[2008,18054929]],"lifeExpectancy":[[1800,28.75],[1931,28.75],[1945,28.75],[1950,37.85],[1951,38.01],[1952,38.34],[1953,38.69],[1954,39.06],[1955,39.43],[1956,39.83],[1957,40.24],[1958,40.66],[1959,41.09],[1960,41.53],[1961,41.98],[1962,42.42],[1963,42.86],[1964,43.3],[1965,43.74],[1966,44.17],[1967,44.61],[1968,45.05],[1969,45.49],[1970,45.94],[1971,46.38],[1972,46.82],[1973,47.26],[1974,47.7],[1975,48.16],[1976,48.66],[1977,49.2],[1978,49.79],[1979,50.42],[1980,51.08],[1981,51.76],[1982,52.44],[1983,53.09],[1984,53.69],[1985,54.2],[1986,54.61],[1987,54.9],[1988,55.08],[1989,55.14],[1990,55.08],[1991,54.91],[1992,54.66],[1993,54.34],[1994,53.98],[1995,53.59],[1996,53.18],[1997,52.75],[1998,52.31],[1999,51.9],[2000,51.52],[2001,51.19],[2002,50.93],[2003,50.74],[2004,50.64],[2005,50.62],[2006,50.7],[2007,50.87],[2008,51.1],[2009,51.39]]},{"name":"Cape Verde","region":"Sub-Saharan Africa","income":[[1800,340],[1820,340],[1821,341.4],[1822,342.8],[1823,344.22],[1824,345.63],[1825,347.05],[1826,348.48],[1827,349.92],[1828,351.36],[1829,352.8],[1830,354.26],[1831,355.71],[1832,357.18],[1833,358.65],[1834,360.12],[1835,361.61],[1836,363.1],[1837,364.59],[1838,366.09],[1839,367.6],[1840,369.11],[1841,370.63],[1842,372.15],[1843,373.69],[1844,375.22],[1845,376.77],[1846,378.32],[1847,379.88],[1848,381.44],[1849,383.01],[1850,384.59],[1851,386.17],[1852,387.76],[1853,389.35],[1854,390.96],[1855,392.57],[1856,394.18],[1857,395.8],[1858,397.43],[1859,399.07],[1860,400.71],[1861,402.36],[1862,404.02],[1863,405.68],[1864,407.35],[1865,409.03],[1866,410.71],[1867,412.4],[1868,414.1],[1869,415.8],[1870,417.51],[1871,419.23],[1872,420.96],[1873,422.69],[1874,424.43],[1875,426.18],[1876,427.93],[1877,429.69],[1878,431.46],[1879,433.24],[1880,435.02],[1881,436.81],[1882,438.61],[1883,440.41],[1884,442.23],[1885,444.05],[1886,445.87],[1887,447.71],[1888,449.55],[1889,451.4],[1890,453.26],[1891,455.13],[1892,457],[1893,458.88],[1894,460.77],[1895,462.67],[1896,464.57],[1897,466.48],[1898,468.4],[1899,470.33],[1900,472.27],[1901,474.21],[1902,476.16],[1903,478.12],[1904,480.09],[1905,482.06],[1906,484.05],[1907,486.04],[1908,488.04],[1909,490.05],[1910,492.07],[1911,494.09],[1912,496.13],[1913,498.17],[1914,500.22],[1915,502.28],[1916,504.35],[1917,506.42],[1918,508.51],[1919,510.6],[1920,512.7],[1921,514.81],[1922,516.93],[1923,519.06],[1924,521.19],[1925,523.34],[1926,525.49],[1927,527.66],[1928,529.83],[1929,532.01],[1930,534.2],[1931,536.4],[1932,538.6],[1933,540.82],[1934,543.05],[1935,545.28],[1936,547.53],[1937,549.78],[1938,552.04],[1939,554.31],[1940,556.6],[1941,558.89],[1942,561.19],[1943,563.5],[1944,565.82],[1945,568.15],[1946,570.48],[1947,572.83],[1948,575.19],[1949,577.56],[1950,579.93],[1951,587.25],[1952,594.73],[1953,602.33],[1954,593.9],[1955,596.83],[1956,604.27],[1957,583.63],[1958,578.66],[1959,627.09],[1960,654.58],[1961,676.65],[1962,695.81],[1963,712.76],[1964,727.65],[1965,741.25],[1966,754.17],[1967,765.83],[1968,776.91],[1969,787.69],[1970,798.3],[1971,730.46],[1972,691.52],[1973,682.07],[1974,660.05],[1975,676.79],[1976,671.08],[1977,667.78],[1978,730.72],[1979,801.76],[1980,1084.09],[1981,1165.56],[1982,1181.35],[1983,1274.12],[1984,1301.51],[1985,1391.73],[1986,1408.06],[1987,1481.04],[1988,1500.81],[1989,1554.99],[1990,1587.89],[1993,1524.74],[1994,1600.25],[1995,1700.27],[1996,1788.78],[1997,1902.83],[1998,2018.62],[1999,2168.69],[2000,2291.29],[2001,2406.57],[2002,2505.29],[2003,2600.55],[2004,2692.59],[2005,2831],[2006,3078.92],[2007,3274.76],[2008,3384.72],[2009,3456.14]],"population":[[1800,55716],[1820,55716],[1950,146403],[1951,150651],[1952,155037],[1953,159567],[1954,164262],[1955,169146],[1956,174228],[1957,179516],[1958,185020],[1959,190769],[1960,196768],[1961,203146],[1962,209878],[1963,216919],[1964,224264],[1965,231719],[1966,239230],[1967,246787],[1968,254303],[1969,261602],[1970,268867],[1971,273381],[1972,275392],[1973,277218],[1974,278617],[1975,280259],[1976,282516],[1977,285691],[1978,288855],[1979,292276],[1980,296042],[1981,300190],[1982,304586],[1983,309265],[1984,314237],[1985,319490],[1986,325009],[1987,330779],[1988,336773],[1989,342950],[1990,349264],[1991,355545],[1992,361638],[1993,367520],[1994,373163],[1995,378520],[1996,383584],[1997,388383],[1998,392941],[1999,397270],[2000,401343],[2001,405163],[2002,408760],[2003,412137],[2004,415294],[2005,418224],[2006,420979],[2007,423613],[2008,426113]],"lifeExpectancy":[[1800,33.8],[1935,33.8],[1950,47.32],[1951,47.63],[1952,48.22],[1953,48.79],[1954,49.32],[1955,49.82],[1956,50.29],[1957,50.74],[1958,51.16],[1959,51.57],[1960,51.98],[1961,52.4],[1962,52.83],[1963,53.28],[1964,53.75],[1965,54.23],[1966,54.71],[1967,55.18],[1968,55.63],[1969,56.06],[1970,56.48],[1971,56.88],[1972,57.3],[1973,57.73],[1974,58.18],[1975,58.67],[1976,59.18],[1977,59.73],[1978,60.3],[1979,60.89],[1980,61.47],[1981,62.03],[1982,62.57],[1983,63.08],[1984,63.54],[1985,63.98],[1986,64.38],[1987,64.78],[1988,65.17],[1989,65.55],[1990,65.93],[1991,66.3],[1992,66.65],[1993,66.97],[1994,67.28],[1995,67.57],[1996,67.84],[1997,68.12],[1998,68.4],[1999,68.68],[2000,68.98],[2001,69.28],[2002,69.59],[2003,69.9],[2004,70.21],[2005,70.52],[2006,70.82],[2007,71.11],[2008,71.4],[2009,71.68]]},{"name":"Chad","region":"Sub-Saharan Africa","income":[[1800,400.69],[1820,400.69],[1913,619.09],[1950,1127.84],[1951,1153.46],[1952,1178.67],[1953,1203.41],[1954,1229.37],[1955,1255.59],[1956,1281.99],[1957,1308.5],[1958,1335.84],[1959,1361.48],[1960,1348.77],[1961,1343.29],[1962,1389.82],[1963,1345.06],[1964,1285.51],[1965,1264.43],[1966,1215.21],[1967,1196.81],[1968,1165.85],[1969,1219.07],[1970,1215.75],[1971,1211.69],[1972,1104.1],[1973,1026.42],[1974,1140.6],[1975,1305.72],[1976,1255.78],[1977,1133.98],[1978,1100.92],[1979,855.79],[1980,804.73],[1981,794.8],[1982,797.91],[1983,886.92],[1984,896.32],[1985,1083.31],[1986,1010.52],[1987,952.39],[1988,1066.26],[1989,1097.79],[1990,999.11],[1991,1065.94],[1992,1058.06],[1993,1003.69],[1994,1023.26],[1995,995.98],[1996,995.1],[1997,1004.96],[1998,1048.81],[1999,1039.29],[2000,1017.03],[2001,1084.2],[2002,1156.18],[2003,1287.08],[2004,1669.42],[2005,1749],[2006,1708.94],[2007,1670.3],[2008,1622.41],[2009,1557.83]],"population":[[1800,1432000],[1936,1432000],[1950,2607769],[1951,2644428],[1952,2682462],[1953,2721913],[1954,2762828],[1955,2805256],[1956,2849247],[1957,2894855],[1958,2942133],[1959,2991261],[1960,3042303],[1961,3095331],[1962,3150417],[1963,3207638],[1964,3271357],[1965,3344639],[1966,3419602],[1967,3495967],[1968,3572528],[1969,3650046],[1970,3730240],[1971,3813207],[1972,3899068],[1973,3988497],[1974,4082064],[1975,4179837],[1976,4281867],[1977,4388260],[1978,4498511],[1979,4545410],[1980,4542002],[1981,4646494],[1982,4875118],[1983,5073154],[1984,5125782],[1985,5169374],[1986,5314060],[1987,5498955],[1988,5674660],[1989,5829327],[1990,6022856],[1991,6232340],[1992,6429417],[1993,6655731],[1994,6886696],[1995,7103883],[1996,7329462],[1997,7562011],[1998,7804481],[1999,8058514],[2000,8316481],[2001,8573507],[2002,8835739],[2003,9103618],[2004,9377194],[2005,9657069],[2006,9944201],[2007,10238807],[2008,10541156]],"lifeExpectancy":[[1800,30.9],[1945,30.9],[1950,37.39],[1951,37.56],[1952,37.91],[1953,38.27],[1954,38.62],[1955,38.98],[1956,39.34],[1957,39.7],[1958,40.06],[1959,40.42],[1960,40.79],[1961,41.16],[1962,41.53],[1963,41.9],[1964,42.27],[1965,42.65],[1966,43.03],[1967,43.42],[1968,43.82],[1969,44.21],[1970,44.61],[1971,44.98],[1972,45.35],[1973,45.69],[1974,46.03],[1975,46.36],[1976,46.69],[1977,47.05],[1978,47.43],[1979,47.84],[1980,48.26],[1981,48.7],[1982,49.14],[1983,49.56],[1984,49.96],[1985,50.31],[1986,50.61],[1987,50.85],[1988,51.04],[1989,51.16],[1990,51.21],[1991,51.2],[1992,51.14],[1993,51.03],[1994,50.88],[1995,50.68],[1996,50.45],[1997,50.18],[1998,49.89],[1999,49.59],[2000,49.3],[2001,49.03],[2002,48.81],[2003,48.63],[2004,48.52],[2005,48.48],[2006,48.51],[2007,48.61],[2008,48.76],[2009,48.97]]},{"name":"Comoros","region":"Sub-Saharan Africa","income":[[1800,800.61],[1820,800.61],[1913,973.4],[1950,1052.1],[1951,1090.85],[1952,1102.99],[1953,1122.69],[1954,1162.08],[1955,1174.15],[1956,1193.11],[1957,1211.15],[1958,1218.42],[1959,1260.08],[1960,1337.13],[1961,1320.49],[1962,1406.65],[1963,1666.01],[1964,1750.41],[1965,1714.18],[1966,1847.27],[1967,1876.03],[1968,1827.9],[1969,1807.69],[1970,1894.29],[1971,2167.2],[1972,1937.58],[1973,1669.69],[1974,1980.87],[1975,1509.81],[1976,1298.57],[1977,1172.6],[1978,1177.32],[1979,1170.84],[1980,1208.28],[1981,1247.48],[1982,1267.1],[1983,1283.26],[1984,1291.09],[1985,1296.92],[1986,1296.8],[1987,1315.98],[1988,1337.51],[1989,1303.55],[1990,1286.8],[1991,1183.07],[1992,1246.91],[1993,1247.05],[1994,1146.29],[1995,1209.23],[1996,1158.46],[1997,1173.62],[1998,1148.85],[1999,1137.89],[2000,1090.79],[2001,1083.42],[2002,1075.81],[2003,1070.95],[2004,1083.02],[2005,1063],[2006,1054.06],[2007,1037.46],[2008,1026.03],[2009,1016.42]],"population":[[1800,56346],[1820,56346],[1950,148057],[1951,150937],[1952,153936],[1953,157062],[1954,160318],[1955,163711],[1956,167245],[1957,170928],[1958,174766],[1959,178754],[1960,182899],[1961,187209],[1962,191689],[1963,196348],[1964,201208],[1965,206279],[1966,211571],[1967,217378],[1968,223443],[1969,229732],[1970,236252],[1971,243014],[1972,250027],[1973,257303],[1974,264851],[1975,272685],[1976,280815],[1977,304739],[1978,313970],[1979,323557],[1980,333513],[1981,340765],[1982,348643],[1983,356997],[1984,365813],[1985,375099],[1986,384862],[1987,395114],[1988,405874],[1989,417164],[1990,429010],[1991,441427],[1992,454429],[1993,468010],[1994,482162],[1995,496906],[1996,512197],[1997,527982],[1998,544267],[1999,561063],[2000,578400],[2001,596202],[2002,614382],[2003,632948],[2004,651901],[2005,671247],[2006,690948],[2007,710960],[2008,731281]],"lifeExpectancy":[[1800,32.1],[1945,32.1],[1950,40.1],[1951,40.25],[1952,40.55],[1953,40.87],[1954,41.2],[1955,41.55],[1956,41.91],[1957,42.28],[1958,42.66],[1959,43.05],[1960,43.45],[1961,43.85],[1962,44.24],[1963,44.64],[1964,45.04],[1965,45.44],[1966,45.86],[1967,46.3],[1968,46.75],[1969,47.23],[1970,47.72],[1971,48.21],[1972,48.68],[1973,49.14],[1974,49.58],[1975,50],[1976,50.4],[1977,50.79],[1978,51.18],[1979,51.57],[1980,51.96],[1981,52.35],[1982,52.73],[1983,53.11],[1984,53.49],[1985,53.89],[1986,54.32],[1987,54.78],[1988,55.29],[1989,55.85],[1990,56.43],[1991,57.04],[1992,57.64],[1993,58.24],[1994,58.82],[1995,59.37],[1996,59.9],[1997,60.41],[1998,60.9],[1999,61.38],[2000,61.85],[2001,62.31],[2002,62.76],[2003,63.2],[2004,63.64],[2005,64.08],[2006,64.51],[2007,64.94],[2008,65.36],[2009,65.77]]},{"name":"Congo, Dem. Rep.","region":"Sub-Saharan Africa","income":[[1800,394.03],[1820,394.03],[1913,608.8],[1950,665.38],[1951,729.1],[1952,780.54],[1953,809.04],[1954,841.4],[1955,856.8],[1956,896.38],[1957,905.86],[1958,861.47],[1959,872.68],[1960,873.47],[1961,762.12],[1962,896.31],[1963,915],[1964,872.83],[1965,861.88],[1966,897.08],[1967,861.59],[1968,871.21],[1969,925.06],[1970,897.41],[1971,928.83],[1972,904.9],[1973,955.92],[1974,961.96],[1975,888.5],[1976,814.53],[1977,795.76],[1978,727.85],[1979,703.98],[1980,698.67],[1981,696.07],[1982,673.75],[1983,665.85],[1984,683.46],[1985,665.88],[1986,676.35],[1987,672.77],[1988,655.34],[1989,630.56],[1990,595.59],[1991,527.67],[1992,465.07],[1993,395.61],[1994,373.44],[1995,367.22],[1996,362.19],[1997,343.52],[1998,335.86],[1999,316.71],[2000,292.45],[2001,281.91],[2002,287.38],[2003,299.49],[2004,314.52],[2005,330],[2006,338.29],[2007,348.98],[2008,359.38],[2009,358.8]],"population":[[1800,5163819],[1820,5163819],[1950,13568762],[1951,13831813],[1952,14100005],[1953,14373435],[1954,14657484],[1955,14952568],[1956,15259279],[1957,15577932],[1958,15909008],[1959,16253014],[1960,16610482],[1961,16964231],[1962,17486434],[1963,18027167],[1964,18432651],[1965,18855509],[1966,19343383],[1967,19941073],[1968,20570629],[1969,21178812],[1970,21780955],[1971,22385560],[1972,23007669],[1973,23668471],[1974,24327147],[1975,25027571],[1976,25737520],[1977,26480870],[1978,27314183],[1979,28201693],[1980,29010717],[1981,29806198],[1982,30646495],[1983,31444001],[1984,32337982],[1985,33340593],[1986,34372899],[1987,35481645],[1988,36632259],[1989,37814050],[1990,39064041],[1991,40388906],[1992,41672143],[1993,43055943],[1994,44539132],[1995,46343432],[1996,47265530],[1997,47798986],[1998,48877408],[1999,50400431],[2000,52021832],[2001,53682112],[2002,55379852],[2003,57124974],[2004,58919207],[2005,60764490],[2006,62660551],[2007,64606759],[2008,66604314]],"lifeExpectancy":[[1800,31.6],[1940,31.6],[1950,38.46],[1951,38.63],[1952,38.96],[1953,39.29],[1954,39.6],[1955,39.91],[1956,40.2],[1957,40.49],[1958,40.76],[1959,41.03],[1960,41.28],[1961,41.53],[1962,41.76],[1963,41.99],[1964,42.21],[1965,42.44],[1966,42.69],[1967,42.95],[1968,43.23],[1969,43.52],[1970,43.83],[1971,44.12],[1972,44.39],[1973,44.64],[1974,44.87],[1975,45.09],[1976,45.32],[1977,45.57],[1978,45.86],[1979,46.17],[1980,46.49],[1981,46.8],[1982,47.08],[1983,47.3],[1984,47.46],[1985,47.57],[1986,47.65],[1987,47.71],[1988,47.76],[1989,47.8],[1990,47.79],[1991,47.68],[1992,47.45],[1993,47.12],[1994,46.71],[1995,46.29],[1996,45.96],[1997,45.79],[1998,45.8],[1999,46],[2000,46.34],[2001,46.75],[2002,47.13],[2003,47.4],[2004,47.57],[2005,47.63],[2006,47.63],[2007,47.63],[2008,47.68],[2009,47.81]]},{"name":"Congo, Rep.","region":"Sub-Saharan Africa","income":[[1800,387.38],[1820,387.38],[1913,598.52],[1950,2045.71],[1951,2086.26],[1952,2125.62],[1953,2163.66],[1954,2202.17],[1955,2240.94],[1956,2277.93],[1957,2315.06],[1958,2352.14],[1959,2388.98],[1960,2416.97],[1961,2441.68],[1962,2464.78],[1963,2489.39],[1964,2513.69],[1965,2537.54],[1966,2606.33],[1967,2677.94],[1968,2749.04],[1969,2822.37],[1970,2896.11],[1971,3049.9],[1972,3213.15],[1973,3382.1],[1974,3557.86],[1975,3740.93],[1976,3654.71],[1977,3259.18],[1978,3113.91],[1979,3487.82],[1980,3968.45],[1981,4653.12],[1982,4879.51],[1983,4974.83],[1984,5137.42],[1985,4760.07],[1986,4302.47],[1987,4201.19],[1988,4080.9],[1989,4102.61],[1990,4066.16],[1991,4036.64],[1992,4016.24],[1993,3850.64],[1994,3523.16],[1995,3554.39],[1996,3596.92],[1997,3484.16],[1998,3516.06],[1999,3304.52],[2000,3423.52],[2001,3397.84],[2002,3484.06],[2003,3425.54],[2004,3455.04],[2005,3621],[2006,3738.39],[2007,3575.55],[2008,3668.41],[2009,3834.67]],"population":[[1800,314465],[1820,314465],[1950,826308],[1951,840223],[1952,854885],[1953,870325],[1954,886576],[1955,903672],[1956,921651],[1957,940458],[1958,960128],[1959,980700],[1960,1002214],[1961,1024609],[1962,1047924],[1963,1072198],[1964,1097474],[1965,1123795],[1966,1151207],[1967,1179760],[1968,1209505],[1969,1240372],[1970,1272408],[1971,1305794],[1972,1340458],[1973,1376455],[1974,1414408],[1975,1453638],[1976,1494409],[1977,1536769],[1978,1580775],[1979,1626497],[1980,1674005],[1981,1723397],[1982,1774735],[1983,1828053],[1984,1883386],[1985,1941071],[1986,2001363],[1987,2064095],[1988,2129084],[1989,2196100],[1990,2264842],[1991,2336155],[1992,2409073],[1993,2487553],[1994,2568840],[1995,2648529],[1996,2729757],[1997,2800947],[1998,2878481],[1999,2970784],[2000,3102404],[2001,3238410],[2002,3328795],[2003,3412576],[2004,3502035],[2005,3602269],[2006,3702314],[2007,3800610],[2008,3903318]],"lifeExpectancy":[[1800,32.7],[1945,32.7],[1950,41.21],[1951,41.62],[1952,42.42],[1953,43.21],[1954,43.98],[1955,44.73],[1956,45.47],[1957,46.18],[1958,46.89],[1959,47.57],[1960,48.24],[1961,48.9],[1962,49.54],[1963,50.17],[1964,50.79],[1965,51.41],[1966,52.02],[1967,52.62],[1968,53.22],[1969,53.82],[1970,54.42],[1971,55.01],[1972,55.61],[1973,56.19],[1974,56.76],[1975,57.31],[1976,57.83],[1977,58.34],[1978,58.8],[1979,59.23],[1980,59.6],[1981,59.91],[1982,60.15],[1983,60.33],[1984,60.43],[1985,60.44],[1986,60.37],[1987,60.21],[1988,59.98],[1989,59.66],[1990,59.26],[1991,58.76],[1992,58.16],[1993,57.5],[1994,56.8],[1995,56.09],[1996,55.41],[1997,54.8],[1998,54.28],[1999,53.87],[2000,53.58],[2001,53.39],[2002,53.29],[2003,53.24],[2004,53.24],[2005,53.28],[2006,53.35],[2007,53.46],[2008,53.59],[2009,53.75]]},{"name":"Cote d'Ivoire","region":"Sub-Saharan Africa","income":[[1800,549.19],[1820,549.19],[1913,848.53],[1950,1344.43],[1951,1366.57],[1952,1388.59],[1953,1410.48],[1954,1433.43],[1955,1455.9],[1956,1478.01],[1957,1500.9],[1958,1522.78],[1959,1537.94],[1960,1622.67],[1961,1714.79],[1962,1728.87],[1963,1935.62],[1964,2192.29],[1965,2055.67],[1966,2120.46],[1967,2052.05],[1968,2258.48],[1969,2245],[1970,2367.24],[1971,2364.51],[1972,2378.2],[1973,2453.1],[1974,2421.08],[1975,2324.96],[1976,2501.3],[1977,2517.74],[1978,2661.38],[1979,2608.89],[1980,2704.73],[1981,2695.54],[1982,2602.71],[1983,2411.97],[1984,2250.26],[1985,2279.11],[1986,2267.42],[1987,2156.96],[1988,2049.2],[1989,1972.84],[1990,1760.42],[1991,1692.62],[1992,1648.07],[1993,1598.85],[1994,1577.61],[1995,1640.62],[1996,1724],[1997,1786.27],[1998,1840.24],[1999,1830.03],[2000,1746.31],[2001,1710.01],[2002,1648.8],[2003,1587.23],[2004,1579.42],[2005,1575],[2006,1540.28],[2007,1519.12],[2008,1509.24],[2009,1520.23]],"population":[[1800,1088530],[1820,1088530],[1950,2860288],[1951,2918070],[1952,2977019],[1953,3037159],[1954,3098513],[1955,3164270],[1956,3231423],[1957,3300000],[1958,3373788],[1959,3463050],[1960,3576077],[1961,3700174],[1962,3832408],[1963,3985277],[1964,4148402],[1965,4326838],[1966,4526508],[1967,4744870],[1968,4983741],[1969,5234620],[1970,5503630],[1971,5786465],[1972,6071696],[1973,6351885],[1974,6621723],[1975,6888884],[1976,7170368],[1977,7459574],[1978,7756303],[1979,8061217],[1980,8375546],[1981,8697986],[1982,9025951],[1983,9360268],[1984,9701389],[1985,10049353],[1986,10403065],[1987,10761098],[1988,11122436],[1989,11484678],[1990,11981454],[1991,12461399],[1992,12772596],[1993,13139524],[1994,13582754],[1995,13988434],[1996,14336812],[1997,14625967],[1998,14878476],[1999,15200755],[2000,15563387],[2001,15909606],[2002,16252726],[2003,16595981],[2004,16944598],[2005,17298040],[2006,17654843],[2007,18013409],[2008,18373060]],"lifeExpectancy":[[1800,31.9],[1945,31.9],[1950,36.64],[1951,36.8],[1952,37.13],[1953,37.48],[1954,37.87],[1955,38.29],[1956,38.74],[1957,39.21],[1958,39.7],[1959,40.21],[1960,40.71],[1961,41.21],[1962,41.69],[1963,42.16],[1964,42.64],[1965,43.14],[1966,43.72],[1967,44.38],[1968,45.15],[1969,46.02],[1970,46.99],[1971,48.05],[1972,49.16],[1973,50.27],[1974,51.36],[1975,52.38],[1976,53.28],[1977,54.07],[1978,54.73],[1979,55.26],[1980,55.66],[1981,55.96],[1982,56.2],[1983,56.39],[1984,56.56],[1985,56.72],[1986,56.87],[1987,57.02],[1988,57.14],[1989,57.24],[1990,57.3],[1991,57.31],[1992,57.26],[1993,57.16],[1994,57],[1995,56.79],[1996,56.53],[1997,56.24],[1998,55.94],[1999,55.66],[2000,55.45],[2001,55.32],[2002,55.3],[2003,55.4],[2004,55.61],[2005,55.94],[2006,56.36],[2007,56.84],[2008,57.34],[2009,57.86]]},{"name":"Equatorial Guinea","region":"Sub-Saharan Africa","income":[[1800,379.13],[1820,379.13],[1913,361.54],[1950,354.77],[1951,368.45],[1952,375.64],[1953,385.57],[1954,401.06],[1955,407.34],[1956,418.34],[1957,426.1],[1958,433.52],[1959,451.56],[1960,490.52],[1961,529.99],[1962,582.84],[1963,661.42],[1964,752.29],[1965,844.87],[1966,869.18],[1967,915.6],[1968,935.83],[1969,896.39],[1970,860.36],[1971,779.61],[1972,672.41],[1973,700.14],[1974,741.54],[1975,850.5],[1976,954.17],[1977,958.57],[1978,1033.54],[1979,1012.78],[1980,970.46],[1981,935.92],[1982,927.83],[1983,917.08],[1984,1103.64],[1985,920.91],[1986,936.05],[1987,966.9],[1988,1010.4],[1989,1025.24],[1990,1027.71],[1991,1048.47],[1992,1132.06],[1993,1172.91],[1994,1201.49],[1995,1337.98],[1996,1684.68],[1997,2814.48],[1998,3349.46],[1999,4623.26],[2000,5240.45],[2001,7192.38],[2002,7703.5],[2003,8913.56],[2004,11487.29],[2005,11999],[2006,11807.73],[2007,13934.25],[2008,14988.85],[2009,15342.2]],"population":[[1800,80377],[1820,80377],[1920,112000],[1932,167000],[1942,171000],[1950,211204],[1951,214064],[1952,216964],[1953,219902],[1954,222880],[1955,225899],[1956,229383],[1957,232922],[1958,236514],[1959,240163],[1960,243867],[1961,248028],[1962,249220],[1963,250419],[1964,251623],[1965,252833],[1966,256349],[1967,259864],[1968,263377],[1969,266898],[1970,270435],[1971,273999],[1972,277603],[1973,271301],[1974,249952],[1975,213292],[1976,190808],[1977,192675],[1978,194597],[1979,221299],[1980,256009],[1981,271778],[1982,285483],[1983,299577],[1984,314447],[1985,324741],[1986,332827],[1987,341244],[1988,349968],[1989,359008],[1990,368379],[1991,378008],[1992,387838],[1993,397863],[1994,408095],[1995,418534],[1996,429158],[1997,439971],[1998,450938],[1999,462037],[2000,473216],[2001,484425],[2002,495627],[2003,506800],[2004,517927],[2005,529034],[2006,540109],[2007,551201],[2008,562339]],"lifeExpectancy":[[1800,29.8],[1945,29.8],[1950,33.88],[1951,34.03],[1952,34.33],[1953,34.63],[1954,34.93],[1955,35.23],[1956,35.53],[1957,35.83],[1958,36.13],[1959,36.43],[1960,36.73],[1961,37.03],[1962,37.33],[1963,37.63],[1964,37.93],[1965,38.24],[1966,38.54],[1967,38.84],[1968,39.14],[1969,39.44],[1970,39.74],[1971,40.05],[1972,40.35],[1973,40.65],[1974,40.95],[1975,41.25],[1976,41.55],[1977,41.85],[1978,42.17],[1979,42.48],[1980,42.81],[1981,43.16],[1982,43.52],[1983,43.89],[1984,44.27],[1985,44.67],[1986,45.08],[1987,45.5],[1988,45.92],[1989,46.34],[1990,46.74],[1991,47.13],[1992,47.48],[1993,47.8],[1994,48.09],[1995,48.32],[1996,48.49],[1997,48.61],[1998,48.68],[1999,48.72],[2000,48.74],[2001,48.77],[2002,48.82],[2003,48.92],[2004,49.08],[2005,49.29],[2006,49.57],[2007,49.89],[2008,50.25],[2009,50.64]]},{"name":"Eritrea","region":"Sub-Saharan Africa","income":[[1800,583.95],[1820,583.95],[1913,381.13],[1950,321.62],[1951,325.28],[1952,328.94],[1953,342.07],[1954,336.19],[1955,348.03],[1956,353.14],[1957,344.16],[1958,348.98],[1959,351.76],[1960,362.82],[1961,373.26],[1962,381],[1963,422.94],[1964,434.87],[1965,451.17],[1966,459.13],[1967,468.79],[1968,466.87],[1969,473.94],[1970,490.38],[1971,500.27],[1972,514.32],[1973,519.46],[1974,513.76],[1975,502.68],[1976,503.64],[1977,505.75],[1978,491.88],[1979,517.1],[1980,534.43],[1981,531.04],[1982,524.88],[1983,536.48],[1984,513.94],[1985,472.36],[1986,491.55],[1987,521.13],[1988,512.63],[1989,501.93],[1990,476.62],[1991,526.15],[1992,582.86],[1993,658.71],[1994,794.98],[1995,806.51],[1996,866.1],[1997,913.47],[1998,905.29],[1999,877.61],[2000,741.57],[2001,775.23],[2002,765.35],[2003,713.58],[2004,694.36],[2005,685],[2006,636.32],[2007,624.3],[2008,545.79],[2009,548.37]],"population":[[1800,205010],[1820,205010],[1950,1402510],[1951,1420279],[1952,1438760],[1953,1457971],[1954,1477939],[1955,1498684],[1956,1520231],[1957,1542611],[1958,1565847],[1959,1589868],[1960,1614698],[1961,1640231],[1962,1666618],[1963,1693045],[1964,1718392],[1965,1746439],[1966,1773393],[1967,1820319],[1968,1857075],[1969,2007110],[1970,2160460],[1971,2208336],[1972,2260187],[1973,2340837],[1974,2380509],[1975,2421037],[1976,2469199],[1977,2512642],[1978,2537978],[1979,2556806],[1980,2568741],[1981,2592782],[1982,2637297],[1983,2693884],[1984,2759280],[1985,2789056],[1986,2837875],[1987,2915959],[1988,2978325],[1989,2989759],[1990,2996243],[1991,3310098],[1992,3668440],[1993,3743948],[1994,3815601],[1995,3858978],[1996,3926212],[1997,4058319],[1998,4183431],[1999,4317425],[2000,4356581],[2001,4360461],[2002,4414865],[2003,4470145],[2004,4554408],[2005,4669638],[2006,4786994],[2007,4906585],[2008,5028475]],"lifeExpectancy":[[1800,30.2],[1945,30.2],[1950,35.08],[1951,35.29],[1952,35.72],[1953,36.14],[1954,36.56],[1955,36.99],[1956,37.41],[1957,37.84],[1958,38.26],[1959,38.69],[1960,39.11],[1961,39.53],[1962,39.95],[1963,40.37],[1964,40.78],[1965,41.19],[1966,41.61],[1967,42.04],[1968,42.47],[1969,42.89],[1970,43.3],[1971,43.66],[1972,43.98],[1973,44.23],[1974,44.42],[1975,44.53],[1976,44.54],[1977,44.47],[1978,44.35],[1979,44.19],[1980,44.05],[1981,43.97],[1982,43.99],[1983,44.13],[1984,44.41],[1985,44.82],[1986,45.36],[1987,45.98],[1988,46.65],[1989,47.36],[1990,48.09],[1991,48.87],[1992,49.68],[1993,50.53],[1994,51.4],[1995,52.27],[1996,53.11],[1997,53.9],[1998,54.65],[1999,55.33],[2000,55.94],[2001,56.5],[2002,57],[2003,57.48],[2004,57.93],[2005,58.37],[2006,58.8],[2007,59.21],[2008,59.62],[2009,60.03]]},{"name":"Ethiopia","region":"Sub-Saharan Africa","income":[[1800,619.21],[1820,619.21],[1913,415.14],[1950,354.09],[1951,358.12],[1952,362.15],[1953,376.6],[1954,370.13],[1955,383.17],[1956,388.79],[1957,378.9],[1958,384.21],[1959,387.26],[1960,399.45],[1961,410.94],[1962,419.46],[1963,465.63],[1964,478.77],[1965,496.71],[1966,505.48],[1967,516.12],[1968,514],[1969,521.78],[1970,539.88],[1971,550.77],[1972,566.24],[1973,571.9],[1974,565.62],[1975,553.43],[1976,554.48],[1977,556.81],[1978,541.54],[1979,569.31],[1980,588.38],[1981,584.64],[1982,577.86],[1983,590.64],[1984,565.82],[1985,520.04],[1986,541.17],[1987,573.74],[1988,564.37],[1989,552.6],[1990,524.74],[1991,489.83],[1992,421.35],[1993,462.36],[1994,460.14],[1995,471.41],[1996,512.79],[1997,515.89],[1998,481.46],[1999,496.87],[2000,512.36],[2001,537.42],[2002,530.05],[2003,498.42],[2004,549.6],[2005,591],[2006,642.27],[2007,699.61],[2008,757.88],[2009,812.16]],"population":[[1800,2948990],[1820,2948990],[1950,20174562],[1951,20511408],[1952,20860941],[1953,21223618],[1954,21599912],[1955,21990323],[1956,22395376],[1957,22815614],[1958,23251610],[1959,23702450],[1960,24168672],[1961,24648849],[1962,25145372],[1963,25659679],[1964,26192357],[1965,26740270],[1966,27307798],[1967,27860297],[1968,28451255],[1969,28962280],[1970,29468504],[1971,30099662],[1972,30770372],[1973,31445177],[1974,32199367],[1975,32975868],[1976,33824835],[1977,34617799],[1978,35216317],[1979,35664267],[1980,36036457],[1981,37056244],[1982,38111756],[1983,39204501],[1984,40072430],[1985,40698078],[1986,41662199],[1987,42999530],[1988,44606289],[1989,46396556],[1990,48197268],[1991,50274862],[1992,52088559],[1993,53446251],[1994,54954863],[1995,56628083],[1996,58283759],[1997,59861301],[1998,61436985],[1999,63054968],[2000,64690052],[2001,66308836],[2002,67946797],[2003,69628079],[2004,71336571],[2005,73053286],[2006,74777981],[2007,76511887],[2008,78254090]],"lifeExpectancy":[[1800,29.7],[1945,29.7],[1950,33.3],[1951,33.47],[1952,33.83],[1953,34.25],[1954,34.72],[1955,35.24],[1956,35.81],[1957,36.42],[1958,37.07],[1959,37.74],[1960,38.41],[1961,39.07],[1962,39.7],[1963,40.28],[1964,40.8],[1965,41.25],[1966,41.65],[1967,42.01],[1968,42.33],[1969,42.64],[1970,42.93],[1971,43.21],[1972,43.49],[1973,43.76],[1974,44.01],[1975,44.21],[1976,44.32],[1977,44.33],[1978,44.24],[1979,44.08],[1980,43.9],[1981,43.76],[1982,43.72],[1983,43.82],[1984,44.07],[1985,44.45],[1986,44.93],[1987,45.46],[1988,45.99],[1989,46.49],[1990,46.96],[1991,47.41],[1992,47.84],[1993,48.28],[1994,48.72],[1995,49.17],[1996,49.62],[1997,50.07],[1998,50.52],[1999,50.96],[2000,51.4],[2001,51.85],[2002,52.31],[2003,52.78],[2004,53.27],[2005,53.76],[2006,54.26],[2007,54.75],[2008,55.22],[2009,55.69]]},{"name":"Gabon","region":"Sub-Saharan Africa","income":[[1800,377.54],[1820,377.54],[1913,583.32],[1950,4041.34],[1951,4166.22],[1952,4293.48],[1953,4422.18],[1954,4556.15],[1955,4694.68],[1956,4833.63],[1957,4976.2],[1958,5121.54],[1959,5268.77],[1960,5440.07],[1961,6209.47],[1962,6631.46],[1963,6988.93],[1964,7256.21],[1965,7803.24],[1966,8093.55],[1967,8358.76],[1968,8486.71],[1969,9060.22],[1970,9691.64],[1971,10478.03],[1972,11401.95],[1973,12250.84],[1974,16647.43],[1975,19327.89],[1976,25536.95],[1977,21745.57],[1978,16084.69],[1979,15732.21],[1980,15696.83],[1981,16042.76],[1982,15113.36],[1983,15510.03],[1984,16193.67],[1985,15349.56],[1986,14768.66],[1987,11864.41],[1988,12980.29],[1989,13663.2],[1990,13944.56],[1991,14364.38],[1992,13522.16],[1993,13664.83],[1994,13792.03],[1995,14105.84],[1996,14258.12],[1997,14722.84],[1998,14894.74],[1999,13276.45],[2000,12764.05],[2001,12787.09],[2002,12521.71],[2003,12610.07],[2004,12568.46],[2005,12742],[2006,12577.37],[2007,12920.7],[2008,13075.4],[2009,12704.99]],"population":[[1800,158227],[1820,158227],[1950,415767],[1951,418227],[1952,420702],[1953,423276],[1954,425951],[1955,428772],[1956,431741],[1957,434904],[1958,438310],[1959,442007],[1960,446003],[1961,450485],[1962,455661],[1963,461357],[1964,467592],[1965,474386],[1966,481519],[1967,489004],[1968,496853],[1969,503763],[1970,514597],[1971,525927],[1972,537977],[1973,560622],[1974,597096],[1975,647426],[1976,687695],[1977,706367],[1978,726252],[1979,722642],[1980,713502],[1981,730507],[1982,753874],[1983,778618],[1984,804827],[1985,832590],[1986,858970],[1987,880397],[1988,899193],[1989,918253],[1990,937493],[1991,959814],[1992,985739],[1993,1012516],[1994,1040151],[1995,1068383],[1996,1096999],[1997,1126189],[1998,1156362],[1999,1194780],[2000,1235484],[2001,1268125],[2002,1299304],[2003,1331419],[2004,1363116],[2005,1394307],[2006,1424906],[2007,1454867],[2008,1484149]],"lifeExpectancy":[[1800,30.6],[1945,30.6],[1950,35.97],[1951,36.26],[1952,36.8],[1953,37.29],[1954,37.72],[1955,38.11],[1956,38.44],[1957,38.74],[1958,39.01],[1959,39.28],[1960,39.58],[1961,39.94],[1962,40.39],[1963,40.94],[1964,41.6],[1965,42.36],[1966,43.2],[1967,44.08],[1968,44.96],[1969,45.84],[1970,46.69],[1971,47.5],[1972,48.29],[1973,49.05],[1974,49.8],[1975,50.54],[1976,51.28],[1977,52.04],[1978,52.82],[1979,53.61],[1980,54.43],[1981,55.28],[1982,56.15],[1983,57.02],[1984,57.86],[1985,58.65],[1986,59.36],[1987,59.98],[1988,60.48],[1989,60.86],[1990,61.13],[1991,61.29],[1992,61.37],[1993,61.39],[1994,61.36],[1995,61.27],[1996,61.11],[1997,60.88],[1998,60.57],[1999,60.24],[2000,59.9],[2001,59.61],[2002,59.4],[2003,59.3],[2004,59.32],[2005,59.46],[2006,59.72],[2007,60.07],[2008,60.46],[2009,60.89]]},{"name":"Ghana","region":"Sub-Saharan Africa","income":[[1800,505.14],[1820,505.14],[1913,780.48],[1950,943.1],[1951,952.97],[1952,911.3],[1953,1010.36],[1954,1107.53],[1955,1008.52],[1956,1039.12],[1957,1043.56],[1958,998.03],[1959,1110.59],[1960,1158.85],[1961,1167.03],[1962,1190.04],[1963,1197.51],[1964,1189.01],[1965,1170.79],[1966,1138.51],[1967,1125.7],[1968,1108.41],[1969,1114.11],[1970,1197.15],[1971,1253.21],[1972,1178.22],[1973,1174.72],[1974,1223.12],[1975,1048.26],[1976,990.2],[1977,993.22],[1978,1059.27],[1979,1017.28],[1980,972.84],[1981,960.18],[1982,876.03],[1983,784.53],[1984,807.25],[1985,822.8],[1986,831.21],[1987,847.01],[1988,870.05],[1989,889.39],[1990,893.8],[1991,915.14],[1992,925.06],[1993,942.02],[1994,945.56],[1995,961.42],[1996,984.87],[1997,1005.25],[1998,1030.05],[1999,1052.28],[2000,1067.6],[2001,1088.32],[2002,1111.98],[2003,1143.69],[2004,1181.71],[2005,1225],[2006,1271.24],[2007,1309.88],[2008,1370.14],[2009,1382.95]],"population":[[1800,2016034],[1820,2016034],[1870,1579000],[1913,2043000],[1950,5297454],[1951,5436555],[1952,5581001],[1953,5731008],[1954,5886798],[1955,6048606],[1956,6216679],[1957,6391288],[1958,6572719],[1959,6761280],[1960,6958283],[1961,7153508],[1962,7355248],[1963,7563839],[1964,7781813],[1965,8009602],[1966,8245481],[1967,8490213],[1968,8744302],[1969,9009048],[1970,8788945],[1971,9065500],[1972,9354120],[1973,9649958],[1974,9905330],[1975,10118240],[1976,10333176],[1977,10538093],[1978,10720559],[1979,10878226],[1980,11015630],[1981,11176529],[1982,11400338],[1983,12150541],[1984,12829647],[1985,13224725],[1986,13776193],[1987,14168101],[1988,14568008],[1989,14975941],[1990,15399466],[1991,15837581],[1992,16278738],[1993,16784962],[1994,17274479],[1995,17669087],[1996,18041282],[1997,18418288],[1998,18819453],[1999,19232823],[2000,19657719],[2001,20093021],[2002,20550751],[2003,21019630],[2004,21483085],[2005,21946247],[2006,22409572],[2007,22873338],[2008,23336661]],"lifeExpectancy":[[1800,28],[1921,28],[1925,28],[1950,42.81],[1951,42.99],[1952,43.36],[1953,43.71],[1954,44.04],[1955,44.37],[1956,44.69],[1957,44.99],[1958,45.28],[1959,45.56],[1960,45.83],[1961,46.09],[1962,46.35],[1963,46.6],[1964,46.86],[1965,47.14],[1966,47.43],[1967,47.75],[1968,48.1],[1969,48.48],[1970,48.89],[1971,49.32],[1972,49.77],[1973,50.23],[1974,50.69],[1975,51.14],[1976,51.57],[1977,51.98],[1978,52.36],[1979,52.71],[1980,53.03],[1981,53.33],[1982,53.61],[1983,53.88],[1984,54.17],[1985,54.49],[1986,54.9],[1987,55.39],[1988,55.97],[1989,56.6],[1990,57.24],[1991,57.85],[1992,58.38],[1993,58.77],[1994,59.01],[1995,59.09],[1996,59.02],[1997,58.83],[1998,58.56],[1999,58.25],[2000,57.91],[2001,57.57],[2002,57.24],[2003,56.94],[2004,56.7],[2005,56.54],[2006,56.47],[2007,56.51],[2008,56.62],[2009,56.83]]},{"name":"Guinea","region":"Sub-Saharan Africa","income":[[1800,375.96],[1820,375.96],[1913,448.43],[1950,481],[1951,502.27],[1952,510.2],[1953,520.99],[1954,543.59],[1955,553.34],[1956,565.42],[1957,576.27],[1958,583.77],[1959,606.89],[1960,621.38],[1961,650.64],[1962,686.37],[1963,637.63],[1964,666.64],[1965,699.08],[1966,700.53],[1967,708.76],[1968,716.29],[1969,723.13],[1970,733.71],[1971,741.47],[1972,741.67],[1973,758.7],[1974,795.61],[1975,812.14],[1976,873.48],[1977,874.69],[1978,879.33],[1979,862.64],[1980,873.69],[1981,860.19],[1982,857.25],[1983,848.68],[1984,833.19],[1985,807.66],[1986,801.25],[1987,805.57],[1988,831.91],[1989,843.64],[1990,834.48],[1991,797.48],[1992,794.35],[1993,809.58],[1994,815.22],[1995,825.5],[1996,838.4],[1997,869.45],[1998,897.23],[1999,909.94],[2000,906.62],[2001,934.76],[2002,945.58],[2003,934.37],[2004,937.47],[2005,946],[2006,939.12],[2007,925.58],[2008,940.88],[2009,908.86]],"population":[[1800,983959],[1820,983959],[1950,2585509],[1951,2624584],[1952,2664249],[1953,2704514],[1954,2745388],[1955,2786879],[1956,2830712],[1957,2876726],[1958,2924954],[1959,2975408],[1960,3028117],[1961,3083075],[1962,3140003],[1963,3198659],[1964,3259080],[1965,3321330],[1966,3385447],[1967,3451418],[1968,3519302],[1969,3589194],[1970,3661175],[1971,3735240],[1972,3811387],[1973,3889716],[1974,3970332],[1975,4053377],[1976,4138911],[1977,4227026],[1978,4317827],[1979,4411454],[1980,4508009],[1981,4607654],[1982,4710497],[1983,4816673],[1984,5045067],[1985,5327721],[1986,5505366],[1987,5650262],[1988,5800268],[1989,5955501],[1990,6278696],[1991,6727693],[1992,6990574],[1993,7195158],[1994,7431162],[1995,7682082],[1996,7949756],[1997,8048834],[1998,8174290],[1999,8431352],[2000,8638858],[2001,8713005],[2002,8807818],[2003,9020431],[2004,9234177],[2005,9452670],[2006,9690222],[2007,9947814],[2008,10211437]],"lifeExpectancy":[[1800,29.5],[1945,29.5],[1950,34.62],[1951,34.69],[1952,34.84],[1953,35],[1954,35.17],[1955,35.35],[1956,35.54],[1957,35.75],[1958,35.96],[1959,36.18],[1960,36.42],[1961,36.66],[1962,36.91],[1963,37.17],[1964,37.45],[1965,37.72],[1966,38],[1967,38.28],[1968,38.56],[1969,38.85],[1970,39.16],[1971,39.49],[1972,39.85],[1973,40.26],[1974,40.69],[1975,41.16],[1976,41.64],[1977,42.12],[1978,42.6],[1979,43.08],[1980,43.54],[1981,43.99],[1982,44.43],[1983,44.87],[1984,45.32],[1985,45.78],[1986,46.25],[1987,46.74],[1988,47.24],[1989,47.75],[1990,48.27],[1991,48.79],[1992,49.28],[1993,49.76],[1994,50.23],[1995,50.69],[1996,51.15],[1997,51.64],[1998,52.15],[1999,52.7],[2000,53.27],[2001,53.86],[2002,54.46],[2003,55.05],[2004,55.64],[2005,56.21],[2006,56.76],[2007,57.31],[2008,57.84],[2009,58.35]]},{"name":"Guinea-Bissau","region":"Sub-Saharan Africa","income":[[1800,345],[1820,345],[1913,366.87],[1950,375.95],[1951,390.83],[1952,405.9],[1953,422.18],[1954,495.74],[1955,464.95],[1956,516.5],[1957,537.35],[1958,540.85],[1959,534.3],[1960,550.27],[1961,574.7],[1962,597.24],[1963,608.93],[1964,659.09],[1965,692.24],[1966,723.48],[1967,752.62],[1968,762.76],[1969,786.65],[1970,809.41],[1971,773.81],[1972,820.22],[1973,818.98],[1974,847.35],[1975,859.11],[1976,837.67],[1977,764.73],[1978,850.21],[1979,852.16],[1980,700.4],[1981,808.75],[1982,838.12],[1983,752.58],[1984,765.49],[1985,789.16],[1986,765.22],[1987,736.42],[1988,747.97],[1989,734.08],[1990,740.35],[1991,759.66],[1992,745.54],[1993,737.76],[1994,739.54],[1995,754.03],[1996,772.64],[1997,796.66],[1998,559.2],[1999,590.7],[2000,632.08],[2001,619.45],[2002,575.7],[2003,560.94],[2004,562.08],[2005,569],[2006,568.44],[2007,557.62],[2008,564.6],[2009,568.94]],"population":[[1800,218167],[1820,218167],[1950,573268],[1951,576948],[1952,580653],[1953,584381],[1954,588133],[1955,591909],[1956,596365],[1957,601095],[1958,606044],[1959,611217],[1960,616682],[1961,622070],[1962,627820],[1963,633939],[1964,610284],[1965,603780],[1966,598111],[1967,601287],[1968,611160],[1969,615749],[1970,620020],[1971,623282],[1972,625361],[1973,633266],[1974,640043],[1975,680919],[1976,732707],[1977,745228],[1978,758113],[1979,771376],[1980,789053],[1981,807257],[1982,825987],[1983,845212],[1984,864949],[1985,885234],[1986,906084],[1987,927524],[1988,949625],[1989,972421],[1990,995991],[1991,1020178],[1992,1050938],[1993,1084327],[1994,1116326],[1995,1143057],[1996,1165914],[1997,1193708],[1998,1221772],[1999,1249889],[2000,1278273],[2001,1305832],[2002,1332459],[2003,1359242],[2004,1386228],[2005,1413446],[2006,1442029],[2007,1472041],[2008,1502442]],"lifeExpectancy":[[1800,29.3],[1945,29.3],[1950,31.97],[1951,32.1],[1952,32.37],[1953,32.63],[1954,32.9],[1955,33.16],[1956,33.43],[1957,33.7],[1958,33.97],[1959,34.24],[1960,34.51],[1961,34.78],[1962,35.06],[1963,35.33],[1964,35.6],[1965,35.86],[1966,36.13],[1967,36.4],[1968,36.67],[1969,36.94],[1970,37.2],[1971,37.46],[1972,37.71],[1973,37.95],[1974,38.2],[1975,38.45],[1976,38.73],[1977,39.04],[1978,39.38],[1979,39.76],[1980,40.17],[1981,40.62],[1982,41.08],[1983,41.56],[1984,42.02],[1985,42.46],[1986,42.84],[1987,43.17],[1988,43.43],[1989,43.65],[1990,43.81],[1991,43.96],[1992,44.1],[1993,44.26],[1994,44.45],[1995,44.66],[1996,44.89],[1997,45.14],[1998,45.38],[1999,45.61],[2000,45.84],[2001,46.05],[2002,46.27],[2003,46.48],[2004,46.71],[2005,46.95],[2006,47.22],[2007,47.51],[2008,47.84],[2009,48.2]]},{"name":"Kenya","region":"Sub-Saharan Africa","income":[[1800,512.93],[1820,512.93],[1913,792.51],[1950,832.27],[1951,986.6],[1952,853.54],[1953,809.44],[1954,878.6],[1955,918.37],[1956,941.46],[1957,944.44],[1958,926.84],[1959,921.34],[1960,928.11],[1961,878.15],[1962,896.97],[1963,912.86],[1964,970.14],[1965,950.16],[1966,1038.15],[1967,1056.74],[1968,1096.54],[1969,1126.71],[1970,1170.44],[1971,1203.44],[1972,1222.36],[1973,1240.76],[1974,1255.49],[1975,1204.84],[1976,1206.85],[1977,1267.61],[1978,1328.72],[1979,1325.06],[1980,1344.17],[1981,1321.86],[1982,1348.23],[1983,1305.72],[1984,1279.51],[1985,1286.56],[1986,1330.65],[1987,1361.94],[1988,1396.42],[1989,1413.7],[1990,1429],[1991,1402.96],[1992,1341.92],[1993,1305.89],[1994,1309.87],[1995,1335.67],[1996,1361.07],[1997,1360.49],[1998,1355.29],[1999,1346.86],[2000,1318.49],[2001,1304.01],[2002,1287.51],[2003,1291.42],[2004,1317.47],[2005,1359],[2006,1419.87],[2007,1492.25],[2008,1488.42],[2009,1493.53]],"population":[[1800,2574000],[1921,2574000],[1931,3041000],[1949,5406000],[1950,6121184],[1951,6289336],[1952,6464046],[1953,6646268],[1954,6836360],[1955,7033999],[1956,7240247],[1957,7454779],[1958,7678739],[1959,7912591],[1960,8156827],[1961,8411966],[1962,8678557],[1963,8957178],[1964,9247518],[1965,9549179],[1966,9863639],[1967,10191512],[1968,10532389],[1969,10887934],[1970,11247182],[1971,11633030],[1972,12044785],[1973,12482054],[1974,12944287],[1975,13433414],[1976,13951436],[1977,14500404],[1978,15079690],[1979,15690251],[1980,16331401],[1981,16988530],[1982,17661452],[1983,18349550],[1984,19051861],[1985,19763285],[1986,20479093],[1987,21198082],[1988,21918633],[1989,22638202],[1990,23358413],[1991,24125055],[1992,25020539],[1993,25813694],[1994,26430941],[1995,27060142],[1996,27670930],[1997,28263827],[1998,28826109],[1999,29383563],[2000,29985839],[2001,30652299],[2002,31386842],[2003,32168495],[2004,32982109],[2005,33829590],[2006,34707817],[2007,35610177],[2008,36529155]],"lifeExpectancy":[[1800,25.5],[1922,25.5],[1927,23.92],[1937,26.37],[1945,28.82],[1950,41.57],[1951,41.72],[1952,42.06],[1953,42.44],[1954,42.87],[1955,43.35],[1956,43.87],[1957,44.44],[1958,45.04],[1959,45.67],[1960,46.32],[1961,46.96],[1962,47.6],[1963,48.21],[1964,48.8],[1965,49.36],[1966,49.92],[1967,50.47],[1968,51.02],[1969,51.59],[1970,52.16],[1971,52.74],[1972,53.31],[1973,53.86],[1974,54.41],[1975,54.95],[1976,55.49],[1977,56.04],[1978,56.6],[1979,57.16],[1980,57.69],[1981,58.17],[1982,58.59],[1983,58.92],[1984,59.17],[1985,59.35],[1986,59.5],[1987,59.63],[1988,59.74],[1989,59.83],[1990,59.84],[1991,59.72],[1992,59.43],[1993,58.95],[1994,58.29],[1995,57.47],[1996,56.52],[1997,55.5],[1998,54.51],[1999,53.58],[2000,52.82],[2001,52.28],[2002,51.98],[2003,51.91],[2004,52.08],[2005,52.46],[2006,53],[2007,53.63],[2008,54.3],[2009,54.95]]},{"name":"Lesotho","region":"Sub-Saharan Africa","income":[[1800,364],[1820,364],[1913,303.98],[1950,282.95],[1951,294.6],[1952,298.85],[1953,306.02],[1954,317.54],[1955,322.51],[1956,329.2],[1957,336],[1958,342.58],[1959,346.22],[1960,364.73],[1961,364.1],[1962,411.8],[1963,446.09],[1964,472.32],[1965,472.45],[1966,459.69],[1967,498.64],[1968,485.57],[1969,481.65],[1970,480.98],[1971,426.31],[1972,496.58],[1973,612.03],[1974,634.32],[1975,569.25],[1976,648.41],[1977,745.37],[1978,839.36],[1979,765.89],[1980,800.51],[1981,788.82],[1982,797.26],[1983,710.85],[1984,752.06],[1985,759.02],[1986,755.05],[1987,773.99],[1988,851.83],[1989,922.62],[1990,940.26],[1991,955.97],[1992,977.49],[1993,991.56],[1994,967.11],[1995,1067.93],[1996,1149.19],[1997,1186.15],[1998,1136.96],[1999,1153.3],[2000,1186.64],[2001,1221.48],[2002,1275.18],[2003,1311.24],[2004,1369.81],[2005,1415],[2006,1479.94],[2007,1488.72],[2008,1527.28],[2009,1521.4]],"population":[[1800,276361],[1820,276361],[1950,726182],[1951,737230],[1952,748747],[1953,760747],[1954,773249],[1955,786192],[1956,799548],[1957,813338],[1958,827697],[1959,842730],[1960,858551],[1961,875282],[1962,893143],[1963,912006],[1964,931826],[1965,952459],[1966,973983],[1967,996380],[1968,1019394],[1969,1043044],[1970,1067136],[1971,1091675],[1972,1116779],[1973,1142460],[1974,1168731],[1975,1195487],[1976,1222874],[1977,1251524],[1978,1281271],[1979,1312161],[1980,1344218],[1981,1377430],[1982,1411807],[1983,1447280],[1984,1483833],[1985,1521382],[1986,1559868],[1987,1599200],[1988,1639294],[1989,1680103],[1990,1721563],[1991,1762702],[1992,1803195],[1993,1843375],[1994,1882531],[1995,1919569],[1996,1953349],[1997,1982823],[1998,2007073],[1999,2025481],[2000,2037961],[2001,2044848],[2002,2046772],[2003,2044530],[2004,2039070],[2005,2031348],[2006,2022331],[2007,2012649],[2008,2002749]],"lifeExpectancy":[[1800,32.8],[1945,32.8],[1950,41.01],[1951,41.29],[1952,41.85],[1953,42.43],[1954,43.02],[1955,43.62],[1956,44.23],[1957,44.84],[1958,45.45],[1959,46.04],[1960,46.58],[1961,47.07],[1962,47.48],[1963,47.81],[1964,48.06],[1965,48.24],[1966,48.38],[1967,48.5],[1968,48.64],[1969,48.81],[1970,49.02],[1971,49.29],[1972,49.62],[1973,49.99],[1974,50.41],[1975,50.87],[1976,51.4],[1977,51.96],[1978,52.56],[1979,53.18],[1980,53.79],[1981,54.37],[1982,54.9],[1983,55.39],[1984,55.84],[1985,56.29],[1986,56.79],[1987,57.36],[1988,58.01],[1989,58.68],[1990,59.31],[1991,59.79],[1992,60.05],[1993,60],[1994,59.62],[1995,58.85],[1996,57.67],[1997,56.13],[1998,54.34],[1999,52.41],[2000,50.48],[2001,48.71],[2002,47.2],[2003,46.03],[2004,45.24],[2005,44.84],[2006,44.78],[2007,44.94],[2008,45.22],[2009,45.56]]},{"name":"Liberia","region":"Sub-Saharan Africa","income":[[1800,544.65],[1820,544.65],[1913,550.92],[1950,553.44],[1951,571.85],[1952,575.57],[1953,583.97],[1954,601.88],[1955,606.52],[1956,613.67],[1957,620.97],[1958,622.59],[1959,641.9],[1960,645.17],[1961,643.26],[1962,634.2],[1963,631.84],[1964,645.9],[1965,638.98],[1966,738.93],[1967,713.6],[1968,726.35],[1969,756.52],[1970,782.61],[1971,797.21],[1972,803.01],[1973,759.51],[1974,791],[1975,654.74],[1976,662.88],[1977,640.32],[1978,647.93],[1979,658.5],[1980,609.85],[1981,606.16],[1982,572.2],[1983,551.96],[1984,531.2],[1985,508.55],[1986,507.83],[1987,506.11],[1988,490.92],[1989,482.01],[1990,556.52],[1991,658.71],[1992,636.62],[1993,626.15],[1994,644.95],[1995,662.2],[1996,658.47],[1997,609.17],[1998,551.37],[1999,529.79],[2000,519.49],[2001,515.95],[2002,531.48],[2003,365.83],[2004,375.69],[2005,383],[2006,396.99],[2007,414.61],[2008,476.2],[2009,474.9]],"population":[[1800,313543],[1820,313543],[1950,823885],[1951,843231],[1952,863308],[1953,884145],[1954,905784],[1955,928269],[1956,951644],[1957,975950],[1958,1001227],[1959,1027507],[1960,1054837],[1961,1083250],[1962,1112796],[1963,1143525],[1964,1175491],[1965,1208749],[1966,1243371],[1967,1279406],[1968,1316907],[1969,1355941],[1970,1396565],[1971,1438780],[1972,1482628],[1973,1528162],[1974,1575442],[1975,1616410],[1976,1659105],[1977,1703617],[1978,1750011],[1979,1798417],[1980,1848979],[1981,1901768],[1982,1956875],[1983,2014375],[1984,2074333],[1985,2136793],[1986,2201806],[1987,2269414],[1988,2339630],[1989,2412315],[1990,2116666],[1991,1816959],[1992,1912974],[1993,1989395],[1994,1973706],[1995,1974588],[1996,2024800],[1997,2200725],[1998,2455238],[1999,2597815],[2000,2693780],[2001,2758041],[2002,2814651],[2003,2809784],[2004,2807259],[2005,2900269],[2006,3042004],[2007,3193942],[2008,3332483]],"lifeExpectancy":[[1800,31.1],[1945,31.1],[1950,35.89],[1951,36.12],[1952,36.59],[1953,37.05],[1954,37.51],[1955,37.97],[1956,38.42],[1957,38.88],[1958,39.33],[1959,39.78],[1960,40.22],[1961,40.66],[1962,41.1],[1963,41.53],[1964,41.95],[1965,42.38],[1966,42.79],[1967,43.21],[1968,43.62],[1969,44.03],[1970,44.44],[1971,44.86],[1972,45.29],[1973,45.73],[1974,46.15],[1975,46.55],[1976,46.9],[1977,47.18],[1978,47.39],[1979,47.53],[1980,47.59],[1981,47.57],[1982,47.52],[1983,47.44],[1984,47.37],[1985,47.35],[1986,47.39],[1987,47.53],[1988,47.76],[1989,48.08],[1990,48.5],[1991,49.01],[1992,49.57],[1993,50.16],[1994,50.77],[1995,51.38],[1996,51.99],[1997,52.61],[1998,53.23],[1999,53.84],[2000,54.44],[2001,55.02],[2002,55.57],[2003,56.09],[2004,56.58],[2005,57.04],[2006,57.48],[2007,57.9],[2008,58.31],[2009,58.71]]},{"name":"Madagascar","region":"Sub-Saharan Africa","income":[[1800,434.14],[1820,434.14],[1913,670.78],[1950,1383.73],[1951,1413.63],[1952,1443.01],[1953,1471.77],[1954,1501.17],[1955,1531.05],[1956,1560.03],[1957,1589.2],[1958,1618.5],[1959,1646.63],[1960,1637.51],[1961,1638.93],[1962,1643.39],[1963,1594.74],[1964,1624.24],[1965,1583.08],[1966,1581.86],[1967,1634.05],[1968,1707.7],[1969,1733.68],[1970,1784.13],[1971,1812.57],[1972,1748.56],[1973,1663.95],[1974,1657.87],[1975,1638.76],[1976,1547.31],[1977,1544.23],[1978,1465.12],[1979,1566.08],[1980,1535.57],[1981,1364.72],[1982,1302.88],[1983,1277.05],[1984,1196.06],[1985,1188.84],[1986,1163.5],[1987,1155.44],[1988,1140.36],[1989,1152.55],[1990,1163.04],[1991,1058.68],[1992,1040.68],[1993,1031.86],[1994,1001.87],[1995,989.14],[1996,980.06],[1997,986.3],[1998,994.3],[1999,1010.14],[2000,1027.09],[2001,1056.21],[2002,894.64],[2003,953.05],[2004,973.59],[2005,988],[2006,1009.65],[2007,1044.09],[2008,1088.44],[2009,1006.9]],"population":[[1820,1683000],[1950,4620437],[1951,4690031],[1952,4762912],[1953,4839248],[1954,4919118],[1955,5002657],[1956,5090058],[1957,5181679],[1958,5277482],[1959,5377583],[1960,5481721],[1961,5590111],[1962,5703324],[1963,5821158],[1964,5943744],[1965,6070004],[1966,6200000],[1967,6334556],[1968,6473179],[1969,6615873],[1970,6765644],[1971,6920494],[1972,7082430],[1973,7250455],[1974,7423573],[1975,7603790],[1976,7805271],[1977,8007166],[1978,8216944],[1979,8442496],[1980,8676821],[1981,8919844],[1982,9171477],[1983,9432079],[1984,9701947],[1985,9981292],[1986,10270192],[1987,10568642],[1988,10876604],[1989,11194241],[1990,11522099],[1991,11860473],[1992,12210395],[1993,12573284],[1994,12949727],[1995,13340359],[1996,13745709],[1997,14165114],[1998,14598047],[1999,15045015],[2000,15506472],[2001,15982563],[2002,16473477],[2003,16979744],[2004,17501871],[2005,18040341],[2006,18595469],[2007,19167654],[2008,19757525]],"lifeExpectancy":[[1800,30.5],[1945,30.5],[1950,35.75],[1951,35.98],[1952,36.45],[1953,36.91],[1954,37.36],[1955,37.8],[1956,38.23],[1957,38.64],[1958,39.05],[1959,39.46],[1960,39.85],[1961,40.25],[1962,40.65],[1963,41.05],[1964,41.45],[1965,41.85],[1966,42.25],[1967,42.65],[1968,43.05],[1969,43.45],[1970,43.84],[1971,44.24],[1972,44.63],[1973,45.02],[1974,45.42],[1975,45.83],[1976,46.27],[1977,46.73],[1978,47.2],[1979,47.68],[1980,48.13],[1981,48.51],[1982,48.8],[1983,49],[1984,49.12],[1985,49.21],[1986,49.32],[1987,49.52],[1988,49.84],[1989,50.28],[1990,50.84],[1991,51.48],[1992,52.15],[1993,52.81],[1994,53.43],[1995,54.01],[1996,54.54],[1997,55.05],[1998,55.54],[1999,56.03],[2000,56.51],[2001,56.99],[2002,57.48],[2003,57.96],[2004,58.45],[2005,58.93],[2006,59.42],[2007,59.89],[2008,60.36],[2009,60.81]]},{"name":"Malawi","region":"Sub-Saharan Africa","income":[[1800,360],[1820,360],[1913,354.6],[1950,352.47],[1951,360.94],[1952,369.17],[1953,377.47],[1954,385.81],[1955,384.81],[1956,408.52],[1957,416.37],[1958,422.15],[1959,427.44],[1960,428.7],[1961,439.6],[1962,427.9],[1963,409.48],[1964,390.22],[1965,431.95],[1966,463.44],[1967,495.51],[1968,476.61],[1969,493.75],[1970,488.72],[1971,544.85],[1972,584.62],[1973,616.28],[1974,638.79],[1975,643.6],[1976,649.7],[1977,663.22],[1978,703.63],[1979,715.76],[1980,700.07],[1981,645.55],[1982,632.8],[1983,640.17],[1984,649.03],[1985,678.85],[1986,656.77],[1987,635.52],[1988,610.94],[1989,605.5],[1990,602.72],[1991,630.14],[1992,563.2],[1993,607.6],[1994,555.37],[1995,653.33],[1996,685.08],[1997,692.28],[1998,696.47],[1999,705.88],[2000,713.78],[2001,667.79],[2002,665.42],[2003,674.88],[2004,691.85],[2005,691],[2006,769.2],[2007,763.3],[2008,818.38],[2009,866.35]],"population":[[1800,737000],[1901,737000],[1911,970000],[1921,1202000],[1926,1293000],[1931,1603000],[1945,2050000],[1950,2816600],[1951,2866038],[1952,2917802],[1953,2971986],[1954,3028691],[1955,3088155],[1956,3151911],[1957,3221238],[1958,3294697],[1959,3370054],[1960,3450444],[1961,3532056],[1962,3628608],[1963,3726394],[1964,3816197],[1965,3914095],[1966,4023000],[1967,4147252],[1968,4263813],[1969,4379269],[1970,4489313],[1971,4606268],[1972,4730997],[1973,4864937],[1974,5030764],[1975,5267679],[1976,5473443],[1977,5637246],[1978,5791837],[1979,5955844],[1980,6129035],[1981,6311339],[1982,6502825],[1983,6702443],[1984,6909279],[1985,7123455],[1986,7391617],[1987,7824747],[1988,8349217],[1989,8843826],[1990,9286655],[1991,9655208],[1992,10014249],[1993,10182205],[1994,9992214],[1995,9912344],[1996,10143562],[1997,10419991],[1998,10697625],[1999,10977362],[2000,11258163],[2001,11539920],[2002,11824495],[2003,12113276],[2004,12407373],[2005,12707464],[2006,13013926],[2007,13327079],[2008,13647273]],"lifeExpectancy":[[1800,30.3],[1945,30.3],[1950,35.96],[1951,36.03],[1952,36.17],[1953,36.32],[1954,36.49],[1955,36.68],[1956,36.89],[1957,37.1],[1958,37.33],[1959,37.56],[1960,37.8],[1961,38.02],[1962,38.24],[1963,38.45],[1964,38.65],[1965,38.87],[1966,39.11],[1967,39.4],[1968,39.74],[1969,40.13],[1970,40.56],[1971,41.01],[1972,41.47],[1973,41.92],[1974,42.36],[1975,42.78],[1976,43.19],[1977,43.59],[1978,44],[1979,44.41],[1980,44.81],[1981,45.2],[1982,45.56],[1983,45.91],[1984,46.25],[1985,46.61],[1986,47.01],[1987,47.48],[1988,48.03],[1989,48.63],[1990,49.28],[1991,49.94],[1992,50.57],[1993,51.14],[1994,51.6],[1995,51.92],[1996,52.04],[1997,51.96],[1998,51.73],[1999,51.38],[2000,50.99],[2001,50.66],[2002,50.46],[2003,50.44],[2004,50.64],[2005,51.06],[2006,51.66],[2007,52.37],[2008,53.12],[2009,53.88]]},{"name":"Mali","region":"Sub-Saharan Africa","income":[[1800,427.43],[1820,427.43],[1913,434.93],[1950,437.95],[1951,445.16],[1952,452.34],[1953,459.88],[1954,466.94],[1955,474.73],[1956,482.42],[1957,490.38],[1958,498.21],[1959,506.63],[1960,510.59],[1961,503.57],[1962,496.17],[1963,518.77],[1964,532.17],[1965,528.5],[1966,539.18],[1967,545.01],[1968,553.24],[1969,538.49],[1970,559.07],[1971,565.59],[1972,581.37],[1973,554.3],[1974,528.3],[1975,587.58],[1976,651.72],[1977,686.4],[1978,659.18],[1979,806.19],[1980,700.86],[1981,666.52],[1982,618.01],[1983,634.54],[1984,651.28],[1985,654.54],[1986,683.76],[1987,684.17],[1988,670.5],[1989,724.84],[1990,716.23],[1991,695.72],[1992,739.01],[1993,706.57],[1994,709.85],[1995,743.17],[1996,757.76],[1997,790.26],[1998,809.92],[1999,844.11],[2000,854.73],[2001,935.08],[2002,951.41],[2003,994.71],[2004,993.12],[2005,1027],[2006,1065.32],[2007,1084.97],[2008,1112.71],[2009,1136.17]],"population":[[1800,1403398],[1820,1403398],[1950,3687654],[1951,3762158],[1952,3838168],[1953,3915714],[1954,3994826],[1955,4075537],[1956,4157879],[1957,4241884],[1958,4327586],[1959,4415019],[1960,4504219],[1961,4595790],[1962,4690372],[1963,4788073],[1964,4889008],[1965,4993293],[1966,5101054],[1967,5212416],[1968,5327515],[1969,5446489],[1970,5569486],[1971,5696656],[1972,5828158],[1973,5964156],[1974,6104825],[1975,6250341],[1976,6400896],[1977,6491649],[1978,6578372],[1979,6672872],[1980,6774767],[1981,6883907],[1982,6998256],[1983,7116320],[1984,7238471],[1985,7365165],[1986,7496855],[1987,7634008],[1988,7777570],[1989,7927623],[1990,8083816],[1991,8247171],[1992,8416215],[1993,8591439],[1994,8774902],[1995,8967132],[1996,9172631],[1997,9384984],[1998,9605719],[1999,9834362],[2000,10072267],[2001,10321053],[2002,10580176],[2003,10848146],[2004,11126144],[2005,11415261],[2006,11716829],[2007,12031795],[2008,12360306]],"lifeExpectancy":[[1800,29.6],[1945,29.6],[1950,35.3],[1951,35.34],[1952,35.44],[1953,35.53],[1954,35.63],[1955,35.72],[1956,35.82],[1957,35.92],[1958,36.01],[1959,36.11],[1960,36.21],[1961,36.3],[1962,36.41],[1963,36.51],[1964,36.62],[1965,36.74],[1966,36.86],[1967,37],[1968,37.16],[1969,37.33],[1970,37.51],[1971,37.71],[1972,37.93],[1973,38.16],[1974,38.4],[1975,38.65],[1976,38.91],[1977,39.18],[1978,39.45],[1979,39.74],[1980,40.03],[1981,40.33],[1982,40.64],[1983,40.96],[1984,41.28],[1985,41.6],[1986,41.91],[1987,42.2],[1988,42.48],[1989,42.74],[1990,42.99],[1991,43.22],[1992,43.46],[1993,43.69],[1994,43.93],[1995,44.18],[1996,44.45],[1997,44.73],[1998,45.02],[1999,45.32],[2000,45.64],[2001,45.96],[2002,46.3],[2003,46.64],[2004,47],[2005,47.35],[2006,47.72],[2007,48.09],[2008,48.46],[2009,48.84]]},{"name":"Mauritania","region":"Sub-Saharan Africa","income":[[1800,374.38],[1820,374.38],[1913,578.45],[1950,702.93],[1951,723.07],[1952,743.12],[1953,763.01],[1954,783.4],[1955,804.2],[1956,825.35],[1957,846.12],[1958,866.47],[1959,887.9],[1960,946.38],[1961,1093.56],[1962,1055.9],[1963,978],[1964,1252.62],[1965,1406.61],[1966,1393.99],[1967,1421.15],[1968,1523.62],[1969,1476.67],[1970,1604.04],[1971,1593.13],[1972,1586.85],[1973,1462.95],[1974,1585.2],[1975,1457.61],[1976,1545.63],[1977,1497.49],[1978,1462.29],[1979,1498.6],[1980,1524.95],[1981,1547.7],[1982,1481.15],[1983,1516.61],[1984,1372.51],[1985,1376.16],[1986,1416.14],[1987,1421.6],[1988,1435.1],[1989,1448.61],[1990,1393.46],[1991,1389.87],[1992,1361.37],[1993,1380.38],[1994,1396.88],[1995,1422.19],[1996,1470.89],[1997,1483.14],[1998,1495.14],[1999,1510.81],[2000,1540.84],[2001,1561.91],[2002,1579.02],[2003,1619.47],[2004,1654.89],[2005,1691],[2006,1840.36],[2007,1815.61],[2008,1838.06],[2009,1775.87]],"population":[[1800,382696],[1820,382696],[1950,1005595],[1951,1013753],[1952,1022556],[1953,1032021],[1954,1042164],[1955,1053003],[1956,1064559],[1957,1076852],[1958,1089905],[1959,1103409],[1960,1117376],[1961,1131821],[1962,1146757],[1963,1162199],[1964,1178277],[1965,1195012],[1966,1212426],[1967,1230542],[1968,1249383],[1969,1269000],[1970,1289420],[1971,1310672],[1972,1332786],[1973,1355793],[1974,1379655],[1975,1404403],[1976,1430069],[1977,1456688],[1978,1485467],[1979,1516462],[1980,1549589],[1981,1584814],[1982,1622136],[1983,1661573],[1984,1703154],[1985,1746923],[1986,1792933],[1987,1841240],[1988,1891894],[1989,1937201],[1990,1984449],[1991,2041306],[1992,2119465],[1993,2205240],[1994,2279436],[1995,2341749],[1996,2388865],[1997,2444741],[1998,2515309],[1999,2590516],[2000,2667859],[2001,2747312],[2002,2828858],[2003,2912584],[2004,2998563],[2005,3086859],[2006,3177388],[2007,3270065],[2008,3364940]],"lifeExpectancy":[[1800,32],[1945,32],[1950,41.32],[1951,41.49],[1952,41.83],[1953,42.17],[1954,42.5],[1955,42.84],[1956,43.17],[1957,43.5],[1958,43.83],[1959,44.16],[1960,44.48],[1961,44.8],[1962,45.12],[1963,45.44],[1964,45.75],[1965,46.07],[1966,46.38],[1967,46.68],[1968,46.99],[1969,47.31],[1970,47.65],[1971,48.02],[1972,48.42],[1973,48.86],[1974,49.34],[1975,49.86],[1976,50.41],[1977,50.98],[1978,51.56],[1979,52.13],[1980,52.68],[1981,53.18],[1982,53.64],[1983,54.05],[1984,54.4],[1985,54.7],[1986,54.95],[1987,55.16],[1988,55.34],[1989,55.51],[1990,55.66],[1991,55.8],[1992,55.93],[1993,56.04],[1994,56.15],[1995,56.25],[1996,56.33],[1997,56.4],[1998,56.45],[1999,56.48],[2000,56.5],[2001,56.49],[2002,56.47],[2003,56.44],[2004,56.42],[2005,56.42],[2006,56.47],[2007,56.57],[2008,56.75],[2009,56.99]]},{"name":"Mauritius","region":"Sub-Saharan Africa","income":[[1800,799.61],[1820,799.61],[1913,1235.45],[1950,1937.84],[1951,1977.13],[1952,1967.96],[1953,1969.44],[1954,2013.47],[1955,2013.15],[1956,2018.86],[1957,2034.04],[1958,2031.19],[1959,2089.8],[1960,2161.31],[1961,2583.15],[1962,2529.07],[1963,2824.71],[1964,2555.21],[1965,2570.02],[1966,2419.02],[1967,2475.39],[1968,2262.62],[1969,2339.48],[1970,2292.46],[1971,2371.81],[1972,2575.48],[1973,2864.23],[1974,3129.06],[1975,3089.22],[1976,3542.22],[1977,3710.98],[1978,3785.22],[1979,3847.18],[1980,3398.74],[1981,3541.69],[1982,3688.04],[1983,3664.7],[1984,3799.59],[1985,4026.39],[1986,4386.07],[1987,4783.59],[1988,5062.21],[1989,5233.98],[1990,5547.92],[1991,5841.66],[1992,6058.25],[1993,6398.27],[1994,6617.21],[1995,6783.9],[1996,7068.83],[1997,7425.71],[1998,7804.35],[1999,8149.82],[2000,8290.95],[2001,8801.58],[2002,9021.82],[2003,9564.7],[2004,9931.83],[2005,10155],[2006,10469.25],[2007,10967.13],[2008,11330.3],[2009,11411.53]],"population":[[1850,181000],[1861,320000],[1871,330000],[1881,360000],[1891,371000],[1901,371000],[1911,369000],[1921,376000],[1931,393000],[1944,419000],[1950,481270],[1951,498593],[1952,516556],[1953,536057],[1954,553977],[1955,571669],[1956,591764],[1957,609816],[1958,627660],[1959,645313],[1960,663229],[1961,681284],[1962,701016],[1963,715140],[1964,736182],[1965,755528],[1966,774160],[1967,789309],[1968,804177],[1969,816027],[1970,829511],[1971,841079],[1972,851334],[1973,861239],[1974,873292],[1975,885461],[1976,897811],[1977,913025],[1978,929367],[1979,946640],[1980,963701],[1981,979050],[1982,992040],[1983,1002175],[1984,1012005],[1985,1021710],[1986,1032333],[1987,1042663],[1988,1052336],[1989,1062525],[1990,1073507],[1991,1084777],[1992,1096202],[1993,1107490],[1994,1117988],[1995,1128608],[1996,1139491],[1997,1149818],[1998,1159654],[1999,1169325],[2000,1179368],[2001,1189825],[2002,1200206],[2003,1210447],[2004,1220481],[2005,1230602],[2006,1240827],[2007,1250882],[2008,1260781]],"lifeExpectancy":[[1800,31.2],[1924,31.22],[1934,33.87],[1941,36.17],[1944,33.29],[1947,38.62],[1950,46.86],[1951,48.01],[1952,50.19],[1953,52.13],[1954,53.85],[1955,55.34],[1956,56.6],[1957,57.64],[1958,58.48],[1959,59.13],[1960,59.63],[1961,60],[1962,60.29],[1963,60.53],[1964,60.75],[1965,60.98],[1966,61.21],[1967,61.45],[1968,61.69],[1969,61.94],[1970,62.2],[1971,62.49],[1972,62.81],[1973,63.15],[1974,63.52],[1975,63.91],[1976,64.3],[1977,64.69],[1978,65.07],[1979,65.45],[1980,65.82],[1981,66.19],[1982,66.58],[1983,66.98],[1984,67.39],[1985,67.8],[1986,68.17],[1987,68.51],[1988,68.8],[1989,69.04],[1990,69.24],[1991,69.41],[1992,69.57],[1993,69.74],[1994,69.93],[1995,70.14],[1996,70.36],[1997,70.6],[1998,70.85],[1999,71.09],[2000,71.32],[2001,71.52],[2002,71.7],[2003,71.85],[2004,71.96],[2005,72.04],[2006,72.08],[2007,72.1],[2008,72.1],[2009,72.1]]},{"name":"Mayotte","region":"Sub-Saharan Africa","income":[[2005,9617.82]],"population":[[1800,8219],[1820,8219],[1950,21597],[1951,22099],[1952,22620],[1953,23161],[1954,23723],[1955,24307],[1956,24913],[1957,25543],[1958,26197],[1959,26876],[1960,27579],[1961,28308],[1962,29065],[1963,29849],[1964,30663],[1965,31507],[1966,32383],[1967,33338],[1968,34349],[1969,35403],[1970,36502],[1971,37648],[1972,38842],[1973,40089],[1974,41390],[1975,42747],[1976,44164],[1977,45644],[1978,47189],[1979,49517],[1980,51995],[1981,54629],[1982,57431],[1983,60414],[1984,63594],[1985,66849],[1986,70694],[1987,74877],[1988,79415],[1989,84326],[1990,89629],[1991,95267],[1992,101167],[1993,107320],[1994,113713],[1995,120330],[1996,127146],[1997,134133],[1998,141271],[1999,148538],[2000,155911],[2001,163366],[2002,170879],[2003,178437],[2004,186026],[2005,193633],[2006,201234],[2007,208807],[2008,216334]],"lifeExpectancy":[[1950,51.48],[1951,51.7],[1952,52.13],[1953,52.58],[1954,53.03],[1955,53.5],[1956,53.97],[1957,54.46],[1958,54.95],[1959,55.45],[1960,55.96],[1961,56.47],[1962,57],[1963,57.53],[1964,58.07],[1965,58.64],[1966,59.24],[1967,59.88],[1968,60.56],[1969,61.27],[1970,61.99],[1971,62.71],[1972,63.4],[1973,64.07],[1974,64.69],[1975,65.28],[1976,65.84],[1977,66.4],[1978,66.96],[1979,67.52],[1980,68.07],[1981,68.61],[1982,69.11],[1983,69.58],[1984,70.02],[1985,70.42],[1986,70.81],[1987,71.18],[1988,71.56],[1989,71.94],[1990,72.31],[1991,72.67],[1992,73.01],[1993,73.31],[1994,73.58],[1995,73.82],[1996,74.02],[1997,74.21],[1998,74.38],[1999,74.54],[2000,74.69],[2001,74.84],[2002,74.99],[2003,75.14],[2004,75.28],[2005,75.42],[2006,75.57],[2007,75.71],[2008,75.85],[2009,75.99]]},{"name":"Mozambique","region":"Sub-Saharan Africa","income":[[1800,358],[1820,358],[1913,422.15],[1950,450.75],[1951,459.52],[1952,468.53],[1953,476.86],[1954,479.86],[1955,500.62],[1956,494.02],[1957,495.59],[1958,509.18],[1959,526.05],[1960,527.87],[1961,531.89],[1962,556.69],[1963,525.45],[1964,536.63],[1965,537.25],[1966,542.48],[1967,566.67],[1968,615.9],[1969,673.31],[1970,693.12],[1971,722.14],[1972,724.92],[1973,744.86],[1974,669.69],[1975,558.21],[1976,514.84],[1977,502.32],[1978,491.17],[1979,483.07],[1980,485.37],[1981,483.81],[1982,462.21],[1983,422.85],[1984,406.6],[1985,366.02],[1986,369.16],[1987,389.88],[1988,424.48],[1989,443.13],[1990,443.24],[1991,455.44],[1992,410.9],[1993,430.19],[1994,428.72],[1995,419.87],[1996,435.93],[1997,472.35],[1998,519.32],[1999,545.8],[2000,542.81],[2001,601.17],[2002,633.62],[2003,671.77],[2004,710.42],[2005,743],[2006,774.48],[2007,814.58],[2008,852.43],[2009,888.65]],"population":[[1820,2096000],[1950,6250443],[1951,6345838],[1952,6446316],[1953,6552276],[1954,6663941],[1955,6781616],[1956,6906364],[1957,7038035],[1958,7176661],[1959,7321327],[1960,7472230],[1961,7627642],[1962,7788944],[1963,7957010],[1964,8127242],[1965,8301446],[1966,8486381],[1967,8680909],[1968,8883626],[1969,9092797],[1970,9304375],[1971,9539059],[1972,9809596],[1973,10087915],[1974,10370281],[1975,10432604],[1976,10769649],[1977,11127868],[1978,11466483],[1979,11828029],[1980,12102619],[1981,12363066],[1982,12587223],[1983,12772878],[1984,12923005],[1985,13062589],[1986,13142107],[1987,12891952],[1988,12517962],[1989,12474404],[1990,12655732],[1991,12920197],[1992,13160731],[1993,13664085],[1994,14740072],[1995,15697711],[1996,16192388],[1997,16603334],[1998,17003681],[1999,17392597],[2000,17768457],[2001,18129398],[2002,18473780],[2003,18800908],[2004,19111633],[2005,19406703],[2006,19686505],[2007,19951656],[2008,20203186]],"lifeExpectancy":[[1800,30.28],[1950,30.28],[1951,30.53],[1952,31.04],[1953,31.54],[1954,32.04],[1955,32.55],[1956,33.05],[1957,33.55],[1958,34.05],[1959,34.54],[1960,35.02],[1961,35.48],[1962,35.93],[1963,36.35],[1964,36.76],[1965,37.16],[1966,37.56],[1967,37.96],[1968,38.37],[1969,38.79],[1970,39.23],[1971,39.69],[1972,40.17],[1973,40.66],[1974,41.14],[1975,41.58],[1976,41.98],[1977,42.3],[1978,42.54],[1979,42.71],[1980,42.8],[1981,42.83],[1982,42.81],[1983,42.78],[1984,42.74],[1985,42.74],[1986,42.76],[1987,42.84],[1988,42.96],[1989,43.14],[1990,43.41],[1991,43.77],[1992,44.22],[1993,44.74],[1994,45.31],[1995,45.89],[1996,46.42],[1997,46.88],[1998,47.25],[1999,47.5],[2000,47.65],[2001,47.7],[2002,47.69],[2003,47.67],[2004,47.65],[2005,47.66],[2006,47.71],[2007,47.8],[2008,47.94],[2009,48.13]]},{"name":"Namibia","region":"Sub-Saharan Africa","income":[[1800,350],[1820,350],[1913,1382.86],[1950,2388.81],[1951,2406.47],[1952,2423.78],[1953,2458.45],[1954,2535.28],[1955,2555.54],[1956,2587.28],[1957,2621.45],[1958,2628.16],[1959,2711.34],[1960,2893.49],[1961,2852.45],[1962,3173.22],[1963,3402.72],[1964,3855.43],[1965,4010.17],[1966,4057.53],[1967,3793.69],[1968,3726.62],[1969,3756.41],[1970,3673.78],[1971,3665.84],[1972,3746.08],[1973,3762.12],[1974,3787.96],[1975,3687.59],[1976,3748.13],[1977,3876.49],[1978,4046.23],[1979,4095.71],[1980,4167.1],[1981,4231.42],[1982,4191.1],[1983,3956.89],[1984,3789.58],[1985,3696.11],[1986,3698.87],[1987,3693.73],[1988,3624.19],[1989,3719.25],[1990,3472.4],[1991,3568.87],[1992,3804.54],[1993,3626.94],[1994,3768.68],[1995,3823.11],[1996,3836.63],[1997,3899.52],[1998,3939.06],[1999,3989.97],[2000,4022.88],[2001,4023.14],[2002,4072.32],[2003,4169.68],[2004,4399.55],[2005,4547],[2006,4783.15],[2007,4956.93],[2008,5029.66],[2009,4952.26]],"population":[[1800,229000],[1921,229000],[1946,362000],[1950,463729],[1951,474595],[1952,485831],[1953,497453],[1954,509470],[1955,521903],[1956,534767],[1957,548080],[1958,561854],[1959,576077],[1960,590731],[1961,605831],[1962,621392],[1963,637428],[1964,653950],[1965,670981],[1966,688539],[1967,706640],[1968,725304],[1969,744618],[1970,764683],[1971,792629],[1972,821782],[1973,851258],[1974,882005],[1975,915325],[1976,950488],[1977,977026],[1978,997913],[1979,1027780],[1980,1058021],[1981,1074401],[1982,1099010],[1983,1134107],[1984,1169268],[1985,1203934],[1986,1240171],[1987,1278184],[1988,1332970],[1989,1409105],[1990,1471314],[1991,1513139],[1992,1554253],[1993,1597752],[1994,1642093],[1995,1686700],[1996,1731210],[1997,1774766],[1998,1816763],[1999,1858172],[2000,1905659],[2001,1947326],[2002,1972153],[2003,1993482],[2004,2014026],[2005,2030692],[2006,2044147],[2007,2055080],[2008,2063927]],"lifeExpectancy":[[1800,32.4],[1940,32.4],[1950,40.25],[1951,40.63],[1952,41.38],[1953,42.11],[1954,42.83],[1955,43.54],[1956,44.24],[1957,44.92],[1958,45.59],[1959,46.25],[1960,46.89],[1961,47.51],[1962,48.11],[1963,48.7],[1964,49.27],[1965,49.83],[1966,50.39],[1967,50.93],[1968,51.48],[1969,52.02],[1970,52.56],[1971,53.09],[1972,53.62],[1973,54.15],[1974,54.67],[1975,55.19],[1976,55.72],[1977,56.26],[1978,56.8],[1979,57.34],[1980,57.88],[1981,58.39],[1982,58.87],[1983,59.31],[1984,59.72],[1985,60.11],[1986,60.5],[1987,60.92],[1988,61.35],[1989,61.78],[1990,62.19],[1991,62.56],[1992,62.84],[1993,63.01],[1994,63.03],[1995,62.85],[1996,62.4],[1997,61.7],[1998,60.79],[1999,59.77],[2000,58.78],[2001,58.01],[2002,57.58],[2003,57.55],[2004,57.92],[2005,58.61],[2006,59.49],[2007,60.39],[2008,61.15],[2009,61.72]]},{"name":"Niger","region":"Sub-Saharan Africa","income":[[1800,371.26],[1820,371.26],[1913,573.63],[1950,732.21],[1951,747.18],[1952,761.88],[1953,776.29],[1954,791.06],[1955,806.11],[1956,820.73],[1957,835.52],[1958,850.43],[1959,865.4],[1960,902.91],[1961,921.45],[1962,997.77],[1963,1073.59],[1964,1053.89],[1965,1109.42],[1966,1072.44],[1967,1054.38],[1968,1040.13],[1969,987.35],[1970,995.55],[1971,1028.97],[1972,954.21],[1973,774.24],[1974,822.83],[1975,781.86],[1976,768.89],[1977,808.9],[1978,895.6],[1979,936.37],[1980,957.49],[1981,944.67],[1982,909.72],[1983,870.32],[1984,704.61],[1985,698.53],[1986,711.64],[1987,668.3],[1988,687.39],[1989,670.19],[1990,640.6],[1991,638.96],[1992,581.18],[1993,573.05],[1994,579.26],[1995,577.48],[1996,580.29],[1997,580.31],[1998,623.34],[1999,602.36],[2000,577.19],[2001,600.62],[2002,601.07],[2003,610.12],[2004,587.8],[2005,613],[2006,629.09],[2007,631.21],[2008,669.12],[2009,643.39]],"population":[[1800,1244861],[1820,1244861],[1950,3271073],[1951,3324164],[1952,3379468],[1953,3437066],[1954,3497045],[1955,3559494],[1956,3624507],[1957,3692184],[1958,3762630],[1959,3835954],[1960,3912663],[1961,3992502],[1962,4076008],[1963,4162926],[1964,4252122],[1965,4343664],[1966,4437620],[1967,4534062],[1968,4633063],[1969,4735173],[1970,4840501],[1971,4948667],[1972,5060262],[1973,5175408],[1974,5294763],[1975,5419038],[1976,5547894],[1977,5682086],[1978,5821985],[1979,5967481],[1980,6118518],[1981,6275098],[1982,6437188],[1983,6604789],[1984,6777992],[1985,6956968],[1986,7141829],[1987,7332638],[1988,7529666],[1989,7733615],[1990,7945137],[1991,8164668],[1992,8392818],[1993,8631131],[1994,8880037],[1995,9139044],[1996,9404073],[1997,9666252],[1998,9935490],[1999,10220540],[2000,10516111],[2001,10823004],[2002,11140655],[2003,11469579],[2004,11810183],[2005,12162856],[2006,12525094],[2007,12894865],[2008,13272679]],"lifeExpectancy":[[1800,30.8],[1945,30.8],[1950,37.1],[1951,37.12],[1952,37.16],[1953,37.21],[1954,37.26],[1955,37.3],[1956,37.35],[1957,37.4],[1958,37.44],[1959,37.49],[1960,37.54],[1961,37.59],[1962,37.64],[1963,37.68],[1964,37.74],[1965,37.79],[1966,37.85],[1967,37.91],[1968,37.98],[1969,38.05],[1970,38.14],[1971,38.23],[1972,38.33],[1973,38.44],[1974,38.56],[1975,38.68],[1976,38.82],[1977,38.96],[1978,39.1],[1979,39.26],[1980,39.42],[1981,39.58],[1982,39.76],[1983,39.94],[1984,40.13],[1985,40.34],[1986,40.56],[1987,40.79],[1988,41.05],[1989,41.32],[1990,41.62],[1991,41.95],[1992,42.29],[1993,42.67],[1994,43.08],[1995,43.52],[1996,44.01],[1997,44.55],[1998,45.14],[1999,45.76],[2000,46.41],[2001,47.08],[2002,47.75],[2003,48.41],[2004,49.05],[2005,49.67],[2006,50.26],[2007,50.84],[2008,51.4],[2009,51.95]]},{"name":"Nigeria","region":"Sub-Saharan Africa","income":[[1800,576.38],[1820,576.38],[1913,890.54],[1950,974.02],[1951,1026.05],[1952,1077.28],[1953,1080.04],[1954,1132.34],[1955,1134.59],[1956,1082.52],[1957,1100.59],[1958,1062.67],[1959,1083.06],[1960,1104.93],[1961,1115.22],[1962,1150.93],[1963,1228.98],[1964,1251.08],[1965,1303.64],[1966,1231.2],[1967,1014.51],[1968,978.68],[1969,1210.33],[1970,1542.25],[1971,1679.52],[1972,1698.39],[1973,1796.08],[1974,1947.97],[1975,1833.21],[1976,1971.99],[1977,1981.95],[1978,1807.02],[1979,1870.34],[1980,1843.34],[1981,1641.37],[1982,1576.97],[1983,1448.42],[1984,1358.55],[1985,1439.69],[1986,1434.08],[1987,1385.03],[1988,1481.38],[1989,1534.61],[1990,1571.11],[1991,1621.23],[1992,1619.85],[1993,1612.47],[1994,1561.22],[1995,1561.31],[1996,1619.42],[1997,1624.94],[1998,1613.59],[1999,1590.3],[2000,1619.12],[2001,1629.84],[2002,1615.29],[2003,1746.05],[2004,1807.34],[2005,1892],[2006,1955.68],[2007,2036.03],[2008,2100.11],[2009,2158.98]],"population":[[1800,12100855],[1820,12100855],[1921,18631000],[1931,19158000],[1950,31796939],[1951,32448689],[1952,33119096],[1953,33808763],[1954,34626706],[1955,35458978],[1956,36306207],[1957,37173340],[1958,38062768],[1959,38976103],[1960,39914593],[1961,40879339],[1962,41871351],[1963,42891491],[1964,43940734],[1965,45020052],[1966,46134375],[1967,47287752],[1968,48481074],[1969,49719289],[1970,51027516],[1971,52370604],[1972,53740085],[1973,55179709],[1974,56775644],[1975,58522112],[1976,60324738],[1977,62209173],[1978,64203864],[1979,66319068],[1980,68550274],[1981,70815282],[1982,73039376],[1983,74154971],[1984,75526667],[1985,77573154],[1986,79345497],[1987,81551520],[1988,83815330],[1989,86135468],[1990,88510354],[1991,90920655],[1992,93364244],[1993,95855030],[1994,98388477],[1995,100960105],[1996,103567064],[1997,106207839],[1998,108880275],[1999,111580397],[2000,114306700],[2001,117074880],[2002,119901274],[2003,122790463],[2004,125744458],[2005,128765768],[2006,131859731],[2007,135031164],[2008,138283240]],"lifeExpectancy":[[1800,30.4],[1945,30.4],[1950,35.59],[1951,35.7],[1952,35.92],[1953,36.14],[1954,36.38],[1955,36.62],[1956,36.86],[1957,37.11],[1958,37.37],[1959,37.63],[1960,37.89],[1961,38.14],[1962,38.39],[1963,38.63],[1964,38.87],[1965,39.1],[1966,39.33],[1967,39.56],[1968,39.8],[1969,40.07],[1970,40.37],[1971,40.74],[1972,41.17],[1973,41.67],[1974,42.22],[1975,42.78],[1976,43.32],[1977,43.81],[1978,44.22],[1979,44.54],[1980,44.76],[1981,44.88],[1982,44.93],[1983,44.95],[1984,44.93],[1985,44.89],[1986,44.83],[1987,44.76],[1988,44.69],[1989,44.61],[1990,44.55],[1991,44.51],[1992,44.5],[1993,44.53],[1994,44.59],[1995,44.7],[1996,44.86],[1997,45.07],[1998,45.32],[1999,45.6],[2000,45.9],[2001,46.2],[2002,46.5],[2003,46.77],[2004,47.03],[2005,47.27],[2006,47.49],[2007,47.71],[2008,47.93],[2009,48.17]]},{"name":"Reunion","region":"Sub-Saharan Africa","income":[[1800,692.33],[1820,692.33],[1913,1069.7],[1950,2637.69],[1951,2710.19],[1952,2718.89],[1953,2740.7],[1954,2801.73],[1955,2772.53],[1956,2781.87],[1957,2769.45],[1958,2764.12],[1959,2840.76],[1960,2969.28],[1961,3033.87],[1962,3173.72],[1963,3307.58],[1964,3469.5],[1965,3717.11],[1966,3845.99],[1967,4021.18],[1968,4202.49],[1969,4496.76],[1970,4591.19],[1971,4605.39],[1972,5047.66],[1973,5004.19],[1974,5231.8],[1975,5066.54],[1976,4457.05],[1977,4319.8],[1978,4614.38],[1979,4793.06],[1980,4887.45],[1981,4956.25],[1982,5267.22],[1983,5467.59],[1984,5428.2],[1985,5396.09],[1986,5363.43],[1987,5303.38],[1988,5508.86],[1989,5560.26],[1990,5980.27],[1991,6225.76],[1992,6101.26],[1993,5980.36],[1994,5863.97],[1995,5752.28],[1996,5939.19],[1997,6071.94],[1998,6037.73],[1999,6058.56],[2000,6084.03],[2001,6112.28],[2002,6316.17],[2003,6529.84],[2004,6796.21],[2005,7077.24],[2006,7375.61],[2007,7670.12]],"population":[[1800,92744],[1820,92744],[1950,243700],[1951,250700],[1952,257700],[1953,265500],[1954,274400],[1955,286100],[1956,296000],[1957,308700],[1958,317900],[1959,327200],[1960,337500],[1961,347900],[1962,358900],[1963,371000],[1964,383700],[1965,392900],[1966,403300],[1967,414024],[1968,425070],[1969,435564],[1970,444806],[1971,453345],[1972,461633],[1973,469368],[1974,475364],[1975,481100],[1976,486749],[1977,492095],[1978,497039],[1979,501979],[1980,507015],[1981,511650],[1982,517810],[1983,523170],[1984,532769],[1985,541776],[1986,551188],[1987,562035],[1988,573509],[1989,585202],[1990,597308],[1991,609686],[1992,622191],[1993,634769],[1994,647368],[1995,659938],[1996,672433],[1997,684810],[1998,697035],[1999,709083],[2000,720934],[2001,732570],[2002,743981],[2003,755171],[2004,766153],[2005,776948],[2006,787584],[2007,798094],[2008,808506]],"lifeExpectancy":[[1950,51.83],[1951,52.05],[1952,52.49],[1953,52.94],[1954,53.4],[1955,53.87],[1956,54.34],[1957,54.83],[1958,55.32],[1959,55.82],[1960,56.33],[1961,56.84],[1962,57.36],[1963,57.89],[1964,58.43],[1965,59],[1966,59.61],[1967,60.26],[1968,60.94],[1969,61.66],[1970,62.4],[1971,63.13],[1972,63.83],[1973,64.5],[1974,65.13],[1975,65.72],[1976,66.29],[1977,66.84],[1978,67.4],[1979,67.96],[1980,68.51],[1981,69.06],[1982,69.57],[1983,70.06],[1984,70.51],[1985,70.94],[1986,71.35],[1987,71.75],[1988,72.14],[1989,72.53],[1990,72.9],[1991,73.26],[1992,73.58],[1993,73.86],[1994,74.11],[1995,74.33],[1996,74.53],[1997,74.71],[1998,74.89],[1999,75.08],[2000,75.27],[2001,75.46],[2002,75.64],[2003,75.81],[2004,75.97],[2005,76.12],[2006,76.26],[2007,76.39],[2008,76.52],[2009,76.64]]},{"name":"Rwanda","region":"Sub-Saharan Africa","income":[[1800,369],[1820,369],[1913,438.93],[1950,470.31],[1951,487.82],[1952,493.32],[1953,502.1],[1954,519.56],[1955,524.69],[1956,532.76],[1957,540.29],[1958,542.88],[1959,560.7],[1960,564.22],[1961,537.5],[1962,597.47],[1963,525.43],[1964,451.85],[1965,471.62],[1966,490.59],[1967,510.96],[1968,531.62],[1969,572.58],[1970,616.38],[1971,605.84],[1972,590.58],[1973,591.25],[1974,602.09],[1975,692.82],[1976,658.96],[1977,670.08],[1978,711.13],[1979,753.51],[1980,818.71],[1981,843.68],[1982,881.57],[1983,902.56],[1984,840.84],[1985,856],[1986,879.87],[1987,847.99],[1988,793.55],[1989,786.33],[1990,760.74],[1991,708.92],[1992,737.07],[1993,660.82],[1994,382.44],[1995,581.39],[1996,622.92],[1997,589.94],[1998,643.74],[1999,677.54],[2000,704.04],[2001,734.98],[2002,785.65],[2003,774.07],[2004,785.77],[2005,813],[2006,866.95],[2007,895.97],[2008,975.75],[2009,995.27]],"population":[[1800,928368],[1820,928368],[1950,2439435],[1951,2485919],[1952,2534927],[1953,2586573],[1954,2640978],[1955,2698272],[1956,2758591],[1957,2822082],[1958,2888902],[1959,2958761],[1960,3031804],[1961,3045908],[1962,3051242],[1963,3129004],[1964,3183993],[1965,3264640],[1966,3358202],[1967,3451079],[1968,3547932],[1969,3656796],[1970,3769171],[1971,3880225],[1972,3992121],[1973,4109838],[1974,4226380],[1975,4356863],[1976,4502352],[1977,4657072],[1978,4818992],[1979,4975833],[1980,5138689],[1981,5310271],[1982,5507565],[1983,5701104],[1984,5860320],[1985,6009833],[1986,6166230],[1987,6349365],[1988,6552179],[1989,6745103],[1990,6923738],[1991,7110348],[1992,7290203],[1993,7456502],[1994,6417511],[1995,5706501],[1996,6002451],[1997,7212583],[1998,7197680],[1999,7358932],[2000,7507056],[2001,7673062],[2002,7852401],[2003,8042082],[2004,8238673],[2005,8440820],[2006,8648248],[2007,8860588],[2008,9077425]],"lifeExpectancy":[[1800,31.8],[1930,31.8],[1950,39.41],[1951,39.56],[1952,39.85],[1953,40.15],[1954,40.45],[1955,40.75],[1956,41.06],[1957,41.36],[1958,41.67],[1959,41.98],[1960,42.28],[1961,42.58],[1962,42.87],[1963,43.14],[1964,43.4],[1965,43.63],[1966,43.83],[1967,44.01],[1968,44.17],[1969,44.3],[1970,44.4],[1971,44.49],[1972,44.55],[1973,44.61],[1974,44.67],[1975,44.75],[1976,44.89],[1977,45.08],[1978,45.31],[1979,45.58],[1980,45.88],[1981,46.26],[1982,46.67],[1983,47],[1984,47.15],[1985,47.38],[1986,47.61],[1987,47.84],[1988,48.07],[1989,48.3],[1990,48.53],[1991,48.76],[1992,48.99],[1993,26.39],[1994,27.09],[1997,35.33],[1998,38.41],[1999,41.04],[2000,43.1],[2001,44.6],[2002,45.77],[2003,46.77],[2004,47.65],[2005,48.42],[2006,49.11],[2007,49.71],[2008,50.23],[2009,50.69]]},{"name":"Sao Tome and Principe","region":"Sub-Saharan Africa","income":[[1800,674.7],[1820,674.7],[1913,818.38],[1950,883.72],[1951,880.98],[1952,879.58],[1953,879.74],[1954,915.56],[1955,822.77],[1956,868.21],[1957,860.74],[1958,943.06],[1959,844.46],[1960,934.47],[1961,1004.73],[1962,1071.55],[1963,1136.31],[1964,1197.78],[1965,1254.59],[1966,1327.9],[1967,1384.84],[1968,1440.24],[1969,1496.12],[1970,1550.8],[1971,1597.29],[1972,1532.99],[1973,1459.78],[1974,1460.35],[1975,1531.24],[1976,1612.48],[1977,1737.56],[1978,1796.06],[1979,1947.86],[1980,2164.3],[1981,1530.25],[1982,1890.22],[1983,1687.83],[1984,1513.8],[1985,1601.21],[1986,1583.52],[1987,1516.53],[1988,1508.15],[1989,1498.63],[1990,1497],[1991,1458.63],[1992,1428.78],[1993,1406.6],[1994,1399.62],[1995,1382.99],[1996,1365.18],[1997,1339.08],[1998,1327.1],[1999,1321.09],[2000,1320.58],[2001,1331.58],[2002,1353.09],[2003,1396.44],[2004,1435.8],[2005,1460],[2006,1532.32],[2007,1598.38],[2008,1664.3],[2009,1703.43]],"population":[[1800,22731],[1820,22731],[1950,59730],[1951,59916],[1952,60011],[1953,60000],[1954,60006],[1955,60227],[1956,60797],[1957,61325],[1958,61683],[1959,62507],[1960,63403],[1961,64330],[1962,65345],[1963,66361],[1964,67452],[1965,68691],[1966,69766],[1967,70787],[1968,71804],[1969,72722],[1970,73631],[1971,74860],[1972,76595],[1973,78222],[1974,79667],[1975,81607],[1976,84176],[1977,86796],[1978,89367],[1979,91804],[1980,94071],[1981,96443],[1982,98593],[1983,100842],[1984,103184],[1985,105624],[1986,108165],[1987,110812],[1988,113570],[1989,116448],[1990,119453],[1991,122596],[1992,125911],[1993,129428],[1994,133152],[1995,137090],[1996,141246],[1997,145608],[1998,150169],[1999,154929],[2000,159883],[2001,165034],[2002,170372],[2003,175883],[2004,181565],[2005,187410],[2006,193413],[2007,199579],[2008,205901]],"lifeExpectancy":[[1950,45.62],[1951,45.82],[1952,46.23],[1953,46.67],[1954,47.14],[1955,47.63],[1956,48.15],[1957,48.69],[1958,49.25],[1959,49.83],[1960,50.42],[1961,51],[1962,51.59],[1963,52.15],[1964,52.7],[1965,53.23],[1966,53.72],[1967,54.19],[1968,54.64],[1969,55.07],[1970,55.49],[1971,55.9],[1972,56.31],[1973,56.72],[1974,57.13],[1975,57.54],[1976,57.95],[1977,58.35],[1978,58.75],[1979,59.14],[1980,59.51],[1981,59.86],[1982,60.2],[1983,60.51],[1984,60.82],[1985,61.1],[1986,61.37],[1987,61.63],[1988,61.87],[1989,62.09],[1990,62.3],[1991,62.48],[1992,62.64],[1993,62.78],[1994,62.91],[1995,63.02],[1996,63.14],[1997,63.27],[1998,63.42],[1999,63.59],[2000,63.78],[2001,63.99],[2002,64.21],[2003,64.45],[2004,64.69],[2005,64.92],[2006,65.16],[2007,65.4],[2008,65.63],[2009,65.86]]},{"name":"Senegal","region":"Sub-Saharan Africa","income":[[1800,420.73],[1820,420.73],[1913,650.06],[1950,1401],[1951,1426.07],[1952,1450.36],[1953,1473.8],[1954,1497.64],[1955,1521.72],[1956,1544.67],[1957,1567.65],[1958,1590.37],[1959,1611.7],[1960,1607.71],[1961,1641.12],[1962,1654.99],[1963,1677],[1964,1668.63],[1965,1681.15],[1966,1678.35],[1967,1612.4],[1968,1668.22],[1969,1515.4],[1970,1597.18],[1971,1547.21],[1972,1597.71],[1973,1463.61],[1974,1479.55],[1975,1553.67],[1976,1655.33],[1977,1561.77],[1978,1454.39],[1979,1508.72],[1980,1414.11],[1981,1360.07],[1982,1518.48],[1983,1509.42],[1984,1395.71],[1985,1404.61],[1986,1427.99],[1987,1441.72],[1988,1470.26],[1989,1402.53],[1990,1423.27],[1991,1376.72],[1992,1367.9],[1993,1301.36],[1994,1302.8],[1995,1333.03],[1996,1362.47],[1997,1392.37],[1998,1432.95],[1999,1466.61],[2000,1511.49],[2001,1542.03],[2002,1519.64],[2003,1579.91],[2004,1630.75],[2005,1676],[2006,1676.66],[2007,1715.54],[2008,1714.35],[2009,1700.05]],"population":[[1800,1009886],[1820,1009886],[1950,2653637],[1951,2703457],[1952,2755589],[1953,2810131],[1954,2867186],[1955,2926863],[1956,2989276],[1957,3054547],[1958,3123116],[1959,3194821],[1960,3269808],[1961,3348228],[1962,3430243],[1963,3516025],[1964,3636138],[1965,3743967],[1966,3856528],[1967,3965841],[1968,4073826],[1969,4192724],[1970,4317891],[1971,4450142],[1972,4588696],[1973,4727163],[1974,4872244],[1975,4989168],[1976,5100499],[1977,5260855],[1978,5426864],[1979,5598599],[1980,5776012],[1981,5959049],[1982,6147783],[1983,6342309],[1984,6542073],[1985,6746778],[1986,6956526],[1987,7171347],[1988,7391190],[1989,7615614],[1990,7844199],[1991,8076976],[1992,8307920],[1993,8540599],[1994,8778563],[1995,9025562],[1996,9280615],[1997,9535314],[1998,9794164],[1999,10057259],[2000,10324150],[2001,10595275],[2002,10870037],[2003,11147063],[2004,11426026],[2005,11706498],[2006,11987121],[2007,12267493],[2008,12548243]],"lifeExpectancy":[[1800,25.2],[1922,25.2],[1927,23.9],[1937,26.4],[1945,28.8],[1950,37.87],[1951,38.03],[1952,38.33],[1953,38.62],[1954,38.89],[1955,39.16],[1956,39.41],[1957,39.65],[1958,39.88],[1959,40.09],[1960,40.3],[1961,40.5],[1962,40.7],[1963,40.89],[1964,41.09],[1965,41.29],[1966,41.52],[1967,41.75],[1968,42.01],[1969,42.3],[1970,42.61],[1971,42.96],[1972,43.35],[1973,43.76],[1974,44.21],[1975,44.69],[1976,45.2],[1977,45.73],[1978,46.27],[1979,46.83],[1980,47.39],[1981,47.94],[1982,48.49],[1983,49.04],[1984,49.56],[1985,50.06],[1986,50.52],[1987,50.95],[1988,51.34],[1989,51.7],[1990,52.02],[1991,52.31],[1992,52.56],[1993,52.79],[1994,52.99],[1995,53.19],[1996,53.37],[1997,53.54],[1998,53.72],[1999,53.89],[2000,54.07],[2001,54.24],[2002,54.41],[2003,54.57],[2004,54.74],[2005,54.92],[2006,55.12],[2007,55.35],[2008,55.62],[2009,55.91]]},{"name":"Sierra Leone","region":"Sub-Saharan Africa","income":[[1800,508.4],[1820,508.4],[1913,785.51],[1950,828.88],[1951,864.62],[1952,879.79],[1953,901.45],[1954,939.54],[1955,959.27],[1956,981.97],[1957,1004.48],[1958,1018.62],[1959,1062.02],[1960,1080.7],[1961,1084.2],[1962,1116.64],[1963,1118.69],[1964,1114.89],[1965,1176.51],[1966,1232.61],[1967,1206.04],[1968,1304.02],[1969,1400.45],[1970,1425.83],[1971,1390.7],[1972,1353.76],[1973,1373.08],[1974,1405.55],[1975,1421.79],[1976,1353.94],[1977,1348.29],[1978,1326.87],[1979,1375.89],[1980,1412.69],[1981,1470.35],[1982,1465.01],[1983,1414.02],[1984,1402.52],[1985,1333.95],[1986,1258.36],[1987,1294.45],[1988,1298.33],[1989,1296.02],[1990,1297.16],[1991,1162.26],[1992,1068.7],[1993,1081.64],[1994,1094.22],[1995,969],[1996,719.36],[1997,574.65],[1998,558.42],[1999,510.42],[2000,517.67],[2001,578.72],[2002,699.49],[2003,723.63],[2004,753.56],[2005,790],[2006,826.04],[2007,856.97],[2008,881.48],[2009,893.6]],"population":[[1800,794264],[1820,794264],[1950,2087055],[1951,2114827],[1952,2143249],[1953,2172336],[1954,2202105],[1955,2232573],[1956,2263758],[1957,2295678],[1958,2328351],[1959,2361885],[1960,2396304],[1961,2431632],[1962,2467895],[1963,2505118],[1964,2543140],[1965,2581979],[1966,2621656],[1967,2662190],[1968,2703603],[1969,2745967],[1970,2789306],[1971,2833646],[1972,2879013],[1973,2925433],[1974,2973542],[1975,3027190],[1976,3083053],[1977,3140897],[1978,3200714],[1979,3262699],[1980,3327118],[1981,3394288],[1982,3464522],[1983,3538074],[1984,3615186],[1985,3695969],[1986,3780514],[1987,3868905],[1988,3961276],[1989,4057767],[1990,4220883],[1991,4333951],[1992,4260884],[1993,4214121],[1994,4311456],[1995,4381750],[1996,4438506],[1997,4578212],[1998,4672778],[1999,4698964],[2000,4808817],[2001,5080682],[2002,5359092],[2003,5564299],[2004,5732171],[2005,5867426],[2006,6005250],[2007,6144562],[2008,6286617]],"lifeExpectancy":[[1800,25.1],[1926,25.1],[1931,24.5],[1945,24.5],[1950,31.71],[1951,31.8],[1952,31.98],[1953,32.15],[1954,32.32],[1955,32.49],[1956,32.66],[1957,32.83],[1958,32.99],[1959,33.16],[1960,33.34],[1961,33.52],[1962,33.71],[1963,33.91],[1964,34.14],[1965,34.38],[1966,34.65],[1967,34.93],[1968,35.24],[1969,35.58],[1970,35.97],[1971,36.43],[1972,36.96],[1973,37.56],[1974,38.22],[1975,38.9],[1976,39.59],[1977,40.24],[1978,40.84],[1979,41.35],[1980,41.76],[1981,42.07],[1982,42.29],[1983,42.43],[1984,42.47],[1985,42.39],[1986,42.16],[1987,41.77],[1988,41.25],[1989,40.63],[1990,39.98],[1991,39.35],[1992,38.8],[1993,38.4],[1994,38.19],[1995,38.23],[1996,38.54],[1997,39.12],[1998,39.9],[1999,40.84],[2000,41.88],[2001,42.95],[2002,43.98],[2003,44.92],[2004,45.72],[2005,46.37],[2006,46.87],[2007,47.28],[2008,47.63],[2009,47.95]]},{"name":"Somalia","region":"Sub-Saharan Africa","income":[[1800,498.83],[1820,498.83],[1913,770.73],[1950,1079.21],[1951,1121.11],[1952,1135.75],[1953,1156.66],[1954,1200.56],[1955,1216.04],[1956,1236.83],[1957,1258.15],[1958,1267.28],[1959,1314.37],[1960,1304.43],[1961,1339.27],[1962,1369.49],[1963,1393.03],[1964,1216.29],[1965,1111.44],[1966,1241.97],[1967,1284.73],[1968,1278.43],[1969,1094.01],[1970,1162.59],[1971,1165.65],[1972,1254.58],[1973,1201.48],[1974,933.75],[1975,1227.29],[1976,1191.53],[1977,1450.99],[1978,1419.24],[1979,1206.31],[1980,1059.16],[1981,1136.58],[1982,1176.81],[1983,1037.61],[1984,1037.59],[1985,1080.05],[1986,1075.7],[1987,1093.24],[1988,1089.29],[1989,1112.25],[1990,1106.43],[1991,1030.38],[1992,926.96],[1993,933.06],[1994,942.53],[1995,952.5],[1996,956.1],[1997,930.6],[1998,902.11],[1999,891.91],[2000,881.51],[2001,868.92],[2002,882.08],[2003,895.72],[2004,914.04],[2005,932.96],[2006,935.96],[2007,939.53],[2008,943.04]],"population":[[1820,1000000],[1950,2437932],[1951,2481642],[1952,2526994],[1953,2574024],[1954,2622821],[1955,2673425],[1956,2725932],[1957,2780415],[1958,2836952],[1959,2895391],[1960,2955803],[1961,3016963],[1962,3080153],[1963,3145420],[1964,3212842],[1965,3282503],[1966,3354474],[1967,3428839],[1968,3505657],[1969,3584995],[1970,3666949],[1971,3751979],[1972,3840161],[1973,3931655],[1974,4027472],[1975,4127771],[1976,4237929],[1977,4353666],[1978,4677751],[1979,5308692],[1980,5790705],[1981,5824927],[1982,5828892],[1983,6002525],[1984,6207416],[1985,6445623],[1986,6699590],[1987,6921858],[1988,6900134],[1989,6748499],[1990,6675067],[1991,6448104],[1992,6099799],[1993,6059950],[1994,6177841],[1995,6291143],[1996,6460865],[1997,6633514],[1998,6843022],[1999,7043751],[2000,7253137],[2001,7488773],[2002,7753310],[2003,8025190],[2004,8304601],[2005,8591629],[2006,8863338],[2007,9118773],[2008,9379907]],"lifeExpectancy":[[1800,29.4],[1945,29.4],[1950,32.18],[1951,32.38],[1952,32.78],[1953,33.18],[1954,33.58],[1955,33.98],[1956,34.38],[1957,34.78],[1958,35.18],[1959,35.58],[1960,35.98],[1961,36.38],[1962,36.78],[1963,37.18],[1964,37.58],[1965,37.98],[1966,38.39],[1967,38.81],[1968,39.23],[1969,39.65],[1970,40.05],[1971,40.41],[1972,40.74],[1973,41.02],[1974,41.26],[1975,41.48],[1976,41.69],[1977,41.93],[1978,42.21],[1979,42.53],[1980,42.9],[1981,43.35],[1982,43.85],[1983,44.36],[1984,44.87],[1985,45.28],[1986,45.51],[1987,45.52],[1988,45.32],[1989,44.95],[1990,44.51],[1991,44.12],[1992,43.89],[1993,43.91],[1994,44.19],[1995,44.72],[1996,45.45],[1997,46.26],[1998,47.05],[1999,47.77],[2000,48.37],[2001,48.81],[2002,49.13],[2003,49.34],[2004,49.47],[2005,49.54],[2006,49.61],[2007,49.7],[2008,49.86],[2009,50.09]]},{"name":"South Africa","region":"Sub-Saharan Africa","income":[[1800,759.05],[1820,759.05],[1870,1569.68],[1911,2895.87],[1912,2905.27],[1913,2693.95],[1914,2543.25],[1915,2345.4],[1916,2337.68],[1917,2239.29],[1918,2263.96],[1919,2548.17],[1920,1939.11],[1921,2172.74],[1922,2287.39],[1923,2499.68],[1924,2627.12],[1925,2677.32],[1926,2751.35],[1927,2790.42],[1928,2867.08],[1929,2847.2],[1930,2783.61],[1931,2600.07],[1932,2528.04],[1933,2873.65],[1934,3035.38],[1935,3544.11],[1936,3837.86],[1937,3817.2],[1938,3882.67],[1939,4083.14],[1940,4134.38],[1941,4285.57],[1942,4222.72],[1943,4140.07],[1944,4178.71],[1945,4349.06],[1946,4538.22],[1947,4530.29],[1948,4760.18],[1949,4766.14],[1950,4575.12],[1951,4689.81],[1952,4725.3],[1953,4827.96],[1954,5065.89],[1955,5199.29],[1956,5370.01],[1957,5487.1],[1958,5510.16],[1959,5630.54],[1960,5545.68],[1961,5582.3],[1962,5768.73],[1963,6045.12],[1964,6380.02],[1965,6625.41],[1966,6773.61],[1967,7114.48],[1968,7256.58],[1969,7441.4],[1970,7668.61],[1971,7817.81],[1972,7765.96],[1973,7943.17],[1974,8249.3],[1975,8205.63],[1976,8211.03],[1977,8028.65],[1978,8099.64],[1979,8226.73],[1980,8577.42],[1981,8826.14],[1982,8568.27],[1983,8187.6],[1984,8389.87],[1985,8067.51],[1986,7859.35],[1987,7825.82],[1988,7965.5],[1989,7976.29],[1990,7786.88],[1991,7545.41],[1992,7225.07],[1993,7160],[1994,7236.9],[1995,7304.2],[1996,7454.42],[1997,7479.19],[1998,7339.96],[1999,7333.69],[2000,7454.45],[2001,7520.72],[2002,7710.95],[2003,7863.74],[2004,8154.74],[2005,8477],[2006,8857.05],[2007,9253.18],[2008,9428.79],[2009,9141.27]],"population":[[1820,1550000],[1870,2547000],[1913,6153000],[1950,13595840],[1951,13926314],[1952,14264935],[1953,14623631],[1954,14991553],[1955,15368551],[1956,15755233],[1957,16151549],[1958,16558044],[1959,16974984],[1960,17416653],[1961,17869991],[1962,18356657],[1963,18856708],[1964,19370514],[1965,19898242],[1966,20440487],[1967,20997321],[1968,21569468],[1969,22157355],[1970,22739921],[1971,23338080],[1972,23935810],[1973,24549294],[1974,25178954],[1975,25815144],[1976,26467896],[1977,27129932],[1978,27809087],[1979,28505816],[1980,29251588],[1981,30168679],[1982,31140029],[1983,32143960],[1984,33181594],[1985,34254092],[1986,35098897],[1987,35933379],[1988,36761065],[1989,37581427],[1990,38391094],[1991,39183648],[1992,39964159],[1993,40639384],[1994,41211897],[1995,41779149],[1996,42311979],[1997,42835005],[1998,43334603],[1999,43745636],[2000,44066197],[2001,44296012],[2002,44433622],[2003,44481901],[2004,44448470],[2005,44344136],[2006,44187637],[2007,43997828],[2008,43786115]],"lifeExpectancy":[[1800,33.5],[1930,33.5],[1950,43.55],[1951,43.94],[1952,44.69],[1953,45.4],[1954,46.06],[1955,46.66],[1956,47.22],[1957,47.74],[1958,48.21],[1959,48.64],[1960,49.05],[1961,49.44],[1962,49.82],[1963,50.19],[1964,50.57],[1965,50.96],[1966,51.35],[1967,51.73],[1968,52.1],[1969,52.47],[1970,52.82],[1971,53.17],[1972,53.51],[1973,53.85],[1974,54.2],[1975,54.56],[1976,54.94],[1977,55.36],[1978,55.81],[1979,56.28],[1980,56.79],[1981,57.33],[1982,57.89],[1983,58.45],[1984,58.99],[1985,59.51],[1986,60.01],[1987,60.46],[1988,60.85],[1989,61.16],[1990,61.38],[1991,61.47],[1992,61.43],[1993,61.25],[1994,60.94],[1995,60.45],[1996,59.78],[1997,58.93],[1998,57.95],[1999,56.87],[2000,55.77],[2001,54.7],[2002,53.72],[2003,52.9],[2004,52.25],[2005,51.8],[2006,51.57],[2007,51.5],[2008,51.56],[2009,51.72]]},{"name":"Sudan","region":"Sub-Saharan Africa","income":[[1800,484.74],[1820,484.74],[1913,748.95],[1950,1551.84],[1951,1582.37],[1952,1615.99],[1953,1646.64],[1954,1680.02],[1955,1714.45],[1956,1844.53],[1957,1770.34],[1958,1793.53],[1959,1952.43],[1960,1935.05],[1961,1882.94],[1962,1959.59],[1963,1852.46],[1964,1785.07],[1965,1860.81],[1966,1789.81],[1967,1688],[1968,1744.15],[1969,1802.85],[1970,1679.15],[1971,1745.17],[1972,1659.65],[1973,1473.99],[1974,1574.27],[1975,1720.49],[1976,1974.01],[1977,2202.99],[1978,2094.28],[1979,1808.21],[1980,1760.99],[1981,1739.51],[1982,1895.54],[1983,1811.71],[1984,1660.51],[1985,1495.82],[1986,1508.83],[1987,1507.82],[1988,1494.42],[1989,1574.46],[1990,1405.31],[1991,1458.84],[1992,1492.2],[1993,1495],[1994,1483.56],[1995,1488.27],[1996,1524.29],[1997,1632.21],[1998,1680.62],[1999,1758.2],[2000,1874.02],[2001,1933.19],[2002,1993.4],[2003,2077.55],[2004,2125.87],[2005,2249],[2006,2439.47],[2007,2619.28],[2008,2727.56],[2009,2778.61]],"population":[[1820,5156000],[1950,8051151],[1951,8274803],[1952,8504667],[1953,8740917],[1954,8983729],[1955,9233287],[1956,9489777],[1957,9753392],[1958,10024330],[1959,10302794],[1960,10588993],[1961,10882055],[1962,11183227],[1963,11492735],[1964,11800659],[1965,12085785],[1966,12376709],[1967,12716129],[1968,13058929],[1969,13402968],[1970,13787599],[1971,14182396],[1972,14597019],[1973,15113382],[1974,15571235],[1975,16056068],[1976,16570074],[1977,17104986],[1978,17712471],[1979,18386531],[1980,19063992],[1981,19701604],[1982,20367053],[1983,21750815],[1984,22542649],[1985,23454185],[1986,24171132],[1987,24725960],[1988,25240354],[1989,25837856],[1990,26627366],[1991,27445775],[1992,28227588],[1993,28963634],[1994,29771011],[1995,30567288],[1996,31307337],[1997,32160729],[1998,33108466],[1999,34085246],[2000,35079814],[2001,36080373],[2002,37090298],[2003,38114160],[2004,39148162],[2005,40187486],[2006,41236378],[2007,42292929],[2008,43354411]],"lifeExpectancy":[[1800,31.4],[1940,31.4],[1950,41.06],[1951,41.15],[1952,41.32],[1953,41.5],[1954,41.69],[1955,41.89],[1956,42.09],[1957,42.3],[1958,42.51],[1959,42.75],[1960,43],[1961,43.26],[1962,43.56],[1963,43.87],[1964,44.21],[1965,44.57],[1966,44.94],[1967,45.31],[1968,45.68],[1969,46.04],[1970,46.39],[1971,46.73],[1972,47.05],[1973,47.37],[1974,47.68],[1975,47.98],[1976,48.28],[1977,48.58],[1978,48.88],[1979,49.18],[1980,49.49],[1981,49.78],[1982,50.07],[1983,50.36],[1984,50.64],[1985,50.93],[1986,51.22],[1987,51.53],[1988,51.85],[1989,52.19],[1990,52.55],[1991,52.92],[1992,53.3],[1993,53.69],[1994,54.07],[1995,54.44],[1996,54.8],[1997,55.14],[1998,55.46],[1999,55.77],[2000,56.06],[2001,56.32],[2002,56.57],[2003,56.81],[2004,57.05],[2005,57.3],[2006,57.56],[2007,57.85],[2008,58.16],[2009,58.5]]},{"name":"Swaziland","region":"Sub-Saharan Africa","income":[[1800,414.04],[1820,414.04],[1913,639.72],[1950,1102.4],[1951,1139.3],[1952,1148.38],[1953,1165.39],[1954,1202.81],[1955,1211.97],[1956,1228.31],[1957,1244.71],[1958,1248.4],[1959,1288.37],[1960,1428.81],[1961,1571.42],[1962,1856.18],[1963,1913.56],[1964,2139.39],[1965,2410.44],[1966,2448.89],[1967,2613.1],[1968,2428.33],[1969,2464.78],[1970,3111.99],[1971,3080.01],[1972,3364.84],[1973,3451.35],[1974,3735.37],[1975,3763.75],[1976,3778.83],[1977,3781.41],[1978,3764.15],[1979,3701.56],[1980,3664.77],[1981,3793.14],[1982,3895.38],[1983,3782.51],[1984,3725.86],[1985,3817.84],[1986,3813.04],[1987,3984.84],[1988,3712.85],[1989,3787.6],[1990,3722.55],[1991,3646.2],[1992,3553.02],[1993,3561.05],[1994,3660.89],[1995,3771.59],[1996,3821.06],[1997,3876.77],[1998,3920.39],[1999,3989.51],[2000,4021.22],[2001,4046.53],[2002,4128.12],[2003,4206.8],[2004,4286.16],[2005,4384],[2006,4494.11],[2007,4632.83],[2008,4726.06],[2009,4728.18]],"population":[[1800,86000],[1904,86000],[1911,109000],[1921,113000],[1936,157000],[1946,188000],[1950,277384],[1951,283699],[1952,290243],[1953,297025],[1954,304057],[1955,311346],[1956,318904],[1957,326741],[1958,334837],[1959,343201],[1960,351842],[1961,360775],[1962,370006],[1963,379526],[1964,389347],[1965,399481],[1966,409941],[1967,420690],[1968,431797],[1969,443277],[1970,455145],[1971,467416],[1972,480105],[1973,493232],[1974,506812],[1975,520864],[1976,535618],[1977,551425],[1978,568333],[1979,588268],[1980,611447],[1981,631303],[1982,649901],[1983,672690],[1984,696870],[1985,722451],[1986,750707],[1987,779348],[1988,817085],[1989,851904],[1990,884616],[1991,925717],[1992,962344],[1993,991859],[1994,997652],[1995,1004849],[1996,1030651],[1997,1054486],[1998,1075900],[1999,1094429],[2000,1109750],[2001,1121699],[2002,1130269],[2003,1135657],[2004,1138171],[2005,1138227],[2006,1136334],[2007,1133066],[2008,1128814]],"lifeExpectancy":[[1800,32.3],[1945,32.3],[1950,40.5],[1951,40.74],[1952,41.21],[1953,41.66],[1954,42.09],[1955,42.5],[1956,42.89],[1957,43.26],[1958,43.61],[1959,43.94],[1960,44.26],[1961,44.56],[1962,44.84],[1963,45.13],[1964,45.42],[1965,45.73],[1966,46.09],[1967,46.49],[1968,46.95],[1969,47.46],[1970,48.01],[1971,48.6],[1972,49.2],[1973,49.81],[1974,50.42],[1975,51.03],[1976,51.65],[1977,52.29],[1978,52.95],[1979,53.63],[1980,54.33],[1981,55.04],[1982,55.75],[1983,56.45],[1984,57.13],[1985,57.78],[1986,58.42],[1987,59.04],[1988,59.63],[1989,60.14],[1990,60.53],[1991,60.76],[1992,60.77],[1993,60.55],[1994,60.06],[1995,59.25],[1996,58.05],[1997,56.52],[1998,54.71],[1999,52.74],[2000,50.75],[2001,48.91],[2002,47.33],[2003,46.13],[2004,45.34],[2005,44.99],[2006,45.03],[2007,45.34],[2008,45.8],[2009,46.36]]},{"name":"Tanzania","region":"Sub-Saharan Africa","income":[[1800,470.64],[1820,470.64],[1913,595.68],[1950,654.21],[1951,719.42],[1952,716.65],[1953,674.35],[1954,711.14],[1955,710.04],[1956,700.32],[1957,698.54],[1958,685.88],[1959,700.2],[1960,708.87],[1961,681.14],[1962,722],[1963,745.36],[1964,763.24],[1965,767.49],[1966,840.34],[1967,848.22],[1968,865.71],[1969,855.27],[1970,877.54],[1971,886.77],[1972,915.99],[1973,914.86],[1974,907.39],[1975,926.81],[1976,964.5],[1977,962.49],[1978,961.31],[1979,944.86],[1980,925.32],[1981,888.54],[1982,874.24],[1983,845.05],[1984,840.91],[1985,814.7],[1986,816.73],[1987,831.82],[1988,840.71],[1989,844.46],[1990,850.81],[1991,844.63],[1992,825.68],[1993,808.59],[1994,790.9],[1995,794.02],[1996,813.6],[1997,789.19],[1998,798.12],[1999,806.1],[2000,826.23],[2001,857.59],[2002,899.07],[2003,929.86],[2004,972.48],[2005,1018],[2006,1066.68],[2007,1120.51],[2008,1180.24],[2009,1220.25]],"population":[[1800,3019768],[1820,3019768],[1921,4314332],[1931,5299000],[1948,7740786],[1950,7934924],[1951,8124902],[1952,8322925],[1953,8529355],[1954,8745102],[1955,8970610],[1956,9206352],[1957,9452826],[1958,9710558],[1959,9978909],[1960,10259653],[1961,10555397],[1962,10863958],[1963,11185238],[1964,11521695],[1965,11870412],[1966,12231389],[1967,12607312],[1968,12988137],[1969,13389543],[1970,13806869],[1971,14236867],[1972,14706593],[1973,15201384],[1974,15681232],[1975,16147863],[1976,16625711],[1977,17129565],[1978,17647395],[1979,18174406],[1980,18715307],[1981,19273923],[1982,19844382],[1983,20437869],[1984,21050790],[1985,21677040],[1986,22328642],[1987,23040630],[1988,23760348],[1989,24447781],[1990,25137888],[1991,25853394],[1992,26605473],[1993,27493980],[1994,28556908],[1995,29470379],[1996,30055334],[1997,30686889],[1998,31467507],[1999,32245532],[2000,33065142],[2001,33831342],[2002,34593779],[2003,35354845],[2004,36070799],[2005,36766356],[2006,37445392],[2007,38139640],[2008,38858276]],"lifeExpectancy":[[1800,32.2],[1945,32.2],[1950,40.39],[1951,40.61],[1952,41.05],[1953,41.45],[1954,41.84],[1955,42.19],[1956,42.53],[1957,42.84],[1958,43.12],[1959,43.4],[1960,43.66],[1961,43.91],[1962,44.16],[1963,44.42],[1964,44.7],[1965,44.99],[1966,45.3],[1967,45.63],[1968,45.97],[1969,46.32],[1970,46.69],[1971,47.08],[1972,47.48],[1973,47.89],[1974,48.3],[1975,48.7],[1976,49.07],[1977,49.41],[1978,49.72],[1979,49.98],[1980,50.21],[1981,50.42],[1982,50.61],[1983,50.8],[1984,50.97],[1985,51.12],[1986,51.2],[1987,51.22],[1988,51.17],[1989,51.05],[1990,50.87],[1991,50.65],[1992,50.41],[1993,50.2],[1994,50.02],[1995,49.92],[1996,49.9],[1997,49.97],[1998,50.13],[1999,50.38],[2000,50.74],[2001,51.19],[2002,51.73],[2003,52.33],[2004,52.97],[2005,53.65],[2006,54.34],[2007,55.03],[2008,55.7],[2009,56.35]]},{"name":"Togo","region":"Sub-Saharan Africa","income":[[1800,535.59],[1820,535.59],[1913,827.52],[1950,832.05],[1951,846.17],[1952,859.81],[1953,872.92],[1954,886.24],[1955,899.68],[1956,913.16],[1957,925.91],[1958,937.89],[1959,950.54],[1960,1011.31],[1961,1054.67],[1962,1067.53],[1963,1092.43],[1964,1218.93],[1965,1350.38],[1966,1437.09],[1967,1477.6],[1968,1511.87],[1969,1631.71],[1970,1558.82],[1971,1631.68],[1972,1649.66],[1973,1546.84],[1974,1575.43],[1975,1530.1],[1976,1487.63],[1977,1532.78],[1978,1649.61],[1979,1707.47],[1980,1589.51],[1981,1446.7],[1982,1344.58],[1983,1228.04],[1984,1221.05],[1985,1234.15],[1986,1228.38],[1987,1202.2],[1988,1212.08],[1989,1213.3],[1990,1160.13],[1991,1113.67],[1992,1034.3],[1993,869.67],[1994,1014.99],[1995,1026.07],[1996,1073.78],[1997,982.29],[1998,932.92],[1999,933.17],[2000,890.36],[2001,871.57],[2002,886.22],[2003,907.24],[2004,903.34],[2005,888],[2006,900.26],[2007,895.17],[2008,888.41],[2009,888.01]],"population":[[1800,445985],[1820,445985],[1950,1171897],[1951,1194973],[1952,1219113],[1953,1244363],[1954,1270771],[1955,1298389],[1956,1327270],[1957,1357445],[1958,1388973],[1959,1421772],[1960,1455900],[1961,1491264],[1962,1528098],[1963,1566469],[1964,1606285],[1965,1647772],[1966,1690838],[1967,1735550],[1968,1781978],[1969,1830381],[1970,1964128],[1971,2009685],[1972,2056351],[1973,2104154],[1974,2153238],[1975,2203646],[1976,2255413],[1977,2308582],[1978,2363192],[1979,2420740],[1980,2481375],[1981,2555796],[1982,2644765],[1983,2738544],[1984,2836453],[1985,2938286],[1986,3044174],[1987,3154264],[1988,3268540],[1989,3385787],[1990,3504813],[1991,3625489],[1992,3747553],[1993,3726013],[1994,3750370],[1995,3965576],[1996,4157932],[1997,4320890],[1998,4454777],[1999,4582500],[2000,4711655],[2001,4843185],[2002,4977378],[2003,5114524],[2004,5255320],[2005,5399991],[2006,5548702],[2007,5701579],[2008,5858673]],"lifeExpectancy":[[1800,31.3],[1945,31.3],[1950,40.13],[1951,40.42],[1952,40.98],[1953,41.52],[1954,42.04],[1955,42.54],[1956,43.01],[1957,43.47],[1958,43.91],[1959,44.34],[1960,44.76],[1961,45.16],[1962,45.57],[1963,45.98],[1964,46.4],[1965,46.84],[1966,47.29],[1967,47.76],[1968,48.26],[1969,48.77],[1970,49.3],[1971,49.85],[1972,50.42],[1973,51],[1974,51.58],[1975,52.15],[1976,52.72],[1977,53.28],[1978,53.82],[1979,54.34],[1980,54.82],[1981,55.27],[1982,55.68],[1983,56.05],[1984,56.38],[1985,56.68],[1986,56.93],[1987,57.16],[1988,57.36],[1989,57.54],[1990,57.72],[1991,57.9],[1992,58.08],[1993,58.28],[1994,58.49],[1995,58.71],[1996,58.93],[1997,59.14],[1998,59.34],[1999,59.54],[2000,59.76],[2001,60],[2002,60.28],[2003,60.6],[2004,60.96],[2005,61.36],[2006,61.77],[2007,62.18],[2008,62.57],[2009,62.93]]},{"name":"Uganda","region":"Sub-Saharan Africa","income":[[1800,461.08],[1820,461.08],[1913,712.4],[1950,759.88],[1951,710.29],[1952,734.75],[1953,746.83],[1954,716.66],[1955,743.21],[1956,763.14],[1957,774.37],[1958,757.98],[1959,774.45],[1960,788.69],[1961,758.7],[1962,767.27],[1963,830.8],[1964,868.29],[1965,861.75],[1966,888.69],[1967,908.92],[1968,904.6],[1969,974.6],[1970,960.97],[1971,964.15],[1972,950.74],[1973,927.25],[1974,908.34],[1975,867.67],[1976,852.35],[1977,843.73],[1978,777.37],[1979,675.82],[1980,638.77],[1981,647.57],[1982,682.27],[1983,711.85],[1984,630.52],[1985,622.04],[1986,603.24],[1987,617.72],[1988,636.79],[1989,658.11],[1990,661.3],[1991,646.06],[1992,644.17],[1993,674.24],[1994,693.03],[1995,755.16],[1996,799.01],[1997,816.56],[1998,830.71],[1999,865.83],[2000,881.21],[2001,896.54],[2002,927.72],[2003,937.6],[2004,959.71],[2005,991],[2006,1059.73],[2007,1108.95],[2008,1163.64],[2009,1202.53]],"population":[[1800,2101397],[1820,2101397],[1911,2843000],[1921,2921000],[1931,3554000],[1948,4959000],[1950,5521758],[1951,5670970],[1952,5824797],[1953,5983396],[1954,6147541],[1955,6317454],[1956,6493361],[1957,6675501],[1958,6864123],[1959,7059486],[1960,7261862],[1961,7471533],[1962,7688797],[1963,7913960],[1964,8147346],[1965,8389294],[1966,8640153],[1967,8900294],[1968,9170101],[1969,9449977],[1970,9728111],[1971,9983229],[1972,10190285],[1973,10385004],[1974,10619695],[1975,10890181],[1976,11169608],[1977,11457758],[1978,11755730],[1979,12032167],[1980,12296592],[1981,12595972],[1982,12939400],[1983,13321200],[1984,13761689],[1985,14225933],[1986,14717932],[1987,15283050],[1988,15892811],[1989,16500123],[1990,17074034],[1991,17651716],[1992,18252190],[1993,18903138],[1994,19566609],[1995,20094075],[1996,20623835],[1997,21210254],[1998,21829118],[1999,22535846],[2000,23248553],[2001,23970202],[2002,24739869],[2003,25556448],[2004,26390258],[2005,27269482],[2006,28195754],[2007,29170398],[2008,30214531]],"lifeExpectancy":[[1800,25.3],[1922,25.3],[1927,23.9],[1937,26.4],[1945,28.8],[1950,39],[1951,39.24],[1952,39.73],[1953,40.23],[1954,40.74],[1955,41.25],[1956,41.78],[1957,42.32],[1958,42.86],[1959,43.41],[1960,43.97],[1961,44.52],[1962,45.07],[1963,45.62],[1964,46.16],[1965,46.72],[1966,47.31],[1967,47.94],[1968,48.59],[1969,49.23],[1970,49.84],[1971,50.34],[1972,50.71],[1973,50.92],[1974,50.98],[1975,50.9],[1976,50.73],[1977,50.53],[1978,50.32],[1979,50.15],[1980,50.04],[1981,49.98],[1982,49.96],[1983,49.95],[1984,49.93],[1985,49.86],[1986,49.7],[1987,49.42],[1988,49.01],[1989,48.5],[1990,47.91],[1991,47.27],[1992,46.65],[1993,46.09],[1994,45.64],[1995,45.34],[1996,45.22],[1997,45.26],[1998,45.46],[1999,45.81],[2000,46.31],[2001,46.95],[2002,47.7],[2003,48.52],[2004,49.38],[2005,50.25],[2006,51.11],[2007,51.94],[2008,52.73],[2009,53.47]]},{"name":"Zambia","region":"Sub-Saharan Africa","income":[[1800,364.46],[1820,364.46],[1913,563.12],[1950,1060.84],[1951,1103.66],[1952,1147.39],[1953,1192.69],[1954,1239.06],[1955,1180.94],[1956,1289.24],[1957,1311.96],[1958,1245.62],[1959,1468.11],[1960,1540.6],[1961,1505.53],[1962,1452.73],[1963,1447.58],[1964,1599.11],[1965,1841.72],[1966,1695.38],[1967,1777.08],[1968,1753.08],[1969,1695.41],[1970,1722.48],[1971,1672.76],[1972,1773.5],[1973,1704.46],[1974,1788.69],[1975,1670.52],[1976,1718.94],[1977,1588.69],[1978,1552.52],[1979,1461.38],[1980,1461.6],[1981,1502.69],[1982,1408.68],[1983,1329.5],[1984,1279.2],[1985,1258.79],[1986,1223.74],[1987,1213.32],[1988,1249.79],[1989,1226.43],[1990,1299.99],[1991,1264.81],[1992,1210.88],[1993,1261.3],[1994,1067.93],[1995,1017.79],[1996,1060.55],[1997,1071.35],[1998,1027.23],[1999,1025.58],[2000,1035.9],[2001,1059.73],[2002,1071.61],[2003,1105.23],[2004,1140.76],[2005,1175],[2006,1218.75],[2007,1333.61],[2008,1382.47],[2009,1442.06]],"population":[[1800,747000],[1904,747000],[1911,822000],[1921,984000],[1931,1345000],[1950,2553000],[1951,2611000],[1952,2672000],[1953,2734000],[1954,2800000],[1955,2869000],[1956,2941000],[1957,3016000],[1958,3094000],[1959,3173000],[1960,3254000],[1961,3337000],[1962,3421000],[1963,3508000],[1964,3599000],[1965,3694000],[1966,3794000],[1967,3900000],[1968,4009000],[1969,4123000],[1970,4251612],[1971,4376371],[1972,4506497],[1973,4642941],[1974,4784668],[1975,4923730],[1976,5067045],[1977,5216550],[1978,5371218],[1979,5531990],[1980,5699777],[1981,5884561],[1982,6100407],[1983,6337427],[1984,6563331],[1985,6779477],[1986,7022362],[1987,7272406],[1988,7502249],[1989,7722416],[1990,7941694],[1991,8162612],[1992,8381163],[1993,8593282],[1994,8800157],[1995,9001866],[1996,9201909],[1997,9417789],[1998,9636385],[1999,9863137],[2000,10116606],[2001,10373871],[2002,10595811],[2003,10799220],[2004,11025690],[2005,11261795],[2006,11502010],[2007,11746035],[2008,11993403]],"lifeExpectancy":[[1800,32.6],[1945,32.6],[1950,41.22],[1951,41.43],[1952,41.85],[1953,42.26],[1954,42.67],[1955,43.09],[1956,43.5],[1957,43.9],[1958,44.31],[1959,44.71],[1960,45.1],[1961,45.47],[1962,45.84],[1963,46.19],[1964,46.54],[1965,46.9],[1966,47.27],[1967,47.66],[1968,48.09],[1969,48.53],[1970,48.99],[1971,49.46],[1972,49.91],[1973,50.34],[1974,50.72],[1975,51.05],[1976,51.33],[1977,51.55],[1978,51.72],[1979,51.84],[1980,51.93],[1981,51.99],[1982,52.04],[1983,52.08],[1984,52.11],[1985,52.1],[1986,52.07],[1987,51.97],[1988,51.8],[1989,51.53],[1990,51.12],[1991,50.53],[1992,49.77],[1993,48.85],[1994,47.81],[1995,46.69],[1996,45.55],[1997,44.45],[1998,43.45],[1999,42.63],[2000,42.04],[2001,41.72],[2002,41.67],[2003,41.86],[2004,42.27],[2005,42.88],[2006,43.66],[2007,44.54],[2008,45.47],[2009,46.4]]},{"name":"Zimbabwe","region":"Sub-Saharan Africa","income":[[1800,372.82],[1820,372.82],[1913,387.64],[1950,393.7],[1951,405.39],[1952,406.88],[1953,426.64],[1954,433.72],[1955,454.05],[1956,500.9],[1957,518.76],[1958,509.09],[1959,519.6],[1960,526.78],[1961,536.66],[1962,527.27],[1963,506.09],[1964,535.49],[1965,552.37],[1966,543.32],[1967,569.8],[1968,561.22],[1969,609.82],[1970,720.26],[1971,760.02],[1972,799.36],[1973,804.19],[1974,801.62],[1975,787.31],[1976,762.17],[1977,685.59],[1978,692],[1979,679.95],[1980,727.55],[1981,790.3],[1982,788.86],[1983,771.84],[1984,728.37],[1985,749.91],[1986,742.3],[1987,706.16],[1988,744.46],[1989,768.28],[1990,761.5],[1991,782.09],[1992,693.42],[1993,686.67],[1994,719.99],[1995,717.36],[1996,781.5],[1997,792.45],[1998,806.31],[1999,792.76],[2000,745.77],[2001,719.96],[2002,672.04],[2003,598.24],[2004,571.74],[2005,538],[2006,517.35],[2007,498.8],[2008,426.62],[2009,443.74]],"population":[[1800,1085814],[1820,1085814],[1950,2853151],[1951,2950941],[1952,3080907],[1953,3190967],[1954,3307273],[1955,3409017],[1956,3529739],[1957,3646340],[1958,3764157],[1959,3886947],[1960,4010933],[1961,4140117],[1962,4277736],[1963,4412423],[1964,4537263],[1965,4685272],[1966,4835691],[1967,4995432],[1968,5171817],[1969,5352802],[1970,5514536],[1971,5684187],[1972,5861135],[1973,6001949],[1974,6172535],[1975,6341797],[1976,6496418],[1977,6642107],[1978,6767223],[1979,6887132],[1980,7169968],[1981,7429223],[1982,7636524],[1983,7928538],[1984,8241357],[1985,8560378],[1986,8876579],[1987,9216418],[1988,9560036],[1989,9867471],[1990,10152933],[1991,10429405],[1992,10704340],[1993,10950080],[1994,11049617],[1995,11111992],[1996,11260802],[1997,11404948],[1998,11534135],[1999,11649168],[2000,11751323],[2001,11844109],[2002,11926563],[2003,12004576],[2004,12083553],[2005,12160782],[2006,12236805],[2007,12311143],[2008,12382920]],"lifeExpectancy":[[1800,33.7],[1940,33.7],[1950,47.65],[1951,47.86],[1952,48.28],[1953,48.7],[1954,49.12],[1955,49.53],[1956,49.93],[1957,50.33],[1958,50.73],[1959,51.12],[1960,51.5],[1961,51.87],[1962,52.23],[1963,52.58],[1964,52.92],[1965,53.25],[1966,53.58],[1967,53.9],[1968,54.22],[1969,54.54],[1970,54.86],[1971,55.19],[1972,55.52],[1973,55.85],[1974,56.2],[1975,56.58],[1976,56.99],[1977,57.44],[1978,57.92],[1979,58.43],[1980,58.96],[1981,59.5],[1982,60.03],[1983,60.52],[1984,60.94],[1985,61.26],[1986,61.48],[1987,61.58],[1988,61.53],[1989,61.28],[1990,60.76],[1991,59.89],[1992,58.65],[1993,57.07],[1994,55.21],[1995,53.13],[1996,50.93],[1997,48.73],[1998,46.66],[1999,44.82],[2000,43.32],[2001,42.23],[2002,41.54],[2003,41.22],[2004,41.28],[2005,41.68],[2006,42.4],[2007,43.36],[2008,44.49],[2009,45.72]]},{"name":"Afghanistan","region":"South Asia","income":[[1800,472.05],[1820,472.05],[1913,638.38],[1950,757.32],[1951,766.75],[1952,779.45],[1953,812.86],[1954,815.36],[1955,816.41],[1956,837.07],[1957,820.85],[1958,849.74],[1959,856.23],[1960,868.5],[1961,857.36],[1962,853.1],[1963,849.44],[1964,846.27],[1965,845.22],[1966,833.61],[1967,836.2],[1968,845.08],[1969,837.62],[1970,833.32],[1971,773.7],[1972,739.98],[1973,803.49],[1974,825.58],[1975,846.44],[1976,866.19],[1977,786.11],[1978,827.09],[1979,809.07],[1980,810.43],[1981,896.86],[1982,978.01],[1983,1013.13],[1984,994.57],[1985,961.92],[1986,1030.89],[1987,852.4],[1988,770.01],[1989,751.44],[1990,709.5],[1991,705.45],[1992,649.34],[1993,558.85],[1994,500.45],[1995,601.87],[1996,617.91],[1997,635.34],[1998,653.3],[1999,670.99],[2000,663.91],[2001,595.04],[2002,726.73],[2003,785.13],[2004,804.72],[2005,874],[2006,910.38],[2007,1012.61],[2008,1019.36],[2009,1216.68]],"population":[[1800,3280000],[1820,3280000],[1870,4207000],[1913,5730000],[1950,8150368],[1951,8284473],[1952,8425333],[1953,8573217],[1954,8728408],[1955,8891209],[1956,9061938],[1957,9240934],[1958,9428556],[1959,9624606],[1960,9829450],[1961,10043473],[1962,10267083],[1963,10500711],[1964,10744167],[1965,10997885],[1966,11262324],[1967,11537966],[1968,11825320],[1969,12122740],[1970,12430623],[1971,12749385],[1972,13079460],[1973,13421301],[1974,13772076],[1975,14132019],[1976,14501369],[1977,14880372],[1978,15269281],[1979,15555612],[1980,15112149],[1981,13812973],[1982,12881816],[1983,12934937],[1984,13387737],[1985,13796928],[1986,13856100],[1987,13867957],[1988,14076478],[1989,14511868],[1990,14669339],[1991,14871963],[1992,16317921],[1993,18371583],[1994,19900668],[1995,20881480],[1996,21559923],[1997,22227415],[1998,22912814],[1999,23646128],[2000,23898198],[2001,23997412],[2002,25268405],[2003,27060359],[2004,28513677],[2005,29928987],[2006,31056997],[2007,31889923],[2008,32738376]],"lifeExpectancy":[[1800,28.21],[1950,28.21],[1951,28.36],[1952,28.65],[1953,28.95],[1954,29.25],[1955,29.55],[1956,29.85],[1957,30.16],[1958,30.48],[1959,30.8],[1960,31.13],[1961,31.47],[1962,31.82],[1963,32.2],[1964,32.58],[1965,32.98],[1966,33.38],[1967,33.79],[1968,34.2],[1969,34.61],[1970,35.03],[1971,35.46],[1972,35.91],[1973,36.37],[1974,36.85],[1975,37.31],[1976,37.77],[1977,38.2],[1978,38.59],[1979,38.94],[1980,39.25],[1981,39.52],[1982,39.76],[1983,39.98],[1984,40.19],[1985,40.39],[1986,40.58],[1987,40.77],[1988,40.96],[1989,41.15],[1990,41.32],[1991,41.46],[1992,41.58],[1993,41.67],[1994,41.72],[1995,41.75],[1996,41.76],[1997,41.75],[1998,41.75],[1999,41.77],[2000,41.83],[2001,41.93],[2002,42.09],[2003,42.3],[2004,42.57],[2005,42.88],[2006,43.23],[2007,43.58],[2008,43.94],[2009,44.3]]},{"name":"Bangladesh","region":"South Asia","income":[[1800,609],[1820,606],[1821,606],[1822,606],[1823,606],[1824,606],[1825,606],[1826,606],[1827,606],[1828,606],[1829,606],[1830,606],[1831,606],[1832,606],[1833,606],[1834,606],[1835,606],[1836,606],[1837,606],[1838,606],[1839,606],[1840,606],[1841,606],[1842,606],[1843,606],[1844,606],[1845,606],[1846,606],[1847,606],[1848,606],[1849,606],[1850,606],[1851,606],[1852,606],[1853,606],[1854,606],[1855,606],[1856,606],[1857,606],[1858,606],[1859,606],[1860,606],[1861,606],[1862,606],[1863,606],[1864,606],[1865,606],[1866,606],[1867,606],[1868,606],[1869,606],[1870,606],[1871,607],[1872,608],[1873,610],[1874,611],[1875,613],[1876,614],[1877,615],[1878,617],[1879,618],[1880,620],[1881,621],[1882,623],[1883,624],[1884,625],[1885,644],[1886,622],[1887,649],[1888,654],[1889,635],[1890,664],[1891,602],[1892,649],[1893,664],[1894,673],[1895,655],[1896,606],[1897,715],[1898,716],[1899,659],[1900,681],[1901,691],[1902,744],[1903,750],[1904,749],[1905,730],[1906,747],[1907,697],[1908,703],[1909,795],[1910,791],[1911,785],[1912,782],[1913,764],[1914,805],[1915,785],[1916,807],[1917,791],[1918,690],[1919,784],[1920,721],[1921,772],[1922,796],[1923,763],[1924,792],[1925,793],[1926,810],[1927,802],[1928,802],[1929,827],[1930,824],[1931,808],[1932,806],[1933,795],[1934,791],[1935,773],[1936,792],[1937,768],[1938,759],[1939,765],[1940,780],[1941,785],[1942,772],[1943,793],[1944,776],[1945,754],[1946,706],[1947,702],[1948,701],[1949,709],[1950,673],[1951,675],[1952,684],[1953,683],[1954,683],[1955,633],[1956,688],[1957,662],[1958,636],[1959,656],[1960,679],[1961,704],[1962,686],[1963,741],[1964,734],[1965,758],[1966,753],[1967,721],[1968,772],[1969,767],[1970,785],[1971,731],[1972,630],[1973,620],[1974,682],[1975,660],[1976,674],[1977,660],[1978,687],[1979,698],[1980,684],[1981,687],[1982,677],[1983,693],[1984,714],[1985,720],[1986,736],[1987,752],[1988,759],[1989,763],[1990,799],[1991,810],[1992,838],[1993,863],[1994,884],[1995,913],[1996,939],[1997,973],[1998,1005],[1999,1035],[2000,1075],[2001,1110],[2002,1136],[2003,1172],[2004,1221],[2005,1268],[2006,1326],[2007,1384],[2008,1441],[2009,1492]],"population":[[1820,20000000],[1870,24721000],[1913,31786000],[1929,34427000],[1941,41966000],[1946,41660000],[1950,45645964],[1951,46152281],[1952,46886859],[1953,47660488],[1954,48603271],[1955,49601520],[1956,50477738],[1957,51365468],[1958,52399182],[1959,53484608],[1960,54621538],[1961,55741313],[1962,56839289],[1963,58226108],[1964,59402546],[1965,60332117],[1966,61548117],[1967,62821884],[1968,64133002],[1969,65482564],[1970,67402621],[1971,69226511],[1972,70759295],[1973,72470813],[1974,74679411],[1975,76253310],[1976,77928480],[1977,80428306],[1978,82935511],[1979,85492214],[1980,88076996],[1981,90666000],[1982,93074406],[1983,95384346],[1984,97611763],[1985,99752733],[1986,101768861],[1987,103764241],[1988,105771136],[1989,107806550],[1990,109896945],[1991,111935847],[1992,113704579],[1993,115447696],[1994,117279697],[1995,119186448],[1996,121189286],[1997,123315288],[1998,125572731],[1999,127943283],[2000,130406594],[2001,132974813],[2002,135656790],[2003,138448210],[2004,141340476],[2005,144319628],[2006,147365352],[2007,150448339],[2008,153546901]],"lifeExpectancy":[[1800,25.5],[1876,25.5],[1886,23.2],[1896,22],[1906,21.5],[1926,24.9],[1950,36.75],[1951,36.94],[1952,37.32],[1953,37.69],[1954,38.05],[1955,38.41],[1956,38.77],[1957,39.12],[1958,39.48],[1959,39.84],[1960,40.21],[1961,40.6],[1962,41.01],[1963,41.44],[1964,41.88],[1965,42.33],[1966,42.75],[1967,43.13],[1968,43.47],[1969,43.77],[1970,44.03],[1971,44.25],[1972,44.46],[1973,44.68],[1974,44.92],[1975,45.2],[1976,45.56],[1977,45.98],[1978,46.48],[1979,47.05],[1980,47.67],[1981,48.32],[1982,48.99],[1983,49.65],[1984,50.3],[1985,50.92],[1986,51.52],[1987,52.12],[1988,52.72],[1989,53.34],[1990,53.98],[1991,54.64],[1992,55.34],[1993,56.06],[1994,56.8],[1995,57.56],[1996,58.32],[1997,59.09],[1998,59.84],[1999,60.58],[2000,61.29],[2001,61.99],[2002,62.67],[2003,63.33],[2004,63.97],[2005,64.58],[2006,65.15],[2007,65.67],[2008,66.14],[2009,66.56]]},{"name":"Bhutan","region":"South Asia","income":[[1800,539.56],[1820,539.56],[1950,683.5],[1970,835.91],[1971,828.28],[1972,807.62],[1973,789.32],[1974,799.54],[1975,745.32],[1976,783.53],[1977,816.31],[1978,845.46],[1979,858.09],[1980,874.57],[1981,948.71],[1982,946.81],[1983,999.68],[1984,1035.6],[1985,1064.85],[1986,1177.59],[1987,1494.29],[1988,1535.47],[1989,1615.41],[1990,1782.04],[1991,1804.67],[1992,1904.18],[1993,1989.17],[1994,2149.47],[1995,2317.07],[1996,2456.12],[1997,2561.51],[1998,2656.05],[1999,2790.21],[2000,2922.11],[2001,3045.89],[2002,3256.02],[2003,3406.36],[2004,3545.99],[2005,3694],[2006,3845.06],[2007,4520.52],[2008,4670.97],[2009,5053.83]],"population":[[1800,392287],[1820,392287],[1950,734000],[1951,745689],[1952,757716],[1953,770091],[1954,782825],[1955,796000],[1956,809486],[1957,823365],[1958,837649],[1959,852335],[1960,867000],[1961,882518],[1962,898475],[1963,914885],[1964,931782],[1965,950000],[1966,967932],[1967,986400],[1968,1005421],[1969,1025096],[1970,1045000],[1971,1066129],[1972,1087991],[1973,1110611],[1974,1133702],[1975,1157452],[1976,1181554],[1977,1205659],[1978,1230769],[1979,1255882],[1980,1281000],[1981,1306579],[1982,1333704],[1983,1362337],[1984,1392489],[1985,1424193],[1986,1457094],[1987,1490857],[1988,1525539],[1989,1561160],[1990,1597719],[1991,1635161],[1992,1673428],[1993,1712504],[1994,1752368],[1995,1793012],[1996,1834341],[1997,1876236],[1998,1918669],[1999,1961642],[2000,2005222],[2001,2049412],[2002,2094176],[2003,2139549],[2004,2185569],[2005,2232291],[2006,2279723],[2007,2327849],[2008,2376680]],"lifeExpectancy":[[1950,36.04],[1951,36.04],[1952,36.06],[1953,36.1],[1954,36.17],[1955,36.26],[1956,36.38],[1957,36.51],[1958,36.68],[1959,36.86],[1960,37.08],[1961,37.31],[1962,37.58],[1963,37.86],[1964,38.18],[1965,38.52],[1966,38.88],[1967,39.27],[1968,39.68],[1969,40.12],[1970,40.58],[1971,41.06],[1972,41.56],[1973,42.09],[1974,42.64],[1975,43.21],[1976,43.8],[1977,44.41],[1978,45.03],[1979,45.66],[1980,46.29],[1981,46.91],[1982,47.51],[1983,48.1],[1984,48.67],[1985,49.25],[1986,49.83],[1987,50.43],[1988,51.07],[1989,51.75],[1990,52.47],[1991,53.24],[1992,54.05],[1993,54.89],[1994,55.75],[1995,56.65],[1996,57.57],[1997,58.52],[1998,59.48],[1999,60.43],[2000,61.36],[2001,62.22],[2002,63],[2003,63.7],[2004,64.3],[2005,64.82],[2006,65.26],[2007,65.67],[2008,66.05],[2009,66.42]]},{"name":"India","region":"South Asia","income":[[1800,563],[1820,560],[1821,560],[1822,560],[1823,560],[1824,560],[1825,560],[1826,560],[1827,560],[1828,560],[1829,560],[1830,560],[1831,560],[1832,560],[1833,560],[1834,560],[1835,560],[1836,560],[1837,560],[1838,560],[1839,560],[1840,560],[1841,560],[1842,560],[1843,560],[1844,560],[1845,560],[1846,560],[1847,560],[1848,560],[1849,560],[1850,560],[1851,560],[1852,560],[1853,560],[1854,560],[1855,560],[1856,560],[1857,560],[1858,560],[1859,560],[1860,560],[1861,560],[1862,560],[1863,560],[1864,560],[1865,560],[1866,560],[1867,560],[1868,560],[1869,560],[1870,560],[1871,561],[1872,561],[1873,562],[1874,562],[1875,563],[1876,563],[1877,564],[1878,564],[1879,565],[1880,565],[1881,566],[1882,566],[1883,567],[1884,567],[1885,583],[1886,563],[1887,587],[1888,590],[1889,572],[1890,597],[1891,540],[1892,582],[1893,595],[1894,602],[1895,585],[1896,540],[1897,637],[1898,637],[1899,585],[1900,604],[1901,612],[1902,658],[1903,662],[1904,660],[1905,643],[1906,657],[1907,613],[1908,617],[1909,696],[1910,692],[1911,686],[1912,683],[1913,666],[1914,700],[1915,682],[1916,700],[1917,686],[1918,597],[1919,678],[1920,622],[1921,665],[1922,685],[1923,655],[1924,679],[1925,680],[1926,693],[1927,685],[1928,684],[1929,704],[1930,701],[1931,687],[1932,684],[1933,674],[1934,670],[1935,653],[1936,668],[1937,647],[1938,639],[1939,643],[1940,654],[1941,658],[1942,646],[1943,663],[1944,647],[1945,629],[1946,588],[1947,583],[1948,582],[1949,588],[1950,580],[1951,583],[1952,588],[1953,613],[1954,626],[1955,629],[1956,651],[1957,631],[1958,663],[1959,664],[1960,696],[1961,700],[1962,699],[1963,717],[1964,755],[1965,707],[1966,698],[1967,739],[1968,739],[1969,771],[1970,791],[1971,779],[1972,758],[1973,774],[1974,764],[1975,812],[1976,804],[1977,845],[1978,870],[1979,806],[1980,844],[1981,877],[1982,883],[1983,933],[1984,947],[1985,963],[1986,982],[1987,1001],[1988,1081],[1989,1127],[1990,1160],[1991,1150],[1992,1186],[1993,1227],[1994,1290],[1995,1354],[1996,1433],[1997,1475],[1998,1543],[1999,1607],[2000,1648],[2001,1714],[2002,1754],[2003,1872],[2004,1981],[2005,2126],[2006,2300],[2007,2478],[2008,2622],[2009,2731]],"population":[[1820,175349000],[1870,212189000],[1913,251906000],[1929,275861000],[1941,321565000],[1946,340857000],[1947,346000000],[1948,350000000],[1949,355000000],[1950,359000000],[1951,365000000],[1952,372000000],[1953,379000000],[1954,386000000],[1955,393000000],[1956,401000000],[1957,409000000],[1958,418000000],[1959,426000000],[1960,434000000],[1961,444000000],[1962,454000000],[1963,464000000],[1964,474000000],[1965,485000000],[1966,495000000],[1967,506000000],[1968,518000000],[1969,529000000],[1970,541000000],[1971,554000000],[1972,567000000],[1973,580000000],[1974,593000000],[1975,607000000],[1976,620000000],[1977,634000000],[1978,648000000],[1979,664000000],[1980,679000000],[1981,692000000],[1982,708000000],[1983,723000000],[1984,739000000],[1985,755000000],[1986,771000000],[1987,788000000],[1988,805000000],[1989,822000000],[1990,839000000],[1991,856000000],[1992,872000000],[1993,891000000],[1994,908000000],[1995,927000000],[1996,943000000],[1997,959000000],[1998,975000000],[1999,991691000],[2000,1007702000],[2001,1023590000],[2002,1034172547],[2003,1049700118],[2004,1065070607],[2005,1080264388],[2006,1095351995],[2007,1110396331],[2008,1125368288]],"lifeExpectancy":[[1800,25.4],[1881,25.44],[1891,24.27],[1901,23.49],[1905,23.98],[1911,23.15],[1915,24.02],[1921,24.86],[1925,27.61],[1931,29.31],[1935,30.95],[1941,32.59],[1945,35.03],[1950,36.8],[1951,37.08],[1952,37.65],[1953,38.22],[1954,38.8],[1955,39.39],[1956,39.98],[1957,40.59],[1958,41.19],[1959,41.81],[1960,42.44],[1961,43.07],[1962,43.71],[1963,44.35],[1964,45],[1965,45.65],[1966,46.3],[1967,46.94],[1968,47.57],[1969,48.19],[1970,48.82],[1971,49.47],[1972,50.14],[1973,50.83],[1974,51.54],[1975,52.24],[1976,52.92],[1977,53.55],[1978,54.13],[1979,54.65],[1980,55.11],[1981,55.51],[1982,55.88],[1983,56.22],[1984,56.55],[1985,56.86],[1986,57.16],[1987,57.44],[1988,57.7],[1989,57.95],[1990,58.2],[1991,58.45],[1992,58.72],[1993,59],[1994,59.3],[1995,59.62],[1996,59.95],[1997,60.28],[1998,60.61],[1999,60.94],[2000,61.26],[2001,61.56],[2002,61.86],[2003,62.15],[2004,62.45],[2005,62.74],[2006,63.04],[2007,63.35],[2008,63.68],[2009,64.01]]},{"name":"Maldives","region":"South Asia","income":[[1800,472.12],[1820,472.12],[1950,457.04],[1970,699.73],[1971,719.24],[1972,719.32],[1973,713.06],[1974,735.04],[1975,658.84],[1976,645.16],[1977,698.04],[1978,778.18],[1979,836.67],[1980,963.7],[1981,1046.14],[1982,985.5],[1983,1112.25],[1984,1369.88],[1985,1500.14],[1986,1588.81],[1987,1674.2],[1988,1761.8],[1989,1863.84],[1990,2099.77],[1991,2192.57],[1992,2261.8],[1993,2334.22],[1994,2424.26],[1995,2533.7],[1996,2696.2],[1997,2945.77],[1998,3159.42],[1999,3345.16],[2000,3433.5],[2001,3488.21],[2002,3643.83],[2003,3919.91],[2004,4296.72],[2005,4017],[2006,4598.79],[2007,4931.92],[2008,5240.39],[2009,5081.79]],"population":[[1800,42378],[1820,42378],[1911,72000],[1921,70000],[1931,79000],[1946,82000],[1950,79293],[1951,78614],[1952,77940],[1953,77273],[1954,78684],[1955,80121],[1956,81585],[1957,83075],[1958,87582],[1959,89290],[1960,92247],[1961,92793],[1962,92744],[1963,94527],[1964,94244],[1965,97769],[1966,100937],[1967,103810],[1968,107000],[1969,110810],[1970,114572],[1971,118880],[1972,122681],[1973,125665],[1974,128722],[1975,132608],[1976,136604],[1977,140721],[1978,144875],[1979,149280],[1980,153957],[1981,158926],[1982,164210],[1983,169830],[1984,175800],[1985,181749],[1986,188125],[1987,194783],[1988,201721],[1989,208931],[1990,216401],[1991,224107],[1992,232026],[1993,240147],[1994,248459],[1995,256949],[1996,265592],[1997,274366],[1998,283271],[1999,292307],[2000,301475],[2001,310764],[2002,320165],[2003,329684],[2004,339330],[2005,349106],[2006,359008],[2007,369031],[2008,379174]],"lifeExpectancy":[[1950,37.63],[1951,37.94],[1952,38.57],[1953,39.19],[1954,39.82],[1955,40.44],[1956,41.07],[1957,41.7],[1958,42.32],[1959,42.95],[1960,43.58],[1961,44.21],[1962,44.84],[1963,45.47],[1964,46.1],[1965,46.73],[1966,47.36],[1967,47.98],[1968,48.61],[1969,49.24],[1970,49.87],[1971,50.51],[1972,51.15],[1973,51.79],[1974,52.42],[1975,53.06],[1976,53.67],[1977,54.27],[1978,54.84],[1979,55.38],[1980,55.91],[1981,56.43],[1982,56.95],[1983,57.47],[1984,57.99],[1985,58.48],[1986,58.94],[1987,59.33],[1988,59.67],[1989,59.96],[1990,60.23],[1991,60.49],[1992,60.78],[1993,61.13],[1994,61.55],[1995,62.07],[1996,62.71],[1997,63.44],[1998,64.26],[1999,65.13],[2000,66.04],[2001,66.94],[2002,67.81],[2003,68.62],[2004,69.35],[2005,70],[2006,70.56],[2007,71.07],[2008,71.52],[2009,71.94]]},{"name":"Nepal","region":"South Asia","income":[[1800,419.18],[1820,419.18],[1870,419.09],[1913,568.94],[1950,523.98],[1951,533.44],[1952,545.87],[1953,573.1],[1954,579.1],[1955,584.46],[1956,604.31],[1957,597.94],[1958,624.64],[1959,634.84],[1960,640.8],[1961,647.14],[1962,652.4],[1963,657.22],[1964,661.37],[1965,665.64],[1966,699.91],[1967,676.44],[1968,668.49],[1969,685.31],[1970,689.73],[1971,668.18],[1972,674.79],[1973,656.98],[1974,683],[1975,677.24],[1976,690.36],[1977,694.11],[1978,706.97],[1979,705.92],[1980,672.3],[1981,655.45],[1982,718.37],[1983,679.89],[1984,727.02],[1985,752.59],[1986,765.17],[1987,775.63],[1988,815.81],[1989,813.76],[1990,852.69],[1991,884.4],[1992,897.74],[1993,909.05],[1994,959.49],[1995,968.55],[1996,995.5],[1997,1010.89],[1998,1005.27],[1999,1014.02],[2000,1054.79],[2001,1085.11],[2002,1057.21],[2003,1065.44],[2004,1079.3],[2005,1081],[2006,1106.58],[2007,1132.53],[2008,1181.59],[2009,1224.73]],"population":[[1800,3881000],[1820,3881000],[1850,4352000],[1870,4698000],[1890,5192000],[1900,5283000],[1913,5639000],[1950,8989915],[1951,9085715],[1952,9182536],[1953,9280389],[1954,9379284],[1955,9479233],[1956,9580247],[1957,9682338],[1958,9788923],[1959,9906107],[1960,10034723],[1961,10176198],[1962,10332057],[1963,10500330],[1964,10677158],[1965,10862394],[1966,11057476],[1967,11261690],[1968,11473118],[1969,11692022],[1970,11918678],[1971,12154648],[1972,12412593],[1973,12684751],[1974,12972880],[1975,13278095],[1976,13599104],[1977,13933198],[1978,14280079],[1979,14640898],[1980,15016477],[1981,15402612],[1982,15796314],[1983,16199649],[1984,16613359],[1985,17037772],[1986,17472236],[1987,17917180],[1988,18374009],[1989,18843260],[1990,19325207],[1991,19818809],[1992,20326209],[1993,20845700],[1994,21372585],[1995,21907276],[1996,22450069],[1997,23001113],[1998,23560320],[1999,24127391],[2000,24702119],[2001,25284463],[2002,25873917],[2003,26469569],[2004,27070666],[2005,27676547],[2006,28287147],[2007,28901790],[2008,29519114]],"lifeExpectancy":[[1800,32.8],[1945,32.8],[1950,35.6],[1951,35.74],[1952,36.02],[1953,36.31],[1954,36.61],[1955,36.9],[1956,37.21],[1957,37.51],[1958,37.82],[1959,38.14],[1960,38.47],[1961,38.81],[1962,39.16],[1963,39.53],[1964,39.92],[1965,40.32],[1966,40.75],[1967,41.19],[1968,41.66],[1969,42.13],[1970,42.63],[1971,43.14],[1972,43.66],[1973,44.2],[1974,44.74],[1975,45.3],[1976,45.85],[1977,46.41],[1978,46.98],[1979,47.54],[1980,48.11],[1981,48.69],[1982,49.27],[1983,49.85],[1984,50.45],[1985,51.04],[1986,51.63],[1987,52.2],[1988,52.77],[1989,53.34],[1990,53.92],[1991,54.54],[1992,55.2],[1993,55.91],[1994,56.67],[1995,57.47],[1996,58.32],[1997,59.18],[1998,60.03],[1999,60.87],[2000,61.69],[2001,62.47],[2002,63.23],[2003,63.95],[2004,64.63],[2005,65.25],[2006,65.81],[2007,66.31],[2008,66.74],[2009,67.12]]},{"name":"Pakistan","region":"South Asia","income":[[1800,666],[1820,662],[1821,662],[1822,662],[1823,662],[1824,662],[1825,662],[1826,662],[1827,662],[1828,662],[1829,662],[1830,662],[1831,662],[1832,662],[1833,662],[1834,662],[1835,662],[1836,662],[1837,662],[1838,662],[1839,662],[1840,662],[1841,662],[1842,662],[1843,662],[1844,662],[1845,662],[1846,662],[1847,662],[1848,662],[1849,662],[1850,662],[1851,662],[1852,662],[1853,662],[1854,662],[1855,662],[1856,662],[1857,662],[1858,662],[1859,662],[1860,662],[1861,662],[1862,662],[1863,662],[1864,662],[1865,662],[1866,662],[1867,662],[1868,662],[1869,662],[1870,662],[1871,664],[1872,665],[1873,667],[1874,668],[1875,670],[1876,671],[1877,673],[1878,675],[1879,676],[1880,678],[1881,679],[1882,681],[1883,682],[1884,684],[1885,704],[1886,681],[1887,710],[1888,715],[1889,695],[1890,726],[1891,658],[1892,709],[1893,726],[1894,736],[1895,717],[1896,663],[1897,782],[1898,783],[1899,720],[1900,744],[1901,755],[1902,813],[1903,820],[1904,819],[1905,799],[1906,817],[1907,763],[1908,769],[1909,869],[1910,865],[1911,858],[1912,856],[1913,835],[1914,880],[1915,858],[1916,882],[1917,865],[1918,754],[1919,857],[1920,789],[1921,844],[1922,871],[1923,834],[1924,866],[1925,867],[1926,886],[1927,877],[1928,877],[1929,904],[1930,901],[1931,883],[1932,881],[1933,869],[1934,865],[1935,845],[1936,866],[1937,840],[1938,830],[1939,837],[1940,853],[1941,858],[1942,844],[1943,867],[1944,848],[1945,825],[1946,772],[1947,767],[1948,766],[1949,776],[1950,739],[1951,698],[1952,685],[1953,733],[1954,732],[1955,730],[1956,734],[1957,747],[1958,739],[1959,728],[1960,744],[1961,769],[1962,803],[1963,831],[1964,871],[1965,886],[1966,933],[1967,942],[1968,982],[1969,1018],[1970,1094],[1971,1070],[1972,1050],[1973,1096],[1974,1106],[1975,1124],[1976,1156],[1977,1176],[1978,1241],[1979,1250],[1980,1334],[1981,1388],[1982,1443],[1983,1497],[1984,1519],[1985,1609],[1986,1661],[1987,1705],[1988,1761],[1989,1794],[1990,1826],[1991,1875],[1992,1972],[1993,1967],[1994,1991],[1995,2038],[1996,2081],[1997,2049],[1998,2050],[1999,2073],[2000,2086],[2001,2069],[2002,2093],[2003,2153],[2004,2270],[2005,2396],[2006,2497],[2007,2591],[2008,2598],[2009,2603]],"population":[[1820,13651000],[1870,16090000],[1913,20008000],[1929,22812000],[1941,28169000],[1946,32683000],[1950,39448232],[1951,40382206],[1952,41346560],[1953,42342412],[1954,43372063],[1955,44434445],[1956,45535711],[1957,46679944],[1958,47868932],[1959,49104112],[1960,50386898],[1961,51718581],[1962,53100671],[1963,54524471],[1964,55988385],[1965,57494940],[1966,59046203],[1967,60641899],[1968,62282496],[1969,63969987],[1970,65705964],[1971,67491369],[1972,69325921],[1973,71121085],[1974,72911780],[1975,74711541],[1976,76456121],[1977,78152686],[1978,80051300],[1979,82374302],[1980,85219117],[1981,88417079],[1982,91462088],[1983,94147312],[1984,96489872],[1985,99060352],[1986,102046668],[1987,105186881],[1988,108384014],[1989,111502409],[1990,114578478],[1991,117653767],[1992,120065004],[1993,122487513],[1994,125491984],[1995,128690285],[1996,132146638],[1997,135564834],[1998,139007774],[1999,142461389],[2000,146342958],[2001,150334765],[2002,153403524],[2003,156127453],[2004,159196336],[2005,162419946],[2006,165803560],[2007,169270617],[2008,172730891]],"lifeExpectancy":[[1800,25.9],[1916,25.9],[1921,20.13],[1931,26.75],[1941,31.76],[1945,22.8],[1950,45.63],[1951,45.81],[1952,46.18],[1953,46.55],[1954,46.93],[1955,47.31],[1956,47.7],[1957,48.1],[1958,48.51],[1959,48.94],[1960,49.38],[1961,49.85],[1962,50.34],[1963,50.85],[1964,51.38],[1965,51.91],[1966,52.44],[1967,52.94],[1968,53.41],[1969,53.84],[1970,54.24],[1971,54.63],[1972,55],[1973,55.38],[1974,55.76],[1975,56.13],[1976,56.49],[1977,56.83],[1978,57.15],[1979,57.44],[1980,57.71],[1981,57.97],[1982,58.24],[1983,58.51],[1984,58.8],[1985,59.1],[1986,59.4],[1987,59.7],[1988,59.99],[1989,60.28],[1990,60.56],[1991,60.85],[1992,61.14],[1993,61.46],[1994,61.79],[1995,62.13],[1996,62.49],[1997,62.85],[1998,63.21],[1999,63.56],[2000,63.91],[2001,64.25],[2002,64.58],[2003,64.91],[2004,65.23],[2005,65.55],[2006,65.88],[2007,66.2],[2008,66.52],[2009,66.84]]},{"name":"Sri Lanka","region":"South Asia","income":[[1800,453.6],[1820,453.6],[1850,465.1],[1870,702.32],[1871,682.16],[1872,647.27],[1873,650.3],[1874,639.05],[1875,643.92],[1876,650.63],[1877,654.17],[1878,591.99],[1879,634.77],[1880,685.1],[1881,731.41],[1882,771.49],[1883,776.58],[1884,746.19],[1885,694.79],[1886,668.39],[1887,779.57],[1888,759.89],[1889,743.68],[1890,862.16],[1891,855.2],[1892,867.93],[1893,868.21],[1894,860.58],[1895,894.97],[1896,897.5],[1897,928.02],[1898,963.32],[1899,1017.61],[1900,1064.45],[1901,983.09],[1902,969.58],[1903,1010.89],[1904,1002.44],[1905,972.46],[1906,982],[1907,1017.33],[1908,1007.41],[1909,951.02],[1910,996.49],[1911,957.04],[1912,954.05],[1913,1018.14],[1914,997.97],[1915,937.41],[1916,967.28],[1917,1004.45],[1918,913.55],[1919,962.2],[1920,900.8],[1921,873.58],[1922,896.22],[1923,879.03],[1924,930.21],[1925,979.1],[1926,1044.63],[1927,1040.61],[1928,1036.82],[1929,1101.67],[1930,1043.6],[1931,992.24],[1932,941.2],[1933,948.68],[1934,1039.14],[1935,976.68],[1936,968.98],[1937,1028.34],[1938,1010.76],[1939,978.52],[1940,1031.87],[1941,1053.03],[1942,1091.12],[1943,1059.3],[1944,952.32],[1945,920.42],[1946,866.43],[1947,885.51],[1948,956.2],[1949,989.11],[1950,1033.5],[1951,1066.73],[1952,1083.53],[1953,1072.41],[1954,1070.87],[1955,1104.57],[1956,1084.42],[1957,1072.55],[1958,1076.23],[1959,1063.15],[1960,1072.21],[1961,1064.79],[1962,1074.47],[1963,1069.52],[1964,1094.23],[1965,1102.42],[1966,1064.71],[1967,1135.51],[1968,1192.5],[1969,1213.16],[1970,1244.91],[1971,1210.75],[1972,1213.4],[1973,1240.69],[1974,1261.62],[1975,1270.97],[1976,1287.13],[1977,1348.78],[1978,1407.65],[1979,1471.17],[1980,1525.22],[1981,1595.28],[1982,1648.08],[1983,1709.46],[1984,1771.43],[1985,1821.76],[1986,1885.81],[1987,1876.77],[1988,1898.77],[1989,1922.06],[1990,2019.4],[1991,2088.24],[1992,2153.74],[1993,2271.55],[1994,2365.6],[1995,2464.51],[1996,2529.76],[1997,2664.48],[1998,2762.24],[1999,2853.81],[2000,2997.69],[2001,2925.52],[2002,3015.38],[2003,3166.6],[2004,3310.2],[2005,3481],[2006,3718.72],[2007,3940.58],[2008,4142.53],[2009,4254.13]],"population":[[1800,1213000],[1820,1213000],[1850,2217000],[1870,2786000],[1871,2820000],[1872,2842000],[1873,2863000],[1874,2885000],[1875,2908000],[1876,2930000],[1877,2952000],[1878,2975000],[1879,2998000],[1880,3021000],[1881,3044000],[1882,3073000],[1883,3107000],[1884,3144000],[1885,3170000],[1886,3194000],[1887,3221000],[1888,3261000],[1889,3311000],[1890,3343000],[1891,3404000],[1892,3470000],[1893,3524000],[1894,3584000],[1895,3626000],[1896,3693000],[1897,3752000],[1898,3820000],[1899,3874000],[1900,3912000],[1901,4031000],[1902,4071000],[1903,4156000],[1904,4233000],[1905,4383000],[1906,4458000],[1907,4467000],[1908,4520000],[1909,4585000],[1910,4668000],[1911,4757000],[1912,4784000],[1913,4811000],[1914,4838000],[1915,4905000],[1916,4971000],[1917,5040000],[1918,5109000],[1919,5179000],[1920,5250000],[1921,5304000],[1922,5367000],[1923,5426000],[1924,5452000],[1925,5505000],[1926,5545000],[1927,5591000],[1928,5730000],[1929,5669000],[1930,5707000],[1931,5748000],[1932,5788000],[1933,5825000],[1934,5872000],[1935,5897000],[1936,5943000],[1937,5989000],[1938,6045000],[1939,6095000],[1940,6134000],[1941,6169000],[1942,6191000],[1943,6296000],[1944,6442000],[1945,6650000],[1946,6854000],[1947,7037000],[1948,7244000],[1949,7455000],[1950,7533097],[1951,7752374],[1952,7982342],[1953,8221291],[1954,8457223],[1955,8678721],[1956,8898480],[1957,9128546],[1958,9361755],[1959,9609556],[1960,9879178],[1961,10151799],[1962,10421936],[1963,10686957],[1964,10942373],[1965,11202264],[1966,11469679],[1967,11737396],[1968,12010095],[1969,12275330],[1970,12531522],[1971,12776057],[1972,13016733],[1973,13245615],[1974,13449623],[1975,13660275],[1976,13887354],[1977,14116836],[1978,14370898],[1979,14648618],[1980,14900181],[1981,15151762],[1982,15410151],[1983,15618275],[1984,15810021],[1985,16020699],[1986,16256077],[1987,16495304],[1988,16734716],[1989,16970982],[1990,17192896],[1991,17390974],[1992,17587060],[1993,17825536],[1994,18075443],[1995,18304268],[1996,18509760],[1997,18698655],[1998,18884614],[1999,19064642],[2000,19238575],[2001,19408635],[2002,19576783],[2003,19742439],[2004,19905165],[2005,20064776],[2006,20222240],[2007,20378239],[2008,20532150]],"lifeExpectancy":[[1800,32.6],[1901,32.6],[1911,29.9],[1921,32],[1935,46.3],[1940,45.2],[1946,45.8],[1948,54],[1949,55.5],[1950,51.36],[1951,51.86],[1952,52.81],[1953,53.67],[1954,54.45],[1955,55.14],[1956,55.74],[1957,56.27],[1958,56.73],[1959,57.14],[1960,57.51],[1961,57.87],[1962,58.24],[1963,58.64],[1964,59.09],[1965,59.58],[1966,60.14],[1967,60.72],[1968,61.33],[1969,61.95],[1970,62.57],[1971,63.16],[1972,63.73],[1973,64.26],[1974,64.76],[1975,65.25],[1976,65.73],[1977,66.24],[1978,66.76],[1979,67.3],[1980,67.8],[1981,68.23],[1982,68.55],[1983,68.76],[1984,68.85],[1985,68.87],[1986,68.88],[1987,68.92],[1988,69.03],[1989,69.21],[1990,69.42],[1991,69.6],[1992,69.69],[1993,69.67],[1994,69.56],[1995,69.43],[1996,69.38],[1997,69.48],[1998,69.79],[1999,70.29],[2000,70.95],[2001,71.67],[2002,72.35],[2003,72.93],[2004,73.37],[2005,73.66],[2006,73.85],[2007,73.97],[2008,74.1],[2009,74.24]]},{"name":"Algeria","region":"Middle East & North Africa","income":[[1800,766.25],[1820,765.88],[1870,1272.76],[1913,2070.76],[1950,2429.21],[1951,2397.53],[1952,2449.01],[1953,2436.34],[1954,2557.82],[1955,2572.47],[1956,2764.42],[1957,3013.98],[1958,3059.58],[1959,3548.42],[1960,3716.79],[1961,3202.96],[1962,2550.82],[1963,3146.58],[1964,3214.44],[1965,3327.99],[1966,3070.75],[1967,3246.99],[1968,3519.79],[1969,3747.74],[1970,4003.57],[1971,3559.35],[1972,4182.66],[1973,4194.6],[1974,4320.96],[1975,4489.03],[1976,4642.62],[1977,4910.42],[1978,5373.17],[1979,5682.03],[1980,5610.2],[1981,5573.38],[1982,5745.16],[1983,5853.66],[1984,5986.54],[1985,6107.18],[1986,5876.05],[1987,5681.36],[1988,5415.99],[1989,5457.75],[1990,5244.51],[1991,5061.3],[1992,5023.22],[1993,4800.32],[1994,4652.84],[1995,4732.43],[1996,4824.21],[1997,4797.3],[1998,4965.23],[1999,5048.62],[2000,5098.85],[2001,5156.45],[2002,5288.04],[2003,5576.85],[2004,5790.97],[2005,6011],[2006,5969.05],[2007,6040.89],[2008,6175.1],[2009,6207.17]],"population":[[1820,2689000],[1870,3776000],[1913,5497000],[1950,8892718],[1951,9073304],[1952,9279525],[1953,9531710],[1954,9611093],[1955,9841851],[1956,10057133],[1957,10270856],[1958,10484925],[1959,10696396],[1960,10909294],[1961,11121645],[1962,11000948],[1963,11272878],[1964,11612858],[1965,11963091],[1966,12339140],[1967,12760499],[1968,13146267],[1969,13528304],[1970,13931846],[1971,14335388],[1972,14760787],[1973,15197724],[1974,15653200],[1975,16140252],[1976,16634618],[1977,17152804],[1978,17685768],[1979,18229932],[1980,18806061],[1981,19407036],[1982,20033753],[1983,20680982],[1984,21340546],[1985,22008450],[1986,22642538],[1987,23254956],[1988,23883858],[1989,24500650],[1990,25093154],[1991,25689444],[1992,26298373],[1993,26914091],[1994,27517041],[1995,28082573],[1996,28595073],[1997,29072015],[1998,29521270],[1999,29962690],[2000,30409300],[2001,30851518],[2002,31287142],[2003,31713719],[2004,32129324],[2005,32531853],[2006,32930091],[2007,33333216],[2008,33739635]],"lifeExpectancy":[[1800,28.8],[1923,28.82],[1933,31.22],[1941,33.72],[1943,33.72],[1945,33.72],[1950,42.02],[1951,42.29],[1952,42.82],[1953,43.34],[1954,43.87],[1955,44.38],[1956,44.9],[1957,45.41],[1958,45.92],[1959,46.43],[1960,46.96],[1961,47.49],[1962,48.04],[1963,48.62],[1964,49.21],[1965,49.82],[1966,50.44],[1967,51.06],[1968,51.68],[1969,52.31],[1970,52.93],[1971,53.57],[1972,54.21],[1973,54.88],[1974,55.56],[1975,56.24],[1976,56.93],[1977,57.61],[1978,58.28],[1979,58.95],[1980,59.63],[1981,60.35],[1982,61.13],[1983,61.96],[1984,62.82],[1985,63.69],[1986,64.53],[1987,65.3],[1988,65.97],[1989,66.54],[1990,67],[1991,67.36],[1992,67.67],[1993,67.94],[1994,68.2],[1995,68.47],[1996,68.75],[1997,69.06],[1998,69.38],[1999,69.73],[2000,70.08],[2001,70.44],[2002,70.79],[2003,71.12],[2004,71.42],[2005,71.7],[2006,71.96],[2007,72.2],[2008,72.44],[2009,72.67]]},{"name":"Bahrain","region":"Middle East & North Africa","income":[[1800,808.99],[1820,812.82],[1913,1394.65],[1934,1575.47],[1950,9158.27],[1951,9508.37],[1952,9867.08],[1953,10230.37],[1954,10599.69],[1955,10957.17],[1956,11308.31],[1957,11635.8],[1958,11921.78],[1959,12169.79],[1960,12373.91],[1961,12543.97],[1962,12753.28],[1963,13030.13],[1964,13372.47],[1965,13810.42],[1966,14286.48],[1967,14804.67],[1968,15319.7],[1969,15864.95],[1970,16484.34],[1971,17331.76],[1972,18268.66],[1973,19043.08],[1974,19904.55],[1975,17069.07],[1976,18770.21],[1977,19340.1],[1978,19212.87],[1979,18373.37],[1980,19096.98],[1981,18770.08],[1982,19211.15],[1983,19765.09],[1984,19830.06],[1985,19035.18],[1986,18782.87],[1987,18524.02],[1988,18571.21],[1989,18431.74],[1990,17860.39],[1991,18146.86],[1992,19035.58],[1993,20065.77],[1994,19499.26],[1995,19759.06],[1996,20101.55],[1997,20292.02],[1998,20834.14],[1999,21317.72],[2000,22015.32],[2001,22630.44],[2002,23403.56],[2003,24686.46],[2004,25659.68],[2005,27236],[2006,28478.46],[2007,30173.04],[2008,31391.38],[2009,24226.51]],"population":[[1800,64474],[1820,64474],[1870,64474],[1913,81882],[1950,114840],[1951,117580],[1952,120447],[1953,123469],[1954,126708],[1955,130253],[1956,134207],[1957,138655],[1958,143798],[1959,149769],[1960,156648],[1961,164334],[1962,171863],[1963,179108],[1964,185691],[1965,191378],[1966,196706],[1967,202182],[1968,207811],[1969,213596],[1970,219543],[1971,225375],[1972,230800],[1973,238977],[1974,248343],[1975,258789],[1976,273661],[1977,297410],[1978,322535],[1979,336070],[1980,347568],[1981,363427],[1982,377967],[1983,393022],[1984,408282],[1985,423950],[1986,439556],[1987,454612],[1988,469484],[1989,484791],[1990,500476],[1991,515234],[1992,529491],[1993,543998],[1994,558397],[1995,572639],[1996,586047],[1997,598561],[1998,610767],[1999,622634],[2000,634137],[2001,645361],[2002,656397],[2003,667238],[2004,677886],[2005,688345],[2006,698585],[2007,708573],[2008,718306]],"lifeExpectancy":[[1800,30.3],[1935,30.3],[1950,49.84],[1951,50.11],[1952,50.65],[1953,51.2],[1954,51.77],[1955,52.35],[1956,52.93],[1957,53.53],[1958,54.14],[1959,54.75],[1960,55.36],[1961,55.97],[1962,56.58],[1963,57.19],[1964,57.79],[1965,58.4],[1966,59.02],[1967,59.66],[1968,60.32],[1969,60.99],[1970,61.66],[1971,62.3],[1972,62.89],[1973,63.44],[1974,63.95],[1975,64.43],[1976,64.93],[1977,65.47],[1978,66.06],[1979,66.69],[1980,67.35],[1981,68],[1982,68.61],[1983,69.14],[1984,69.6],[1985,70],[1986,70.34],[1987,70.68],[1988,71.02],[1989,71.37],[1990,71.73],[1991,72.1],[1992,72.46],[1993,72.79],[1994,73.09],[1995,73.36],[1996,73.61],[1997,73.82],[1998,74.02],[1999,74.21],[2000,74.38],[2001,74.56],[2002,74.72],[2003,74.89],[2004,75.06],[2005,75.23],[2006,75.4],[2007,75.57],[2008,75.73],[2009,75.88]]},{"name":"Djibouti","region":"Middle East & North Africa","income":[[1800,380.73],[1820,380.73],[1913,588.26],[1950,2576.1],[1951,2655.01],[1952,2669.53],[1953,2705.48],[1954,2786.75],[1955,2803.23],[1956,2836.84],[1957,2864.97],[1958,2859.64],[1959,2939.93],[1960,3043.2],[1961,3063.21],[1962,3020.99],[1963,3047.41],[1964,3019.73],[1965,3013.92],[1966,3025.89],[1967,3020.05],[1968,2999.58],[1969,2992.7],[1970,3554.43],[1971,3679.34],[1972,3694.21],[1973,3753.6],[1974,3573.21],[1975,3548.19],[1976,3700.95],[1977,3081.76],[1978,2961.74],[1979,2898.73],[1980,2853.84],[1981,2875.04],[1982,2879.47],[1983,2821.91],[1984,3094.98],[1985,3020.75],[1986,2949.02],[1987,2880.1],[1988,2742.92],[1989,2580.68],[1990,2487.04],[1991,2438.6],[1992,2377.16],[1993,2231.57],[1994,2159.36],[1995,2052.06],[1996,1927.09],[1997,1895.02],[1998,1875.74],[1999,1901.12],[2000,1894.04],[2001,1899.26],[2002,1908.26],[2003,1931.6],[2004,1942.69],[2005,1964],[2006,2008.4],[2007,2058.87],[2008,2125.61],[2009,2176.79]],"population":[[1800,22848],[1820,22848],[1950,60036],[1951,61572],[1952,63149],[1953,64768],[1954,66431],[1955,68137],[1956,69892],[1957,71851],[1958,73986],[1959,76174],[1960,78417],[1961,83913],[1962,89898],[1963,96376],[1964,103354],[1965,110840],[1966,118886],[1967,127617],[1968,137047],[1969,147181],[1970,158034],[1971,168600],[1972,178848],[1973,188750],[1974,198279],[1975,207959],[1976,217219],[1977,228694],[1978,247883],[1979,263409],[1980,279149],[1981,293659],[1982,305991],[1983,316123],[1984,289431],[1985,296544],[1986,303756],[1987,311025],[1988,326580],[1989,349928],[1990,366088],[1991,375227],[1992,384156],[1993,393258],[1994,402548],[1995,409366],[1996,413627],[1997,417908],[1998,422202],[1999,426507],[2000,430822],[2001,437778],[2002,447416],[2003,457130],[2004,466900],[2005,476703],[2006,486530],[2007,496374],[2008,506221]],"lifeExpectancy":[[1800,29.9],[1945,29.9],[1950,33.76],[1951,34.03],[1952,34.56],[1953,35.08],[1954,35.59],[1955,36.1],[1956,36.59],[1957,37.08],[1958,37.57],[1959,38.05],[1960,38.52],[1961,38.99],[1962,39.47],[1963,39.94],[1964,40.42],[1965,40.89],[1966,41.37],[1967,41.84],[1968,42.31],[1969,42.78],[1970,43.24],[1971,43.69],[1972,44.15],[1973,44.59],[1974,45.03],[1975,45.47],[1976,45.9],[1977,46.33],[1978,46.75],[1979,47.17],[1980,47.58],[1981,47.98],[1982,48.35],[1983,48.7],[1984,49.04],[1985,49.35],[1986,49.65],[1987,49.94],[1988,50.23],[1989,50.52],[1990,50.82],[1991,51.14],[1992,51.47],[1993,51.81],[1994,52.16],[1995,52.5],[1996,52.8],[1997,53.06],[1998,53.27],[1999,53.44],[2000,53.57],[2001,53.7],[2002,53.83],[2003,54],[2004,54.2],[2005,54.46],[2006,54.75],[2007,55.08],[2008,55.42],[2009,55.78]]},{"name":"Iraq","region":"Middle East & North Africa","income":[[1800,700],[1820,700],[1821,706.73],[1822,713.53],[1823,720.39],[1824,727.32],[1825,734.31],[1826,741.37],[1827,748.5],[1828,755.7],[1829,762.97],[1830,770.3],[1831,777.71],[1832,785.19],[1833,792.74],[1834,800.36],[1835,808.06],[1836,815.83],[1837,823.68],[1838,831.6],[1839,839.6],[1840,847.67],[1841,855.82],[1842,864.05],[1843,872.36],[1844,880.75],[1845,889.22],[1846,897.77],[1847,906.4],[1848,915.12],[1849,923.92],[1850,932.8],[1851,941.77],[1852,950.83],[1853,959.98],[1854,969.21],[1855,978.53],[1856,987.94],[1857,997.44],[1858,1007.03],[1859,1016.71],[1860,1026.49],[1861,1036.36],[1862,1046.33],[1863,1056.39],[1864,1066.55],[1865,1076.8],[1866,1087.16],[1867,1097.61],[1868,1108.17],[1869,1118.83],[1870,1129.59],[1871,1144.63],[1872,1159.87],[1873,1175.32],[1874,1190.97],[1875,1206.84],[1876,1222.91],[1877,1239.2],[1878,1255.7],[1879,1272.42],[1880,1289.37],[1881,1306.54],[1882,1323.94],[1883,1341.58],[1884,1359.44],[1885,1377.55],[1886,1395.9],[1887,1414.49],[1888,1433.33],[1889,1452.42],[1890,1471.76],[1891,1491.36],[1892,1511.22],[1893,1531.35],[1894,1551.74],[1895,1572.41],[1896,1593.35],[1897,1614.57],[1898,1636.08],[1899,1657.87],[1900,1679.95],[1901,1702.32],[1902,1724.99],[1903,1747.97],[1904,1771.25],[1905,1794.84],[1906,1818.74],[1907,1842.96],[1908,1867.51],[1909,1892.38],[1910,1917.58],[1911,1943.12],[1912,1969],[1913,1995.22],[1914,2023.23],[1915,2051.63],[1916,2080.43],[1917,2109.64],[1918,2139.25],[1919,2169.28],[1920,2199.73],[1921,2230.61],[1922,2261.93],[1923,2293.68],[1924,2325.88],[1925,2358.52],[1926,2391.63],[1927,2425.21],[1928,2459.25],[1929,2493.77],[1930,2528.78],[1931,2564.28],[1932,2600.27],[1933,2636.77],[1934,2673.79],[1935,2711.32],[1936,2749.38],[1937,2787.98],[1938,2827.11],[1939,2866.8],[1940,2907.04],[1941,2947.85],[1942,2989.23],[1943,3031.19],[1944,3073.74],[1945,3116.89],[1946,3160.64],[1947,3205.01],[1948,3250],[1949,3295.62],[1950,3341.89],[1951,3562.05],[1952,3857.31],[1953,5305.47],[1954,6172.51],[1955,5791.49],[1956,6054.16],[1957,5859.83],[1958,6388.15],[1959,6500.84],[1960,7086.01],[1961,7714.63],[1962,7902.87],[1963,7565.25],[1964,8253.13],[1965,8758.22],[1966,8969.67],[1967,8521.87],[1968,9761.33],[1969,9816.71],[1970,9511.46],[1971,9823.3],[1972,9202.01],[1973,10452.87],[1974,10711.67],[1975,12152.33],[1976,14224.37],[1977,14215.14],[1978,16303],[1979,19452.15],[1980,18465.74],[1981,14677.56],[1982,14150.44],[1983,12567.34],[1984,12243.9],[1985,11706.94],[1986,11252.93],[1987,11429.75],[1988,8801.59],[1989,7824.67],[1990,7525.13],[1991,2913.94],[1992,3703.06],[1993,3613.88],[1994,3350.26],[1995,2973.04],[1996,3264.74],[1997,3062.95],[1998,3438.69],[1999,3643.97],[2000,3951.74],[2001,4209.66],[2002,4402.9],[2003,3366.63],[2004,3293.16],[2005,3200],[2006,3299.56],[2007,3254.5],[2008,3467.12],[2009,3518.18]],"population":[[1820,1093000],[1870,1580000],[1913,2613000],[1950,5163443],[1951,5299983],[1952,5441766],[1953,5589018],[1954,5742552],[1955,5903253],[1956,6073493],[1957,6248643],[1958,6433104],[1959,6624713],[1960,6822030],[1961,7026278],[1962,7240260],[1963,7468223],[1964,7711071],[1965,7970746],[1966,8240451],[1967,8519282],[1968,8807547],[1969,9105567],[1970,9413671],[1971,9732199],[1972,10061506],[1973,10401956],[1974,10753925],[1975,11117804],[1976,11493995],[1977,11882916],[1978,12317137],[1979,12768376],[1980,13232839],[1981,13703103],[1982,14173318],[1983,14652218],[1984,15160546],[1985,15693620],[1986,16247340],[1987,16543189],[1988,17038084],[1989,17568414],[1990,18134702],[1991,17471586],[1992,17861905],[1993,18404698],[1994,18969505],[1995,19557247],[1996,20161940],[1997,20775703],[1998,21397764],[1999,22031349],[2000,22675617],[2001,23331985],[2002,24001816],[2003,24683313],[2004,25374691],[2005,26074906],[2006,26783383],[2007,27499638],[2008,28221181]],"lifeExpectancy":[[1800,31.2],[1940,31.2],[1950,40.04],[1951,40.62],[1952,41.77],[1953,42.89],[1954,44],[1955,45.08],[1956,46.13],[1957,47.17],[1958,48.18],[1959,49.17],[1960,50.13],[1961,51.07],[1962,51.99],[1963,52.87],[1964,53.73],[1965,54.54],[1966,55.32],[1967,56.06],[1968,56.75],[1969,57.39],[1970,57.98],[1971,58.5],[1972,58.95],[1973,59.35],[1974,59.68],[1975,59.97],[1976,60.21],[1977,60.42],[1978,60.61],[1979,60.81],[1980,61],[1981,61.21],[1982,61.42],[1983,61.66],[1984,61.92],[1985,62.21],[1986,62.54],[1987,62.91],[1988,63.33],[1989,63.79],[1990,64.36],[1991,65.06],[1992,65.9],[1993,66.85],[1994,67.88],[1995,68.89],[1996,69.8],[1997,70.54],[1998,71.04],[1999,71.28],[2000,71.24],[2001,70.92],[2002,70.4],[2003,69.77],[2004,69.1],[2005,68.5],[2006,68.06],[2007,67.84],[2008,67.86],[2009,68.1]]},{"name":"Israel","region":"Middle East & North Africa","income":[[1800,882.54],[1820,886.71],[1913,1521.43],[1950,3800.93],[1951,4261.85],[1952,4086.52],[1953,3926.39],[1954,4552.49],[1955,4993.23],[1956,5208.06],[1957,5385.28],[1958,5543.32],[1959,6073.06],[1960,6291.25],[1961,6740.54],[1962,7105.63],[1963,7546.03],[1964,7981.81],[1965,8462.28],[1966,8351.32],[1967,8393.74],[1968,9488.73],[1969,10418.87],[1970,10928.84],[1971,11752.59],[1972,12786.93],[1973,13012.38],[1974,13525.4],[1975,13690.86],[1976,13587.56],[1977,13306.62],[1978,13659.85],[1979,14185.86],[1980,14819.26],[1981,15322.59],[1982,15367.03],[1983,15630.64],[1984,15462.57],[1985,15722.47],[1986,16227.05],[1987,17122.48],[1988,17187.12],[1989,17048.77],[1990,17495.15],[1991,17543.46],[1992,18051.52],[1993,18202.42],[1994,19299.93],[1995,20145.03],[1996,20644.52],[1997,20896.61],[1998,21113.01],[1999,21332.8],[2000,22834.93],[2001,22377.18],[2002,21905.6],[2003,22090.73],[2004,22930.28],[2005,23846],[2006,24667.09],[2007,25392],[2008,25839.31],[2009,25463.69]],"population":[[1800,209954],[1850,209954],[1860,227862],[1877,272230],[1878,275487],[1879,278796],[1880,282159],[1881,285577],[1882,289050],[1883,292581],[1884,296171],[1885,299820],[1886,303529],[1887,307301],[1888,311138],[1889,314897],[1890,318717],[1891,322595],[1892,326535],[1893,330540],[1894,334700],[1895,338923],[1896,343302],[1897,347747],[1898,352496],[1899,357320],[1900,362220],[1901,367198],[1902,372255],[1903,377392],[1904,382612],[1905,387914],[1906,393303],[1907,398779],[1908,404344],[1909,409998],[1910,415745],[1911,427524],[1912,433559],[1913,439694],[1914,445931],[1918,417858],[1922,455836],[1931,588805],[1932,611936],[1933,649925],[1934,689309],[1935,744301],[1936,775728],[1937,797281],[1938,816723],[1939,860556],[1940,889866],[1941,915868],[1942,940120],[1943,971687],[1944,1005926],[1945,1043684],[1946,1084877],[1950,1286131],[1951,1489998],[1952,1620914],[1953,1667098],[1954,1711647],[1955,1772032],[1956,1850059],[1957,1944401],[1958,2024772],[1959,2081592],[1960,2141495],[1961,2217050],[1962,2310904],[1963,2406662],[1964,2498199],[1965,2578184],[1966,2641123],[1967,2693585],[1968,2746986],[1969,2817051],[1970,2903434],[1971,2996919],[1972,3095893],[1973,3197411],[1974,3285761],[1975,3354242],[1976,3423635],[1977,3495918],[1978,3569780],[1979,3653480],[1980,3737473],[1981,3801338],[1982,3858421],[1983,3926893],[1984,4005301],[1985,4074965],[1986,4137141],[1987,4203148],[1988,4271530],[1989,4344042],[1990,4512068],[1991,4756279],[1992,4936550],[1993,5062136],[1994,5184895],[1995,5305120],[1996,5420065],[1997,5531387],[1998,5638981],[1999,5742719],[2000,5842454],[2001,5938093],[2002,6029529],[2003,6116533],[2004,6199008],[2005,6276883],[2006,6352117],[2007,6426679],[2008,6500389]],"lifeExpectancy":[[1950,64.17],[1951,64.5],[1952,65.13],[1953,65.72],[1954,66.26],[1955,66.76],[1956,67.22],[1957,67.64],[1958,68.03],[1959,68.38],[1960,68.7],[1961,69.01],[1962,69.3],[1963,69.58],[1964,69.86],[1965,70.12],[1966,70.37],[1967,70.6],[1968,70.81],[1969,71],[1970,71.19],[1971,71.37],[1972,71.57],[1973,71.79],[1974,72.04],[1975,72.31],[1976,72.6],[1977,72.9],[1978,73.19],[1979,73.49],[1980,73.77],[1981,74.05],[1982,74.31],[1983,74.82],[1984,75.11],[1985,75.44],[1986,75.27],[1987,75.65],[1988,76.01],[1989,76.61],[1990,77.08],[1991,76.93],[1992,76.8],[1993,77.39],[1994,77.64],[1995,77.62],[1996,78.23],[1997,78.12],[1998,78.29],[1999,78.57],[2000,78.75],[2001,79.16],[2002,79.15],[2003,79.5],[2004,79.96],[2005,80.02],[2006,80.37],[2007,80.46],[2008,80.84],[2009,81]]},{"name":"Jordan","region":"Middle East & North Africa","income":[[1800,528.69],[1820,528.69],[1870,643.58],[1913,896.29],[1950,1490.67],[1951,1519.55],[1952,1546.91],[1953,1574.41],[1954,1601.52],[1955,1456.61],[1956,1917.53],[1957,1886.08],[1958,1989.85],[1959,2050.05],[1960,2088.37],[1961,2406.72],[1962,2348.01],[1963,2374.59],[1964,2671.52],[1965,2853.28],[1966,2812.02],[1967,2741.8],[1968,2396.39],[1969,2485.4],[1970,2147.05],[1971,2120.34],[1972,2110.86],[1973,2140.76],[1974,2246.18],[1975,2315.09],[1976,2775.3],[1977,2852.35],[1978,3332.55],[1979,3512.68],[1980,4015.32],[1981,4035.5],[1982,4161.42],[1983,4083.58],[1984,4272.23],[1985,4261.3],[1986,4483.23],[1987,4448.68],[1988,4257.36],[1989,3677.47],[1990,3399.1],[1991,3124.26],[1992,3431.59],[1993,3524.17],[1994,3610.78],[1995,3732.14],[1996,3668.74],[1997,3645.38],[1998,3624.61],[1999,3626.38],[2000,3664.56],[2001,3742.83],[2002,3844.92],[2003,3894.25],[2004,4115.51],[2005,4294],[2006,4531.28],[2007,4829.01],[2008,5086.65],[2009,5109.39]],"population":[[1800,217000],[1820,217000],[1870,266000],[1913,348000],[1950,561254],[1951,584172],[1952,607914],[1953,632897],[1954,659275],[1955,686955],[1956,715991],[1957,746559],[1958,778683],[1959,812544],[1960,848515],[1961,886800],[1962,933559],[1963,974549],[1964,1017180],[1965,1061463],[1966,1107384],[1967,1255058],[1968,1382539],[1969,1453541],[1970,1502959],[1971,1556226],[1972,1613551],[1973,1674258],[1974,1737593],[1975,1802960],[1976,1869657],[1977,1937652],[1978,2006908],[1979,2077386],[1980,2162807],[1981,2253579],[1982,2347031],[1983,2439504],[1984,2532511],[1985,2627750],[1986,2724221],[1987,2820042],[1988,2916505],[1989,3018990],[1990,3262054],[1991,3630633],[1992,3867409],[1993,3984238],[1994,4082087],[1995,4201514],[1996,4363534],[1997,4526235],[1998,4685946],[1999,4842831],[2000,4998564],[2001,5153378],[2002,5307470],[2003,5460265],[2004,5611202],[2005,5759732],[2006,5906760],[2007,6053193],[2008,6198677]],"lifeExpectancy":[[1800,31.7],[1935,31.7],[1950,42.12],[1951,42.38],[1952,42.91],[1953,43.42],[1954,43.93],[1955,44.42],[1956,44.91],[1957,45.39],[1958,45.86],[1959,46.33],[1960,46.82],[1961,47.32],[1962,47.84],[1963,48.41],[1964,49.02],[1965,49.69],[1966,50.43],[1967,51.24],[1968,52.11],[1969,53.03],[1970,54],[1971,55],[1972,56.03],[1973,57.05],[1974,58.05],[1975,59],[1976,59.89],[1977,60.69],[1978,61.42],[1979,62.06],[1980,62.63],[1981,63.13],[1982,63.58],[1983,64.01],[1984,64.43],[1985,64.85],[1986,65.27],[1987,65.69],[1988,66.12],[1989,66.55],[1990,66.97],[1991,67.4],[1992,67.81],[1993,68.2],[1994,68.58],[1995,68.94],[1996,69.29],[1997,69.62],[1998,69.94],[1999,70.25],[2000,70.55],[2001,70.84],[2002,71.12],[2003,71.4],[2004,71.66],[2005,71.92],[2006,72.17],[2007,72.41],[2008,72.65],[2009,72.88]]},{"name":"Kuwait","region":"Middle East & North Africa","income":[[1800,661.9],[1820,665.03],[1913,1141.07],[1938,1319.3],[1950,104248.05],[1951,107493.38],[1952,108382.35],[1953,113211.88],[1954,119849.29],[1955,116444.4],[1956,118681.3],[1957,113523.13],[1958,107961.27],[1959,106738.9],[1960,104014.69],[1961,94263.18],[1962,95458.11],[1963,91444.07],[1964,91341.83],[1965,84952.11],[1966,86817.71],[1967,80894.88],[1968,80502.14],[1969,75675.71],[1970,110805.23],[1971,111654.83],[1972,109347.87],[1973,96344.51],[1974,79178.58],[1975,65562.34],[1976,65578.2],[1977,59265.48],[1978,59706.33],[1979,63804.61],[1980,47907.19],[1981,37146.48],[1982,31354.04],[1983,32366.58],[1984,32575.65],[1985,29473.68],[1986,30593.24],[1987,28118.43],[1988,27895.53],[1989,28764.51],[1990,22095.96],[1991,29268.87],[1992,34932.92],[1993,44804.87],[1994,46467.09],[1995,44959.08],[1996,41620.24],[1997,40300.62],[1998,38056.53],[1999,36011.27],[2000,36397.96],[2001,35249.64],[2002,35110.11],[2003,39560.79],[2004,42275.64],[2005,44947],[2006,44411.38],[2007,43774.85],[2008,44783.08],[2009,42443.53]],"population":[[1800,81280],[1820,81280],[1870,81280],[1913,103226],[1950,144774],[1951,152197],[1952,160000],[1953,168372],[1954,177181],[1955,186639],[1956,196601],[1957,212846],[1958,234855],[1959,262006],[1960,292229],[1961,325342],[1962,358266],[1963,394128],[1964,433233],[1965,476123],[1966,523259],[1967,575003],[1968,631802],[1969,690445],[1970,747502],[1971,793314],[1972,841934],[1973,893534],[1974,948296],[1975,1006892],[1976,1071549],[1977,1140357],[1978,1213584],[1979,1291514],[1980,1369769],[1981,1432188],[1982,1497494],[1983,1565822],[1984,1637314],[1985,1732824],[1986,1811489],[1987,1891487],[1988,1973148],[1989,2056779],[1990,2142011],[1991,954071],[1992,1418095],[1993,1483773],[1994,1551427],[1995,1620808],[1996,1692893],[1997,1765345],[1998,1835863],[1999,1905246],[2000,1973572],[2001,2041961],[2002,2111561],[2003,2183161],[2004,2257549],[2005,2335648],[2006,2418393],[2007,2505559],[2008,2596799]],"lifeExpectancy":[[1800,26],[1908,26],[1939,26],[1950,54.5],[1951,54.78],[1952,55.33],[1953,55.85],[1954,56.35],[1955,56.83],[1956,57.29],[1957,57.74],[1958,58.19],[1959,58.65],[1960,59.14],[1961,59.68],[1962,60.29],[1963,60.97],[1964,61.72],[1965,62.52],[1966,63.35],[1967,64.18],[1968,64.97],[1969,65.71],[1970,66.38],[1971,66.96],[1972,67.46],[1973,67.9],[1974,68.29],[1975,68.63],[1976,68.94],[1977,69.24],[1978,69.55],[1979,69.88],[1980,70.25],[1981,70.68],[1982,71.17],[1983,71.7],[1984,72.26],[1985,72.82],[1986,73.35],[1987,73.83],[1988,74.24],[1989,74.57],[1990,74.82],[1991,75.02],[1992,75.19],[1993,75.35],[1994,75.52],[1995,75.7],[1996,75.88],[1997,76.06],[1998,76.23],[1999,76.4],[2000,76.55],[2001,76.7],[2002,76.84],[2003,76.98],[2004,77.12],[2005,77.26],[2006,77.39],[2007,77.53],[2008,77.66],[2009,77.79]]},{"name":"Lebanon","region":"Middle East & North Africa","income":[[1800,932],[1820,932],[1870,1416.26],[1913,2612.58],[1950,5318.45],[1951,4659.46],[1952,4834.8],[1953,5435.23],[1954,6091.8],[1955,6426.76],[1956,6129.26],[1957,6089.79],[1958,5102.57],[1959,5404.77],[1960,5416.84],[1961,5637.19],[1962,5714.56],[1963,5622.87],[1964,5814.82],[1965,6229.76],[1966,6477.88],[1967,6006.98],[1968,6583.23],[1969,6555.04],[1970,6827.41],[1971,7047.88],[1972,7486.38],[1973,7460.56],[1974,8310.09],[1975,8238.75],[1976,8415.07],[1977,8659.7],[1978,8921.68],[1979,8462.01],[1980,8532.76],[1981,8168.77],[1982,7640.52],[1983,7582.8],[1984,7767.38],[1985,7991.15],[1986,7663.71],[1987,5377.09],[1988,4896.81],[1989,4901.33],[1990,4849.2],[1991,6627.25],[1992,6890.81],[1993,7323.93],[1994,7844.05],[1995,8271.72],[1996,8509.88],[1997,8754.96],[1998,8920.81],[1999,8754.7],[2000,8809.99],[2001,9110.35],[2002,9313.94],[2003,9598.46],[2004,10207.45],[2005,10212],[2006,10256.98],[2007,11026.25],[2008,11864.38],[2009,12766.21]],"population":[[1800,332000],[1820,332000],[1870,476000],[1913,649000],[1950,1364030],[1951,1401246],[1952,1439529],[1953,1478915],[1954,1519439],[1955,1560985],[1956,1603579],[1957,1647412],[1958,1692357],[1959,1738617],[1960,1786235],[1961,1835620],[1962,1886848],[1963,1940191],[1964,1996143],[1965,2057945],[1966,2121579],[1967,2186894],[1968,2253719],[1969,2320495],[1970,2383029],[1971,2529267],[1972,2680018],[1973,2825318],[1974,2987566],[1975,3098159],[1976,3118590],[1977,3115787],[1978,3109385],[1979,3099426],[1980,3085876],[1981,3081499],[1982,3086876],[1983,3089792],[1984,3090257],[1985,3088235],[1986,3086848],[1987,3089353],[1988,3095949],[1989,3106800],[1990,3147267],[1991,3193208],[1992,3219994],[1993,3252469],[1994,3290707],[1995,3334733],[1996,3382135],[1997,3430388],[1998,3479269],[1999,3528559],[2000,3578036],[2001,3627774],[2002,3677780],[2003,3727703],[2004,3777218],[2005,3826018],[2006,3874050],[2007,3921278],[2008,3967467]],"lifeExpectancy":[[1800,29.7],[1940,29.7],[1950,54.28],[1951,54.71],[1952,55.55],[1953,56.36],[1954,57.13],[1955,57.86],[1956,58.55],[1957,59.21],[1958,59.82],[1959,60.4],[1960,60.93],[1961,61.43],[1962,61.89],[1963,62.31],[1964,62.7],[1965,63.07],[1966,63.42],[1967,63.76],[1968,64.1],[1969,64.42],[1970,64.73],[1971,65.02],[1972,65.27],[1973,65.48],[1974,65.66],[1975,65.81],[1976,65.95],[1977,66.08],[1978,66.21],[1979,66.36],[1980,66.52],[1981,66.69],[1982,66.87],[1983,67.05],[1984,67.23],[1985,67.42],[1986,67.62],[1987,67.84],[1988,68.08],[1989,68.34],[1990,68.61],[1991,68.88],[1992,69.14],[1993,69.39],[1994,69.61],[1995,69.82],[1996,70.01],[1997,70.18],[1998,70.34],[1999,70.5],[2000,70.65],[2001,70.8],[2002,70.97],[2003,71.14],[2004,71.31],[2005,71.5],[2006,71.69],[2007,71.88],[2008,72.08],[2009,72.26]]},{"name":"Libya","region":"Middle East & North Africa","income":[[1800,570],[1820,570],[1950,2084.28],[1951,2270.25],[1952,2387.55],[1953,2375.34],[1954,2313.67],[1955,2844.84],[1956,3385.73],[1957,3448.28],[1958,3705.67],[1959,3901.97],[1960,4902.71],[1961,5237.93],[1962,6757.03],[1963,8862.05],[1964,12161.38],[1965,15128.28],[1966,17346.19],[1967,18772.75],[1968,24313.51],[1969,26443.62],[1970,26914.43],[1971,24603.66],[1972,21011.5],[1973,20259.77],[1974,16512.38],[1975,17095.75],[1976,20471.58],[1977,21951.21],[1978,22311.86],[1979,24378.58],[1980,23661.27],[1981,18559.06],[1982,17364.28],[1983,16643.32],[1984,14874.49],[1985,13502.85],[1986,12367.27],[1987,11770.59],[1988,11617.21],[1989,11476.56],[1990,11069.61],[1991,10228.75],[1992,9640.14],[1993,9056.06],[1994,8810.1],[1995,8737.85],[1996,9051.46],[1997,9467.45],[1998,8998.07],[1999,8966.93],[2000,9139.68],[2001,9539.9],[2002,9534.68],[2003,9954.11],[2004,10304.93],[2005,10804],[2006,11305.18],[2007,11916.54],[2008,12079.02],[2009,12051.62]],"population":[[1820,538000],[1950,961305],[1951,989591],[1952,1019729],[1953,1051835],[1954,1086038],[1955,1122475],[1956,1160947],[1957,1201578],[1958,1244627],[1959,1290121],[1960,1337947],[1961,1388517],[1962,1441863],[1963,1498607],[1964,1560361],[1965,1623770],[1966,1693925],[1967,1759224],[1968,1833726],[1969,1922974],[1970,1999162],[1971,2077381],[1972,2183877],[1973,2312369],[1974,2451375],[1975,2569606],[1976,2666160],[1977,2721783],[1978,2796747],[1979,2928575],[1980,3065365],[1981,3204071],[1982,3344074],[1983,3484531],[1984,3624920],[1985,3675422],[1986,3699538],[1987,3799845],[1988,3913314],[1989,4026847],[1990,4139825],[1991,4252354],[1992,4364501],[1993,4475679],[1994,4585017],[1995,4654252],[1996,4686329],[1997,4759670],[1998,4874638],[1999,4993414],[2000,5115450],[2001,5240599],[2002,5368585],[2003,5499074],[2004,5631585],[2005,5765563],[2006,5900754],[2007,6036914],[2008,6173579]],"lifeExpectancy":[[1800,33],[1940,33],[1950,41.69],[1951,41.95],[1952,42.47],[1953,42.98],[1954,43.5],[1955,44.01],[1956,44.53],[1957,45.04],[1958,45.55],[1959,46.06],[1960,46.56],[1961,47.06],[1962,47.55],[1963,48.04],[1964,48.53],[1965,49.01],[1966,49.47],[1967,49.92],[1968,50.37],[1969,50.83],[1970,51.33],[1971,51.89],[1972,52.52],[1973,53.25],[1974,54.06],[1975,54.94],[1976,55.89],[1977,56.88],[1978,57.87],[1979,58.86],[1980,59.83],[1981,60.79],[1982,61.73],[1983,62.67],[1984,63.57],[1985,64.44],[1986,65.25],[1987,65.99],[1988,66.67],[1989,67.27],[1990,67.83],[1991,68.35],[1992,68.86],[1993,69.37],[1994,69.88],[1995,70.38],[1996,70.86],[1997,71.29],[1998,71.67],[1999,71.98],[2000,72.25],[2001,72.49],[2002,72.7],[2003,72.92],[2004,73.14],[2005,73.36],[2006,73.6],[2007,73.83],[2008,74.06],[2009,74.28]]},{"name":"Morocco","region":"Middle East & North Africa","income":[[1800,497.25],[1820,497.17],[1870,651.13],[1913,821.37],[1950,1683.1],[1951,1686.17],[1952,1688.2],[1953,1698.28],[1954,1707.29],[1955,1715.26],[1956,1678.43],[1957,1642],[1958,1606.28],[1959,1570.98],[1960,1536.62],[1961,1551.35],[1962,1566.35],[1963,1581.36],[1964,1596.54],[1965,1612.12],[1966,1660.76],[1967,1711.04],[1968,1762.62],[1969,1815.24],[1970,1869.14],[1971,1924.99],[1972,1930.19],[1973,1959.41],[1974,2024.8],[1975,2117.48],[1976,2304.26],[1977,2370.62],[1978,2392.59],[1979,2453.98],[1980,2627.7],[1981,2508.85],[1982,2702.62],[1983,2616.83],[1984,2655.21],[1985,2748.96],[1986,2889.61],[1987,2755.05],[1988,2963.85],[1989,2960.35],[1990,3002.1],[1991,3138.3],[1992,2948.05],[1993,2857.36],[1994,3090.03],[1995,2828.67],[1996,3112.23],[1997,2982.1],[1998,3156.79],[1999,3097.02],[2000,3073.43],[2001,3211.29],[2002,3258.5],[2003,3400.37],[2004,3519.46],[2005,3547],[2006,3774.77],[2007,3832.92],[2008,3990.75],[2009,4162.93]],"population":[[1820,2689000],[1870,3776000],[1913,5111000],[1950,9343384],[1951,9633621],[1952,9939217],[1953,10205766],[1954,10486500],[1955,10781677],[1956,11088510],[1957,11406350],[1958,11734866],[1959,12074375],[1960,12423434],[1961,12736342],[1962,13056604],[1963,13385360],[1964,13722483],[1965,14066154],[1966,14414636],[1967,14770296],[1968,15137266],[1969,15517155],[1970,15909275],[1971,16313391],[1972,16660670],[1973,16998378],[1974,17335236],[1975,17687376],[1976,18042963],[1977,18396941],[1978,18758283],[1979,19125959],[1980,19487272],[1981,19846221],[1982,20198730],[1983,20740299],[1984,21295943],[1985,21857410],[1986,22421628],[1987,22987397],[1988,23554959],[1989,24122368],[1990,24685960],[1991,25244056],[1992,25798239],[1993,26350819],[1994,26900833],[1995,27446860],[1996,27989535],[1997,28529501],[1998,29065648],[1999,29596788],[2000,30122350],[2001,30645305],[2002,31167783],[2003,31689265],[2004,32209101],[2005,32725847],[2006,33241259],[2007,33757175],[2008,34272968]],"lifeExpectancy":[[1800,33.1],[1940,33.1],[1950,41.85],[1951,42.1],[1952,42.62],[1953,43.13],[1954,43.64],[1955,44.16],[1956,44.67],[1957,45.17],[1958,45.68],[1959,46.18],[1960,46.68],[1961,47.18],[1962,47.67],[1963,48.16],[1964,48.64],[1965,49.13],[1966,49.61],[1967,50.09],[1968,50.57],[1969,51.06],[1970,51.56],[1971,52.06],[1972,52.57],[1973,53.09],[1974,53.63],[1975,54.19],[1976,54.8],[1977,55.46],[1978,56.17],[1979,56.91],[1980,57.68],[1981,58.45],[1982,59.21],[1983,59.93],[1984,60.61],[1985,61.25],[1986,61.86],[1987,62.44],[1988,63],[1989,63.55],[1990,64.1],[1991,64.63],[1992,65.15],[1993,65.64],[1994,66.12],[1995,66.59],[1996,67.04],[1997,67.47],[1998,67.89],[1999,68.3],[2000,68.69],[2001,69.08],[2002,69.44],[2003,69.79],[2004,70.13],[2005,70.44],[2006,70.75],[2007,71.03],[2008,71.31],[2009,71.58]]},{"name":"Oman","region":"Middle East & North Africa","income":[[1800,882.54],[1820,886.71],[1913,1521.43],[1950,1681.63],[1951,1753.06],[1952,1828.23],[1953,1906.94],[1954,1986.07],[1955,2068.1],[1956,2155.84],[1957,2242.75],[1958,2337.97],[1959,2429.59],[1960,2522.63],[1961,2491.42],[1962,2924.64],[1963,2975.73],[1964,2902.51],[1965,2842.57],[1966,2914],[1967,4720.94],[1968,8348.98],[1969,10208.31],[1970,10251.63],[1971,10029.3],[1972,10618.04],[1973,8849.08],[1974,9557.8],[1975,11516.25],[1976,12407.01],[1977,11848.34],[1978,11026.71],[1979,10914.09],[1980,10989.43],[1981,12206.78],[1982,12954.79],[1983,14428.57],[1984,16128.07],[1985,17663.75],[1986,17386.29],[1987,18115.22],[1988,18002.58],[1989,18103.04],[1990,17485.61],[1991,17828.04],[1992,18616.71],[1993,19021.94],[1994,19083.44],[1995,19325.59],[1996,19207.86],[1997,19702.06],[1998,19545.61],[1999,18843.38],[2000,19204.29],[2001,19945.39],[2002,19774.84],[2003,19497.67],[2004,19870.6],[2005,20334],[2006,20984.34],[2007,21239.98],[2008,22789.62],[2009,22804.85]],"population":[[1800,318000],[1820,318000],[1870,367000],[1913,444000],[1950,488588],[1951,498207],[1952,507833],[1953,517464],[1954,528286],[1955,539115],[1956,549950],[1957,561977],[1958,572826],[1959,586055],[1960,599292],[1961,613723],[1962,628164],[1963,644990],[1964,661826],[1965,678672],[1966,696718],[1967,714775],[1968,735222],[1969,755682],[1970,778536],[1971,802594],[1972,829050],[1973,856714],[1974,884395],[1975,913285],[1976,956453],[1977,1004533],[1978,1058744],[1979,1115515],[1980,1174857],[1981,1237945],[1982,1301048],[1983,1363189],[1984,1423521],[1985,1481587],[1986,1537697],[1987,1593882],[1988,1651822],[1989,1711642],[1990,1772974],[1991,1843255],[1992,1915208],[1993,1988746],[1994,2058553],[1995,2130934],[1996,2205958],[1997,2283635],[1998,2364049],[1999,2447279],[2000,2533389],[2001,2622198],[2002,2713462],[2003,2807125],[2004,2903165],[2005,3001583],[2006,3102229],[2007,3204897],[2008,3309440]],"lifeExpectancy":[[1800,32.3],[1945,32.3],[1950,36.72],[1951,36.92],[1952,37.34],[1953,37.78],[1954,38.24],[1955,38.73],[1956,39.24],[1957,39.78],[1958,40.34],[1959,40.91],[1960,41.52],[1961,42.14],[1962,42.79],[1963,43.46],[1964,44.17],[1965,44.92],[1966,45.72],[1967,46.57],[1968,47.48],[1969,48.45],[1970,49.46],[1971,50.5],[1972,51.55],[1973,52.62],[1974,53.68],[1975,54.74],[1976,55.79],[1977,56.85],[1978,57.92],[1979,58.99],[1980,60.07],[1981,61.15],[1982,62.23],[1983,63.31],[1984,64.36],[1985,65.38],[1986,66.37],[1987,67.31],[1988,68.2],[1989,69.02],[1990,69.75],[1991,70.38],[1992,70.91],[1993,71.34],[1994,71.7],[1995,71.99],[1996,72.25],[1997,72.5],[1998,72.76],[1999,73.04],[2000,73.35],[2001,73.68],[2002,74.02],[2003,74.34],[2004,74.66],[2005,74.95],[2006,75.22],[2007,75.48],[2008,75.72],[2009,75.94]]},{"name":"Qatar","region":"Middle East & North Africa","income":[[1800,588.36],[1820,591.14],[1913,1014.29],[1939,1179.54],[1970,80244.5],[1971,80293.69],[1972,81068.9],[1973,82057.81],[1974,80224.5],[1975,79275.52],[1976,81127.92],[1977,71615.83],[1978,74170.51],[1979,73434.87],[1980,67344.1],[1981,65947.52],[1982,57679.64],[1983,52169.59],[1984,49067.69],[1985,44379.47],[1986,42994.48],[1987,40870.69],[1988,40632.35],[1989,40930],[1990,40510.85],[1991,39011.46],[1992,41781.68],[1993,40684.8],[1994,40794.94],[1995,41058.27],[1996,42008.11],[1997,52938.65],[1998,57390.75],[1999,57836.84],[2000,60394.43],[2001,59277.98],[2002,60016],[2003,58706.15],[2004,67458.36],[2005,68696],[2006,75078.13],[2007,76900.53],[2008,75474.32],[2009,74138.28]],"population":[[1800,14092],[1820,14092],[1870,14092],[1913,17897],[1950,25101],[1951,27064],[1952,29057],[1953,31074],[1954,33105],[1955,35142],[1956,36952],[1957,38757],[1958,40550],[1959,42667],[1960,45183],[1961,48712],[1962,52968],[1963,58146],[1964,63897],[1965,70284],[1966,77319],[1967,85168],[1968,93925],[1969,103283],[1970,113262],[1971,122177],[1972,131794],[1973,142167],[1974,153358],[1975,165429],[1976,176798],[1977,188947],[1978,201932],[1979,215809],[1980,230640],[1981,242474],[1982,252300],[1983,283926],[1984,314767],[1985,345079],[1986,375013],[1987,402134],[1988,429731],[1989,456616],[1990,481477],[1991,504531],[1992,529399],[1993,557008],[1994,585368],[1995,613142],[1996,640524],[1997,667336],[1998,693592],[1999,719306],[2000,744483],[2001,769152],[2002,793341],[2003,817052],[2004,840290],[2005,863051],[2006,885359],[2007,907229],[2008,928635]],"lifeExpectancy":[[1800,30.8],[1940,30.8],[1950,47.03],[1951,47.23],[1952,47.67],[1953,48.16],[1954,48.69],[1955,49.27],[1956,49.9],[1957,50.57],[1958,51.28],[1959,52.03],[1960,52.81],[1961,53.61],[1962,54.42],[1963,55.24],[1964,56.04],[1965,56.83],[1966,57.6],[1967,58.35],[1968,59.08],[1969,59.78],[1970,60.47],[1971,61.13],[1972,61.78],[1973,62.41],[1974,63.02],[1975,63.61],[1976,64.17],[1977,64.71],[1978,65.22],[1979,65.69],[1980,66.12],[1981,66.52],[1982,66.87],[1983,67.19],[1984,67.48],[1985,67.75],[1986,68.01],[1987,68.26],[1988,68.53],[1989,68.8],[1990,69.1],[1991,69.42],[1992,69.77],[1993,70.13],[1994,70.52],[1995,70.93],[1996,71.36],[1997,71.81],[1998,72.27],[1999,72.73],[2000,73.18],[2001,73.61],[2002,74.01],[2003,74.38],[2004,74.71],[2005,75],[2006,75.24],[2007,75.46],[2008,75.65],[2009,75.81]]},{"name":"Saudi Arabia","region":"Middle East & North Africa","income":[[1800,441.27],[1820,443.36],[1913,760.72],[1950,5834.36],[1951,6208.71],[1952,6459.55],[1953,6968.42],[1954,7615.79],[1955,7642.33],[1956,8042.36],[1957,8157.59],[1958,8380.7],[1959,9044.26],[1960,9726.96],[1961,10635.36],[1962,11626.42],[1963,12332.87],[1964,13089.1],[1965,14304.44],[1966,15958.99],[1967,16903.05],[1968,17910.56],[1969,18751.91],[1970,19938.92],[1971,22166.86],[1972,24837.43],[1973,28873.35],[1974,32254.54],[1975,30827.93],[1976,31661.42],[1977,34167.76],[1978,33789.05],[1979,33588.81],[1980,34568.06],[1981,35101.25],[1982,33693.18],[1983,28412.06],[1984,26815.59],[1985,23663.08],[1986,21161.24],[1987,21198.26],[1988,20995.14],[1989,20934.15],[1990,23520.95],[1991,25113.59],[1992,24841.62],[1993,23173.54],[1994,22010.66],[1995,21162.71],[1996,20772.36],[1997,20586.69],[1998,20353.7],[1999,19635.3],[2000,20001.87],[2001,19528.5],[2002,19014.54],[2003,19945.47],[2004,20481.98],[2005,21220],[2006,21356.15],[2007,21255.6],[2008,21635.15],[2009,21138.18]],"population":[[1800,2091000],[1820,2091000],[1870,2338000],[1913,2676000],[1950,3859801],[1951,3931753],[1952,4005677],[1953,4081572],[1954,4160424],[1955,4243218],[1956,4328970],[1957,4419650],[1958,4514271],[1959,4613822],[1960,4718301],[1961,4827708],[1962,4943029],[1963,5065249],[1964,5192398],[1965,5327432],[1966,5469365],[1967,5618198],[1968,5774916],[1969,5938534],[1970,6109051],[1971,6287454],[1972,6472756],[1973,6666928],[1974,6868001],[1975,7204820],[1976,7620435],[1977,8128505],[1978,8708801],[1979,9346019],[1980,9999161],[1981,10627409],[1982,11254672],[1983,11912032],[1984,12606940],[1985,13330067],[1986,13998295],[1987,14619745],[1988,15233131],[1989,15829361],[1990,16060761],[1991,16305774],[1992,16945857],[1993,18056656],[1994,19108307],[1995,19966998],[1996,20625641],[1997,21229759],[1998,21842982],[1999,22483640],[2000,23153090],[2001,23832849],[2002,24501530],[2003,25156630],[2004,25795938],[2005,26417599],[2006,27019731],[2007,27601038],[2008,28161417]],"lifeExpectancy":[[1800,32.1],[1945,32.1],[1950,38.66],[1951,38.97],[1952,39.58],[1953,40.18],[1954,40.78],[1955,41.37],[1956,41.96],[1957,42.54],[1958,43.12],[1959,43.71],[1960,44.31],[1961,44.95],[1962,45.61],[1963,46.32],[1964,47.06],[1965,47.83],[1966,48.63],[1967,49.43],[1968,50.23],[1969,51.02],[1970,51.83],[1971,52.65],[1972,53.5],[1973,54.39],[1974,55.31],[1975,56.26],[1976,57.23],[1977,58.2],[1978,59.17],[1979,60.11],[1980,61.02],[1981,61.89],[1982,62.72],[1983,63.5],[1984,64.24],[1985,64.92],[1986,65.57],[1987,66.17],[1988,66.74],[1989,67.29],[1990,67.8],[1991,68.27],[1992,68.71],[1993,69.12],[1994,69.49],[1995,69.83],[1996,70.14],[1997,70.41],[1998,70.66],[1999,70.9],[2000,71.12],[2001,71.33],[2002,71.55],[2003,71.77],[2004,71.99],[2005,72.21],[2006,72.44],[2007,72.66],[2008,72.88],[2009,73.1]]},{"name":"Tunisia","region":"Middle East & North Africa","income":[[1800,518.72],[1820,517.32],[1870,761.63],[1913,1062.88],[1950,1341.82],[1951,1331.69],[1952,1468.48],[1953,1497.12],[1954,1503.54],[1955,1401.36],[1956,1472.77],[1957,1395.23],[1958,1554.59],[1959,1465.08],[1960,1616.32],[1961,1728.37],[1962,1660.3],[1963,1872.91],[1964,1912.76],[1965,1989.82],[1966,1991.34],[1967,1932.36],[1968,2088.68],[1969,2118.73],[1970,2199.31],[1971,2386.27],[1972,2753.29],[1973,2673.63],[1974,2820.76],[1975,2944.73],[1976,3093],[1977,3120.88],[1978,3251.03],[1979,3384.54],[1980,3543.72],[1981,3647.29],[1982,3560.23],[1983,3658.69],[1984,3693.06],[1985,3806.44],[1986,3656.88],[1987,3810.42],[1988,3732.5],[1989,3794.69],[1990,4017.22],[1991,4095.28],[1992,4332.72],[1993,4347.77],[1994,4409.94],[1995,4444.95],[1996,4691.19],[1997,4876.8],[1998,5046.68],[1999,5292.3],[2000,5480.32],[2001,5687.24],[2002,5722.9],[2003,5980.59],[2004,6274.88],[2005,6461],[2006,6740.19],[2007,7099.69],[2008,7356.75],[2009,7499.61]],"population":[[1820,875000],[1870,1176000],[1913,1870000],[1950,3517210],[1951,3582970],[1952,3647735],[1953,3713496],[1954,3779257],[1955,3846014],[1956,3903067],[1957,3950849],[1958,4007300],[1959,4074970],[1960,4149157],[1961,4216031],[1962,4286552],[1963,4374477],[1964,4468393],[1965,4565747],[1966,4676017],[1967,4786986],[1968,4894178],[1969,4996300],[1970,5098627],[1971,5197559],[1972,5303507],[1973,5426213],[1974,5556437],[1975,5703966],[1976,5859294],[1977,6005061],[1978,6136282],[1979,6280477],[1980,6443183],[1981,6605707],[1982,6734098],[1983,6859890],[1984,7184530],[1985,7362332],[1986,7544710],[1987,7724976],[1988,7895088],[1989,8052989],[1990,8207240],[1991,8364780],[1992,8523077],[1993,8680433],[1994,8831747],[1995,8972635],[1996,9105233],[1997,9231669],[1998,9349100],[1999,9458862],[2000,9563816],[2001,9667365],[2002,9770575],[2003,9873149],[2004,9974722],[2005,10074951],[2006,10175014],[2007,10276158],[2008,10378140]],"lifeExpectancy":[[1800,28.8],[1923,28.8],[1933,31.22],[1943,33.72],[1950,43.61],[1951,43.85],[1952,44.35],[1953,44.85],[1954,45.35],[1955,45.85],[1956,46.35],[1957,46.85],[1958,47.35],[1959,47.85],[1960,48.34],[1961,48.82],[1962,49.3],[1963,49.77],[1964,50.24],[1965,50.73],[1966,51.24],[1967,51.79],[1968,52.38],[1969,53.01],[1970,53.69],[1971,54.42],[1972,55.19],[1973,55.99],[1974,56.81],[1975,57.65],[1976,58.51],[1977,59.4],[1978,60.29],[1979,61.18],[1980,62.05],[1981,62.88],[1982,63.65],[1983,64.36],[1984,65.02],[1985,65.63],[1986,66.22],[1987,66.81],[1988,67.4],[1989,68.02],[1990,68.63],[1991,69.23],[1992,69.8],[1993,70.32],[1994,70.79],[1995,71.19],[1996,71.54],[1997,71.84],[1998,72.11],[1999,72.34],[2000,72.56],[2001,72.76],[2002,72.94],[2003,73.12],[2004,73.29],[2005,73.46],[2006,73.63],[2007,73.81],[2008,73.98],[2009,74.15]]},{"name":"United Arab Emirates","region":"Middle East & North Africa","income":[[1800,845.76],[1820,849.76],[1913,1458.04],[1958,5100],[1970,13677.04],[1971,13239.26],[1972,12703.61],[1973,19448.86],[1974,47592.52],[1975,53499.46],[1976,52628.36],[1977,53335.18],[1978,45587.62],[1979,50726.23],[1980,58179.45],[1981,55157.82],[1982,47211.4],[1983,42152.15],[1984,41475.71],[1985,38213.65],[1986,29225.3],[1987,29327.06],[1988,27050.85],[1989,29062.16],[1990,32431.23],[1991,30832.82],[1992,30084.24],[1993,28314.81],[1994,29007.14],[1995,29341.65],[1996,29286.31],[1997,29989.45],[1998,28676.19],[1999,28251.7],[2000,30012.32],[2001,29446.26],[2002,28728.96],[2003,30646.11],[2004,32181.94],[2005,33487],[2006,35347.29],[2007,35324.66],[2008,34981.22],[2009,33734.94]],"population":[[1800,40153],[1820,40153],[1870,40153],[1913,50995],[1950,71520],[1951,73298],[1952,75273],[1953,77480],[1954,79947],[1955,82715],[1956,85831],[1957,89353],[1958,93340],[1959,97870],[1960,103048],[1961,108989],[1962,115827],[1963,123751],[1964,132980],[1965,143798],[1966,156574],[1967,171745],[1968,190974],[1969,217858],[1970,249369],[1971,288136],[1972,336325],[1973,391337],[1974,453222],[1975,522571],[1976,598023],[1977,683672],[1978,778736],[1979,884040],[1980,1000285],[1981,1100356],[1982,1203634],[1983,1315978],[1984,1437950],[1985,1570219],[1986,1713616],[1987,1778365],[1988,1839339],[1989,1896774],[1990,1950792],[1991,2001524],[1992,2048857],[1993,2093393],[1994,2135896],[1995,2176370],[1996,2215556],[1997,2254266],[1998,2292669],[1999,2330923],[2000,2369153],[2001,2407460],[2002,2445989],[2003,2484818],[2004,2523915],[2005,2563212],[2006,2602713],[2007,2642566],[2008,2682747]],"lifeExpectancy":[[1800,30.7],[1945,30.7],[1950,46.99],[1951,47.21],[1952,47.66],[1953,48.17],[1954,48.72],[1955,49.32],[1956,49.97],[1957,50.65],[1958,51.38],[1959,52.14],[1960,52.93],[1961,53.74],[1962,54.56],[1963,55.38],[1964,56.19],[1965,56.98],[1966,57.73],[1967,58.46],[1968,59.16],[1969,59.84],[1970,60.52],[1971,61.22],[1972,61.95],[1973,62.71],[1974,63.5],[1975,64.29],[1976,65.06],[1977,65.78],[1978,66.43],[1979,67.01],[1980,67.53],[1981,68.02],[1982,68.49],[1983,68.97],[1984,69.47],[1985,69.99],[1986,70.53],[1987,71.05],[1988,71.56],[1989,72.06],[1990,72.54],[1991,73.02],[1992,73.49],[1993,73.97],[1994,74.43],[1995,74.88],[1996,75.3],[1997,75.66],[1998,75.97],[1999,76.22],[2000,76.42],[2001,76.57],[2002,76.7],[2003,76.82],[2004,76.94],[2005,77.06],[2006,77.18],[2007,77.31],[2008,77.45],[2009,77.58]]},{"name":"West Bank and Gaza","region":"Middle East & North Africa","income":[[1800,735.45],[1820,738.93],[1913,1267.86],[1950,1405.45],[1951,1461.21],[1952,1515.59],[1953,1570.9],[1954,1633.31],[1955,1694.35],[1956,1757.71],[1957,1827.07],[1958,1895.34],[1959,1965.96],[1960,2039.72],[1961,2118.83],[1962,2198.96],[1963,2282.6],[1964,2368.29],[1965,2457.42],[1966,2552.07],[1967,2649.72],[1968,2750.96],[1969,2840.54],[1970,2931.07],[1971,3029.87],[1972,3133.41],[1973,3233.64],[1974,3340.31],[1975,3448.53],[1976,3565.14],[1977,3682.83],[1978,3806.21],[1979,3931.93],[1980,4062.85],[1981,4199.87],[1982,4336.03],[1983,4482.74],[1984,4631.3],[1985,4784.28],[1986,4945.41],[1987,5107.2],[1988,5276.33],[1989,5452.69],[1990,5635.48],[1991,5821.77],[1992,6017.65],[1993,6218.71],[1994,6431.12],[1995,6647.75],[1996,6875.61],[1997,7110.67],[1998,7477.12],[1999,7864.94],[2000,7586.32],[2001,5852.63],[2002,4515.49],[2003,3793.97],[2004,3664.45],[2005,3542],[2006,3263.47],[2007,3121.4],[2008,3084.56]],"population":[[1800,165944],[1850,165944],[1860,180099],[1877,215167],[1878,217741],[1879,220357],[1880,223014],[1881,225716],[1882,228461],[1883,231252],[1884,234089],[1885,236974],[1886,239905],[1887,242887],[1888,245919],[1889,248890],[1890,251909],[1891,254974],[1892,258089],[1893,261254],[1894,264542],[1895,267880],[1896,271341],[1897,274854],[1898,278608],[1899,282421],[1900,286294],[1901,290228],[1902,294225],[1903,298285],[1904,302411],[1905,306602],[1906,310861],[1907,315189],[1908,319588],[1909,324056],[1910,328599],[1911,337909],[1912,342679],[1913,347528],[1914,352458],[1918,330270],[1922,360287],[1931,465384],[1932,483666],[1933,513691],[1934,544820],[1935,588286],[1936,613124],[1937,630160],[1938,645526],[1939,680171],[1940,703338],[1941,723889],[1942,743058],[1943,768008],[1944,795069],[1945,824913],[1946,857472],[1950,1016540],[1951,1022333],[1952,1030585],[1953,1040483],[1954,1048766],[1955,1053801],[1956,1061298],[1957,1070439],[1958,1077965],[1959,1100998],[1960,1113446],[1961,1109603],[1962,1133134],[1963,1156474],[1964,1182145],[1965,1210960],[1966,1235665],[1967,1142636],[1968,1000482],[1969,1006458],[1970,1032447],[1971,1059861],[1972,1089572],[1973,1124018],[1974,1166576],[1975,1200805],[1976,1228388],[1977,1261091],[1978,1296061],[1979,1329554],[1980,1359954],[1981,1388910],[1982,1425876],[1983,1474659],[1984,1524537],[1985,1576361],[1986,1630382],[1987,1691210],[1988,1757935],[1989,1820817],[1990,1897320],[1991,1997073],[1992,2104779],[1993,2215999],[1994,2345625],[1995,2501920],[1996,2665989],[1997,2826046],[1998,2931882],[1999,3040686],[2000,3152361],[2001,3268832],[2002,3389578],[2003,3512062],[2004,3636195],[2005,3761904],[2006,3889249],[2007,4018332],[2008,4149173]],"lifeExpectancy":[[1950,42.12],[1951,42.38],[1952,42.91],[1953,43.43],[1954,43.93],[1955,44.43],[1956,44.91],[1957,45.39],[1958,45.86],[1959,46.34],[1960,46.82],[1961,47.32],[1962,47.85],[1963,48.41],[1964,49.02],[1965,49.69],[1966,50.44],[1967,51.25],[1968,52.13],[1969,53.06],[1970,54.02],[1971,55.01],[1972,55.98],[1973,56.94],[1974,57.86],[1975,58.74],[1976,59.59],[1977,60.41],[1978,61.2],[1979,61.97],[1980,62.71],[1981,63.41],[1982,64.07],[1983,64.68],[1984,65.26],[1985,65.81],[1986,66.34],[1987,66.88],[1988,67.42],[1989,67.95],[1990,68.48],[1991,68.99],[1992,69.44],[1993,69.85],[1994,70.21],[1995,70.52],[1996,70.79],[1997,71.03],[1998,71.28],[1999,71.52],[2000,71.76],[2001,72.01],[2002,72.25],[2003,72.48],[2004,72.7],[2005,72.92],[2006,73.13],[2007,73.33],[2008,73.54],[2009,73.74]]},{"name":"Yemen, Rep.","region":"Middle East & North Africa","income":[[1800,661.9],[1820,665.03],[1950,771.3],[1951,776.63],[1952,781.72],[1953,787.32],[1954,792.09],[1955,797.17],[1956,800.97],[1957,804.83],[1958,808.4],[1959,811.99],[1960,815.92],[1961,820.54],[1962,825.62],[1963,832.92],[1964,837.04],[1965,843.34],[1966,852.7],[1967,862.44],[1968,870.25],[1969,880.66],[1970,1041.1],[1971,1196.79],[1972,1265.05],[1973,1388.2],[1974,1435.54],[1975,1509.67],[1976,1695.14],[1977,1829.77],[1978,1930.83],[1979,1982.42],[1980,1938.74],[1981,2000.3],[1982,1977.56],[1983,2032.19],[1984,2050.33],[1985,1973.82],[1986,1955.75],[1987,1971.74],[1988,1989.89],[1989,1991.58],[1990,1923.3],[1991,1859.24],[1992,1879.5],[1993,1861.89],[1994,1834.92],[1995,1970.6],[1996,2022.93],[1997,2117.48],[1998,2149.8],[1999,2158.6],[2000,2217.07],[2001,2225.1],[2002,2234.82],[2003,2239.83],[2004,2250.9],[2005,2276],[2006,2277.84],[2007,2283.39],[2008,2295.8],[2009,2313.16]],"population":[[1800,2593000],[1820,2593000],[1870,2840000],[1913,3284000],[1950,4777089],[1951,4869125],[1952,4963829],[1953,5061153],[1954,5162494],[1955,5265327],[1956,5380106],[1957,5498090],[1958,5619377],[1959,5743926],[1960,5871831],[1961,5993828],[1962,6120081],[1963,6248206],[1964,6378206],[1965,6510081],[1966,6624755],[1967,6740785],[1968,6859408],[1969,6978155],[1970,7098239],[1971,7251383],[1972,7407075],[1973,7579501],[1974,7755019],[1975,7934497],[1976,8170521],[1977,8403990],[1978,8641036],[1979,8883381],[1980,9132545],[1981,9390138],[1982,9657618],[1983,9936258],[1984,10229272],[1985,10539928],[1986,10869580],[1987,11219340],[1988,11591069],[1989,11986392],[1990,12416080],[1991,12882420],[1992,13367997],[1993,13885756],[1994,14394750],[1995,14859342],[1996,15327307],[1997,15826497],[1998,16352459],[1999,16904520],[2000,17479206],[2001,18078035],[2002,18701257],[2003,19349881],[2004,20024867],[2005,20727063],[2006,21456188],[2007,22211743],[2008,22993911]],"lifeExpectancy":[[1800,33],[1945,33],[1950,31.91],[1951,32.08],[1952,32.4],[1953,32.71],[1954,33.01],[1955,33.29],[1956,33.56],[1957,33.82],[1958,34.07],[1959,34.31],[1960,34.54],[1961,34.79],[1962,35.04],[1963,35.31],[1964,35.62],[1965,35.95],[1966,36.32],[1967,36.73],[1968,37.18],[1969,37.67],[1970,38.22],[1971,38.83],[1972,39.49],[1973,40.22],[1974,41.01],[1975,41.85],[1976,42.75],[1977,43.7],[1978,44.69],[1979,45.69],[1980,46.68],[1981,47.66],[1982,48.62],[1983,49.53],[1984,50.39],[1985,51.19],[1986,51.93],[1987,52.6],[1988,53.23],[1989,53.82],[1990,54.37],[1991,54.89],[1992,55.4],[1993,55.88],[1994,56.37],[1995,56.84],[1996,57.32],[1997,57.79],[1998,58.25],[1999,58.71],[2000,59.17],[2001,59.63],[2002,60.09],[2003,60.56],[2004,61.03],[2005,61.51],[2006,61.98],[2007,62.46],[2008,62.93],[2009,63.39]]},{"name":"Argentina","region":"America","income":[[1800,871.63],[1820,871.63],[1875,1885.41],[1876,1867.47],[1877,2002.04],[1878,1839.6],[1879,1863.06],[1880,1769.57],[1881,1743.09],[1882,2140.95],[1883,2333.66],[1884,2426.44],[1885,2770.22],[1886,2695.38],[1887,2794.95],[1888,3156.64],[1889,3364.75],[1890,2982.77],[1891,2730.32],[1892,3176.32],[1893,3266.51],[1894,3664.86],[1895,3949.4],[1896,4246.48],[1897,3317.39],[1898,3498.62],[1899,4011.23],[1900,3419.66],[1901,3611.77],[1902,3436.59],[1903,3830.91],[1904,4131.05],[1905,4562.36],[1906,4580.22],[1907,4464.29],[1908,4694.41],[1909,4708.23],[1910,4832.38],[1911,4726.01],[1912,4923.21],[1913,4777.66],[1914,4091.98],[1915,3949.97],[1916,3767.94],[1917,3397.62],[1918,3961.68],[1919,4038.95],[1920,4263.13],[1921,4242.31],[1922,4452.29],[1923,4807.28],[1924,5035.79],[1925,4861.3],[1926,4962.42],[1927,5178.2],[1928,5356.78],[1929,5456.67],[1930,5081.2],[1931,4633.64],[1932,4393.52],[1933,4518.05],[1934,4790.22],[1935,4909.12],[1936,4872.97],[1937,5149.63],[1938,5084.62],[1939,5199.52],[1940,5202.23],[1941,5393.04],[1942,5368.42],[1943,5248.21],[1944,5757.53],[1945,5482.92],[1946,5845.22],[1947,6359.64],[1948,6560.39],[1949,6322.98],[1950,6252.86],[1951,6362.13],[1952,5911.32],[1953,6107.59],[1954,6242.6],[1955,6566.88],[1956,6630.03],[1957,6856.86],[1958,7157.86],[1959,6575.45],[1960,6984.76],[1961,7367.29],[1962,7133.17],[1963,6852.54],[1964,7452.89],[1965,8022.44],[1966,7955.97],[1967,8052.95],[1968,8284.39],[1969,8870.89],[1970,9212.3],[1971,9408.19],[1972,9443.04],[1973,9633.5],[1974,9989.81],[1975,9766.38],[1976,9611.92],[1977,10079.03],[1978,9602.71],[1979,10124.86],[1980,10126.5],[1981,9421.94],[1982,8997.9],[1983,9238.61],[1984,9301.55],[1985,8525.61],[1986,9026.86],[1987,9139.67],[1988,8845.59],[1989,8107.72],[1990,7846.61],[1991,8575.87],[1992,9308.42],[1993,9742.08],[1994,10206.9],[1995,9807.79],[1996,10245.38],[1997,10967.28],[1998,11272.75],[1999,10771.08],[2000,10571.36],[2001,9992.71],[2002,8797.64],[2003,9481.37],[2004,10232.1],[2005,11063],[2006,11883.08],[2007,12784.8],[2008,13515.18],[2009,13498.04]],"population":[[1800,534000],[1820,534000],[1850,1100000],[1870,1796000],[1890,3376000],[1900,4693000],[1901,4873000],[1902,5060000],[1903,5254000],[1904,5455000],[1905,5664000],[1906,5881000],[1907,6107000],[1908,6341000],[1909,6584000],[1910,6836000],[1911,7098000],[1912,7370000],[1913,7653000],[1914,7885000],[1915,8072000],[1916,8226000],[1917,8374000],[1918,8518000],[1919,8672000],[1920,8861000],[1921,9092000],[1922,9368000],[1923,9707000],[1924,10054000],[1925,10358000],[1926,10652000],[1927,10965000],[1928,11282000],[1929,11592000],[1930,11896000],[1931,12167000],[1932,12402000],[1933,12623000],[1934,12834000],[1935,13044000],[1936,13260000],[1937,13490000],[1938,13724000],[1939,13984000],[1940,14169000],[1941,14402000],[1942,14638000],[1943,14877000],[1944,15130000],[1945,15390000],[1946,15654000],[1947,15942000],[1948,16307000],[1949,16737000],[1950,17150336],[1951,17517342],[1952,17876956],[1953,18230816],[1954,18580559],[1955,18927821],[1956,19271511],[1957,19610538],[1958,19946539],[1959,20281150],[1960,20616009],[1961,20950583],[1962,21283783],[1963,21616403],[1964,21949244],[1965,22283100],[1966,22611604],[1967,22934225],[1968,23260514],[1969,23600026],[1970,23962313],[1971,24363816],[1972,24779799],[1973,25209829],[1974,25646371],[1975,26081880],[1976,26531280],[1977,26983828],[1978,27440272],[1979,27901971],[1980,28369799],[1981,28862831],[1982,29341374],[1983,29801763],[1984,30235573],[1985,30675059],[1986,31145966],[1987,31620918],[1988,32090943],[1989,32558573],[1990,33022202],[1991,33491595],[1992,33958947],[1993,34411978],[1994,34864440],[1995,35311049],[1996,35753590],[1997,36203463],[1998,36643768],[1999,37073828],[2000,37497728],[2001,37916560],[2002,38331121],[2003,38740807],[2004,39144753],[2005,39537943],[2006,39921833],[2007,40301927],[2008,40677348]],"lifeExpectancy":[[1800,33.2],[1875,33.2],[1880,33.1],[1885,32.6],[1890,34],[1895,33.3],[1900,36.8],[1905,39.7],[1910,43.5],[1915,46.2],[1920,50.2],[1925,52.6],[1930,54.3],[1935,54.3],[1940,59.1],[1945,62],[1950,61.61],[1951,61.92],[1952,62.51],[1953,63.04],[1954,63.52],[1955,63.94],[1956,64.3],[1957,64.61],[1958,64.86],[1959,65.07],[1960,65.23],[1961,65.35],[1962,65.44],[1963,65.52],[1964,65.6],[1965,65.68],[1966,65.8],[1967,65.95],[1968,66.13],[1969,66.35],[1970,66.61],[1971,66.89],[1972,67.18],[1973,67.48],[1974,67.77],[1975,68.06],[1976,68.35],[1977,68.64],[1978,68.94],[1979,69.24],[1980,69.53],[1981,69.8],[1982,70.05],[1983,70.27],[1984,70.47],[1985,70.65],[1986,70.81],[1987,70.98],[1988,71.16],[1989,71.35],[1990,71.56],[1991,71.78],[1992,72.01],[1993,72.23],[1994,72.46],[1995,72.68],[1996,72.9],[1997,73.12],[1998,73.34],[1999,73.55],[2000,73.77],[2001,73.97],[2002,74.18],[2003,74.38],[2004,74.58],[2005,74.77],[2006,74.96],[2007,75.15],[2008,75.33],[2009,75.52]]},{"name":"Aruba","region":"America","income":[[1800,575.86],[1820,575.86],[1913,1062.48],[1970,4223.84],[1971,4567.57],[1972,4939.76],[1973,5344.09],[1974,5785.94],[1975,6270.23],[1976,6803.64],[1977,7390.36],[1978,8026.34],[1979,8701.79],[1980,9409.56],[1981,10133.58],[1982,10874.91],[1983,11672.8],[1984,12589.72],[1985,13681.02],[1986,15016.43],[1987,17674.34],[1988,21252.41],[1989,23845.24],[1990,24316.97],[1991,25167.86],[1992,25120.55],[1993,25277.57],[1994,25830.48],[1995,25359.88],[1996,24966.43],[1997,26483.67],[1998,27963.77],[1999,27962.89],[2000,28711.44],[2001,27884.99],[2002,26467.87],[2003,25782.77],[2004,26972.7],[2005,26762.65],[2006,26482.97],[2007,26073.67],[2008,25351.09]],"population":[[1800,19286],[1820,19286],[1950,49712],[1951,51335],[1952,51955],[1953,52585],[1954,53220],[1955,53865],[1956,54516],[1957,55176],[1958,55843],[1959,56518],[1960,57203],[1961,57008],[1962,57681],[1963,58541],[1964,59091],[1965,59020],[1966,58632],[1967,58316],[1968,58149],[1969,58424],[1970,59039],[1971,59397],[1972,59461],[1973,59609],[1974,59555],[1975,59390],[1976,59337],[1977,59412],[1978,59481],[1979,59741],[1980,60266],[1981,60717],[1982,61569],[1983,62483],[1984,63337],[1985,64129],[1986,64817],[1987,65415],[1988,65922],[1989,66335],[1990,66653],[1991,66919],[1992,67174],[1993,67414],[1994,67636],[1995,67836],[1996,68057],[1997,68341],[1998,68683],[1999,69083],[2000,69539],[2001,70007],[2002,70441],[2003,70844],[2004,71218],[2005,71566],[2006,71891],[2007,72194],[2008,72480]],"lifeExpectancy":[[1950,58.43],[1951,58.97],[1952,60.01],[1953,60.98],[1954,61.87],[1955,62.68],[1956,63.42],[1957,64.09],[1958,64.68],[1959,65.21],[1960,65.68],[1961,66.09],[1962,66.47],[1963,66.81],[1964,67.14],[1965,67.46],[1966,67.79],[1967,68.12],[1968,68.46],[1969,68.81],[1970,69.16],[1971,69.52],[1972,69.87],[1973,70.21],[1974,70.53],[1975,70.85],[1976,71.15],[1977,71.45],[1978,71.75],[1979,72.03],[1980,72.3],[1981,72.55],[1982,72.76],[1983,72.94],[1984,73.08],[1985,73.18],[1986,73.26],[1987,73.33],[1988,73.38],[1989,73.42],[1990,73.47],[1991,73.5],[1992,73.53],[1993,73.54],[1994,73.55],[1995,73.56],[1996,73.56],[1997,73.57],[1998,73.59],[1999,73.63],[2000,73.68],[2001,73.76],[2002,73.86],[2003,73.98],[2004,74.12],[2005,74.28],[2006,74.44],[2007,74.61],[2008,74.77],[2009,74.92]]},{"name":"Barbados","region":"America","income":[[1800,1017.81],[1820,1017.81],[1913,1877.92],[1950,3245.07],[1960,5319.74],[1961,5711.59],[1962,6204.49],[1963,5863.17],[1964,6130.21],[1965,6806.04],[1966,7057.57],[1967,7788.54],[1968,8306.96],[1969,8904.4],[1970,9712.48],[1971,9814.38],[1972,9853.81],[1973,9990.79],[1974,11268.72],[1975,10983.92],[1976,11414.78],[1977,11817.36],[1978,12375.14],[1979,13301.46],[1980,13858.9],[1981,13504.66],[1982,12736.47],[1983,12679.08],[1984,13003.27],[1985,13020.58],[1986,13560.56],[1987,13783.21],[1988,14140.09],[1989,14528.02],[1990,13954.78],[1991,13293.9],[1992,12263.45],[1993,12299.76],[1994,12736.75],[1995,13009.36],[1996,13356.08],[1997,13901.91],[1998,14702.32],[1999,14710.96],[2000,14982.12],[2001,14533.64],[2002,14544.49],[2003,14779.73],[2004,15268.13],[2005,15837],[2006,16294.8],[2007,16803.95],[2008,16783.85],[2009,15846.77]],"population":[[1800,81729],[1820,81729],[1851,136000],[1861,153000],[1871,162000],[1881,172000],[1891,183000],[1901,196000],[1911,172000],[1921,157000],[1946,194000],[1950,210666],[1951,214729],[1952,217959],[1953,221303],[1954,225244],[1955,227255],[1956,225962],[1957,225569],[1958,227979],[1959,231394],[1960,232339],[1961,229597],[1962,228747],[1963,230738],[1964,233269],[1965,234980],[1966,236227],[1967,238224],[1968,239868],[1969,239321],[1970,238756],[1971,240606],[1972,242445],[1973,244127],[1974,245563],[1975,247147],[1976,248023],[1977,249169],[1978,250145],[1979,251145],[1980,251966],[1981,252376],[1982,253522],[1983,254918],[1984,256227],[1985,257446],[1986,258506],[1987,259428],[1988,260313],[1989,261441],[1990,262624],[1991,263693],[1992,264925],[1993,265977],[1994,266906],[1995,267907],[1996,268944],[1997,270096],[1998,271232],[1999,272364],[2000,273483],[2001,274584],[2002,275673],[2003,276761],[2004,277816],[2005,278870],[2006,279912],[2007,280946],[2008,281968]],"lifeExpectancy":[[1950,54.59],[1951,55.29],[1952,56.65],[1953,57.92],[1954,59.11],[1955,60.22],[1956,61.24],[1957,62.18],[1958,63.04],[1959,63.81],[1960,64.5],[1961,65.11],[1962,65.64],[1963,66.1],[1964,66.5],[1965,66.87],[1966,67.2],[1967,67.53],[1968,67.85],[1969,68.18],[1970,68.52],[1971,68.88],[1972,69.25],[1973,69.62],[1974,69.99],[1975,70.36],[1976,70.73],[1977,71.09],[1978,71.43],[1979,71.77],[1980,72.09],[1981,72.4],[1982,72.7],[1983,73],[1984,73.29],[1985,73.56],[1986,73.83],[1987,74.07],[1988,74.29],[1989,74.49],[1990,74.66],[1991,74.79],[1992,74.88],[1993,74.94],[1994,74.98],[1995,75.01],[1996,75.04],[1997,75.09],[1998,75.16],[1999,75.27],[2000,75.41],[2001,75.59],[2002,75.8],[2003,76.03],[2004,76.28],[2005,76.53],[2006,76.79],[2007,77.04],[2008,77.28],[2009,77.51]]},{"name":"Belize","region":"America","income":[[1800,542.97],[1820,542.97],[1913,1001.8],[1950,1731.13],[1960,1868.46],[1961,1893.4],[1962,1916.32],[1963,1941.29],[1964,1972.05],[1965,2008.96],[1966,2049.49],[1967,2099.16],[1968,2206.04],[1969,2275.3],[1970,2345.4],[1971,2403.23],[1972,2616.7],[1973,2724.54],[1974,3051.15],[1975,3105.45],[1976,3039.69],[1977,3158.69],[1978,3318.66],[1979,3472.14],[1980,3893.63],[1981,3841.46],[1982,3732.09],[1983,3580.48],[1984,3537.98],[1985,3484.98],[1986,3554.57],[1987,3844.93],[1988,4092.66],[1989,4542.52],[1990,4871.11],[1991,5298.35],[1992,5780.69],[1993,5958.65],[1994,5806.45],[1995,5677.1],[1996,5632.53],[1997,5631.5],[1998,5632.34],[1999,5991.97],[2000,6545.45],[2001,6669.07],[2002,6799.54],[2003,7203.58],[2004,7300.54],[2005,7290],[2006,7392.78],[2007,7250.58],[2008,7297.77],[2009,6998.08]],"population":[[1800,25526],[1820,25526],[1861,26000],[1871,25000],[1881,27000],[1891,31000],[1901,37000],[1911,40000],[1921,45000],[1931,51000],[1946,59000],[1950,65797],[1951,66759],[1952,69932],[1953,72143],[1954,74408],[1955,76892],[1956,79651],[1957,82461],[1958,85394],[1959,88641],[1960,91863],[1961,94685],[1962,97594],[1963,100712],[1964,103902],[1965,106965],[1966,110115],[1967,113265],[1968,116293],[1969,119183],[1970,122070],[1971,124890],[1972,127661],[1973,130375],[1974,133027],[1975,135611],[1976,138135],[1977,140578],[1978,142937],[1979,145205],[1980,144416],[1981,149191],[1982,153277],[1983,156825],[1984,160800],[1985,165530],[1986,171219],[1987,176347],[1988,181390],[1989,186418],[1990,190847],[1991,195733],[1992,200798],[1993,206055],[1994,211500],[1995,217120],[1996,222908],[1997,228884],[1998,235030],[1999,241369],[2000,247887],[2001,254497],[2002,261138],[2003,267787],[2004,274435],[2005,281084],[2006,287730],[2007,294385],[2008,301022]],"lifeExpectancy":[[1950,56.67],[1951,56.92],[1952,57.42],[1953,57.93],[1954,58.43],[1955,58.93],[1956,59.43],[1957,59.93],[1958,60.43],[1959,60.93],[1960,61.43],[1961,61.93],[1962,62.43],[1963,62.93],[1964,63.44],[1965,63.94],[1966,64.44],[1967,64.94],[1968,65.44],[1969,65.93],[1970,66.42],[1971,66.9],[1972,67.37],[1973,67.83],[1974,68.29],[1975,68.73],[1976,69.16],[1977,69.57],[1978,69.97],[1979,70.35],[1980,70.69],[1981,71],[1982,71.27],[1983,71.5],[1984,71.69],[1985,71.84],[1986,71.94],[1987,72.02],[1988,72.08],[1989,72.13],[1990,72.19],[1991,72.27],[1992,72.39],[1993,72.54],[1994,72.72],[1995,72.94],[1996,73.18],[1997,73.42],[1998,73.66],[1999,73.89],[2000,74.11],[2001,74.34],[2002,74.59],[2003,74.85],[2004,75.14],[2005,75.44],[2006,75.74],[2007,76.04],[2008,76.33],[2009,76.6]]},{"name":"Bolivia","region":"America","income":[[1800,695.05],[1820,695.05],[1945,2227.96],[1946,2241.79],[1947,2254.85],[1948,2277.13],[1949,2298.47],[1950,2530.6],[1951,2653.57],[1952,2677.33],[1953,2373.25],[1954,2371.67],[1955,2443.66],[1956,2249.19],[1957,2127.69],[1958,2130.5],[1959,2076.82],[1960,2117.78],[1961,2113.49],[1962,2180.97],[1963,2268.27],[1964,2323.02],[1965,2380.76],[1966,2493.24],[1967,2586.89],[1968,2740.72],[1969,2794.62],[1970,2869.46],[1971,2906.44],[1972,2980.33],[1973,3107.44],[1974,3188.22],[1975,3317.13],[1976,3490],[1977,3548.1],[1978,3578.97],[1979,3496.02],[1980,3391.07],[1981,3358.19],[1982,3156.51],[1983,2965.56],[1984,2945.48],[1985,2875.32],[1986,2734.54],[1987,2753.69],[1988,2800.94],[1989,2819.34],[1990,2897.28],[1991,2982.23],[1992,2961.7],[1993,3015.14],[1994,3089.45],[1995,3164.52],[1996,3234.03],[1997,3326.14],[1998,3429.73],[1999,3377.57],[2000,3394.71],[2001,3390.16],[2002,3413.26],[2003,3450.76],[2004,3528.67],[2005,3618],[2006,3712.77],[2007,3803.13],[2008,3956.4],[2009,4007.16]],"population":[[1800,1100000],[1820,1100000],[1850,1374000],[1870,1495000],[1900,1696000],[1901,1710000],[1902,1723000],[1903,1737000],[1904,1751000],[1905,1765000],[1906,1779000],[1907,1793000],[1908,1808000],[1909,1822000],[1910,1837000],[1911,1851000],[1912,1866000],[1913,1881000],[1914,1915000],[1915,1951000],[1916,1986000],[1917,2023000],[1918,2060000],[1919,2098000],[1920,2136000],[1921,2161000],[1922,2186000],[1923,2212000],[1924,2237000],[1925,2263000],[1926,2289000],[1927,2316000],[1928,2343000],[1929,2370000],[1930,2397000],[1931,2425000],[1932,2453000],[1933,2482000],[1934,2511000],[1935,2540000],[1936,2569000],[1937,2599000],[1938,2629000],[1939,2659000],[1940,2690000],[1941,2721000],[1942,2753000],[1943,2785000],[1944,2817000],[1945,2850000],[1946,2883000],[1947,2916000],[1948,2950000],[1949,2984000],[1950,2766028],[1951,2823667],[1952,2883315],[1953,2944968],[1954,3008635],[1955,3074311],[1956,3141998],[1957,3211738],[1958,3283613],[1959,3357701],[1960,3434073],[1961,3512782],[1962,3593918],[1963,3677637],[1964,3764067],[1965,3853315],[1966,3945474],[1967,4040665],[1968,4139069],[1969,4240872],[1970,4346218],[1971,4454684],[1972,4565872],[1973,4679923],[1974,4796240],[1975,4914316],[1976,4955744],[1977,5079716],[1978,5204622],[1979,5326981],[1980,5441298],[1981,5545224],[1982,5642224],[1983,5737434],[1984,5834293],[1985,5934935],[1986,6041350],[1987,6156369],[1988,6283164],[1989,6423135],[1990,6573900],[1991,6731484],[1992,6893451],[1993,7055495],[1994,7216538],[1995,7376582],[1996,7535615],[1997,7693188],[1998,7848703],[1999,8001930],[2000,8152620],[2001,8300463],[2002,8445134],[2003,8586443],[2004,8724156],[2005,8857870],[2006,8989046],[2007,9119152],[2008,9247816]],"lifeExpectancy":[[1800,33],[1925,33],[1940,33],[1950,39.87],[1951,40.01],[1952,40.29],[1953,40.58],[1954,40.87],[1955,41.16],[1956,41.46],[1957,41.76],[1958,42.06],[1959,42.36],[1960,42.67],[1961,42.98],[1962,43.29],[1963,43.61],[1964,43.92],[1965,44.24],[1966,44.55],[1967,44.84],[1968,45.14],[1969,45.44],[1970,45.77],[1971,46.14],[1972,46.56],[1973,47.05],[1974,47.61],[1975,48.23],[1976,48.92],[1977,49.65],[1978,50.41],[1979,51.19],[1980,51.96],[1981,52.74],[1982,53.51],[1983,54.26],[1984,54.99],[1985,55.69],[1986,56.37],[1987,57.01],[1988,57.63],[1989,58.22],[1990,58.78],[1991,59.31],[1992,59.8],[1993,60.25],[1994,60.68],[1995,61.09],[1996,61.48],[1997,61.86],[1998,62.22],[1999,62.59],[2000,62.95],[2001,63.31],[2002,63.67],[2003,64.01],[2004,64.35],[2005,64.69],[2006,65.02],[2007,65.35],[2008,65.68],[2009,66.01]]},{"name":"Brazil","region":"America","income":[[1800,509.2],[1820,539.02],[1850,571.9],[1851,611.36],[1852,594.85],[1853,558.23],[1854,539.18],[1855,544.31],[1856,564.09],[1857,603.65],[1858,642.47],[1859,637.34],[1860,654.19],[1861,648.33],[1862,617.56],[1863,631.48],[1864,640.27],[1865,687.89],[1866,712.8],[1867,772.14],[1868,772.14],[1869,772.14],[1870,715.73],[1871,715.73],[1872,740.64],[1873,718.66],[1874,729.65],[1875,740.64],[1876,712.8],[1877,693.02],[1878,726.72],[1879,732.58],[1880,698.88],[1881,704.74],[1882,721.59],[1883,701.81],[1884,749.43],[1885,695.95],[1886,718.66],[1887,671.04],[1888,645.4],[1889,654.19],[1890,715.73],[1891,760.42],[1892,659.32],[1893,561.16],[1894,561.16],[1895,665.18],[1896,603.65],[1897,594.85],[1898,608.77],[1899,597.78],[1900,575.07],[1901,648.48],[1902,629.74],[1903,630.97],[1904,622.59],[1905,632.64],[1906,696.97],[1907,691.3],[1908,654.7],[1909,705.48],[1910,711.35],[1911,737.66],[1912,770.7],[1913,778.23],[1914,750.11],[1915,738.09],[1916,729.69],[1917,783.66],[1918,749.02],[1919,792.56],[1920,875.52],[1921,874.14],[1922,925.6],[1923,984.14],[1924,980.08],[1925,959.96],[1926,989.1],[1927,1076.22],[1928,1177.58],[1929,1164.62],[1930,1118.34],[1931,1056.7],[1932,1081.05],[1933,1157.13],[1934,1237.46],[1935,1250.24],[1936,1374.69],[1937,1410.23],[1938,1444.01],[1939,1449.77],[1940,1406.39],[1941,1443.76],[1942,1369.92],[1943,1457.02],[1944,1538.99],[1945,1553.89],[1946,1695.26],[1947,1694.1],[1948,1813.51],[1949,1903.64],[1950,1979.81],[1951,2020.23],[1952,2108.94],[1953,2145.84],[1954,2249.2],[1955,2379.48],[1956,2376.5],[1957,2487.37],[1958,2680.43],[1959,2861.75],[1960,3044.13],[1961,3214.19],[1962,3336.59],[1963,3260.25],[1964,3277.01],[1965,3261.05],[1966,3385.4],[1967,3429.86],[1968,3666.98],[1969,3909.48],[1970,4184.07],[1971,4554.85],[1972,4985.71],[1973,5558.5],[1974,5873.83],[1975,6031.57],[1976,6500.65],[1977,6660.12],[1978,6825.89],[1979,7117.96],[1980,7623.18],[1981,7128.81],[1982,7030.84],[1983,6672.28],[1984,6890.25],[1985,7286.96],[1986,7685.06],[1987,7807.1],[1988,7657.32],[1989,7763.04],[1990,7136.93],[1991,7097.83],[1992,6950.28],[1993,7188.19],[1994,7503.67],[1995,7713.35],[1996,7810.2],[1997,7957.98],[1998,7860.55],[1999,7818.96],[2000,8056.06],[2001,8022.52],[2002,8131.21],[2003,8110.41],[2004,8461.5],[2005,8596],[2006,8869.55],[2007,9305.66],[2008,9682],[2009,9569.78]],"population":[[1820,4507000],[1850,7234000],[1870,9797000],[1871,9980000],[1872,10167000],[1873,10358000],[1874,10552000],[1875,10749000],[1876,10951000],[1877,11156000],[1878,11365000],[1879,11578000],[1880,11794000],[1881,12015000],[1882,12240000],[1883,12470000],[1884,12703000],[1885,12941000],[1886,13183000],[1887,13430000],[1888,13682000],[1889,13938000],[1890,14199000],[1891,14539000],[1892,14886000],[1893,15242000],[1894,15607000],[1895,15980000],[1896,16362000],[1897,16753000],[1898,17154000],[1899,17564000],[1900,17984000],[1901,18392000],[1902,18782000],[1903,19180000],[1904,19587000],[1905,20003000],[1906,20427000],[1907,20860000],[1908,21303000],[1909,21754000],[1910,22216000],[1911,22687000],[1912,23168000],[1913,23660000],[1914,24161000],[1915,24674000],[1916,25197000],[1917,25732000],[1918,26277000],[1919,26835000],[1920,27404000],[1921,27969000],[1922,28542000],[1923,29126000],[1924,29723000],[1925,30332000],[1926,30953000],[1927,31587000],[1928,32234000],[1929,32894000],[1930,33568000],[1931,34256000],[1932,34957000],[1933,35673000],[1934,36404000],[1935,37150000],[1936,37911000],[1937,38687000],[1938,39480000],[1939,40289000],[1940,41114000],[1941,42069000],[1942,43069000],[1943,44093000],[1944,45141000],[1945,46215000],[1946,47313000],[1947,48438000],[1948,49590000],[1949,50769000],[1950,53443075],[1951,54995532],[1952,56602560],[1953,58266357],[1954,59989219],[1955,61773546],[1956,63631992],[1957,65551171],[1958,67533213],[1959,69580328],[1960,71694810],[1961,73832902],[1962,76039390],[1963,78316598],[1964,80666939],[1965,83092908],[1966,85557441],[1967,88049823],[1968,90569084],[1969,93114241],[1970,95684297],[1971,98245467],[1972,100840058],[1973,103469438],[1974,106131448],[1975,108823732],[1976,111545124],[1977,114313951],[1978,117146603],[1979,120040282],[1980,122958132],[1981,125929730],[1982,128962939],[1983,131891729],[1984,134626216],[1985,137302933],[1986,140111725],[1987,142938076],[1988,145782100],[1989,148567499],[1990,151083809],[1991,153511587],[1992,155975974],[1993,158471338],[1994,160994257],[1995,163542501],[1996,166073876],[1997,168546719],[1998,170956177],[1999,173293681],[2000,175552771],[2001,177752913],[2002,179914212],[2003,182032604],[2004,184101109],[2005,186112794],[2006,188078227],[2007,190010647],[2008,191908598]],"lifeExpectancy":[[1800,32],[1920,31.98],[1930,32],[1940,36.64],[1945,42.3],[1950,49.97],[1951,50.2],[1952,50.67],[1953,51.14],[1954,51.61],[1955,52.09],[1956,52.58],[1957,53.06],[1958,53.55],[1959,54.03],[1960,54.51],[1961,54.97],[1962,55.43],[1963,55.86],[1964,56.28],[1965,56.69],[1966,57.08],[1967,57.45],[1968,57.83],[1969,58.2],[1970,58.57],[1971,58.94],[1972,59.32],[1973,59.71],[1974,60.1],[1975,60.49],[1976,60.89],[1977,61.29],[1978,61.68],[1979,62.07],[1980,62.46],[1981,62.84],[1982,63.22],[1983,63.6],[1984,63.98],[1985,64.36],[1986,64.74],[1987,65.12],[1988,65.5],[1989,65.88],[1990,66.26],[1991,66.65],[1992,67.06],[1993,67.47],[1994,67.88],[1995,68.3],[1996,68.7],[1997,69.1],[1998,69.48],[1999,69.85],[2000,70.19],[2001,70.51],[2002,70.82],[2003,71.11],[2004,71.4],[2005,71.67],[2006,71.93],[2007,72.19],[2008,72.44],[2009,72.68]]},{"name":"Canada","region":"America","income":[[1800,1159.5],[1820,1312.47],[1830,1451.18],[1840,1686.35],[1850,1929.46],[1860,2105.05],[1870,2459.06],[1871,2546.14],[1872,2474.56],[1873,2672.9],[1874,2690.08],[1875,2588.86],[1876,2381.27],[1877,2506.83],[1878,2375.88],[1879,2561.68],[1880,2635.18],[1881,2959.8],[1882,3060.65],[1883,3033.5],[1884,3237.49],[1885,3008.03],[1886,3011.56],[1887,3076.36],[1888,3263.56],[1889,3249.51],[1890,3451.46],[1891,3495.5],[1892,3440.52],[1893,3386.62],[1894,3512.53],[1895,3440.7],[1896,3321],[1897,3644.66],[1898,3749.07],[1899,4056.95],[1900,4224.78],[1901,4493.99],[1902,4833.78],[1903,4837.7],[1904,4759.25],[1905,5168.85],[1906,5581.55],[1907,5623.11],[1908,5183.71],[1909,5586.47],[1910,5900.16],[1911,6113.16],[1912,6352.01],[1913,6453.07],[1914,5841.42],[1915,6142.69],[1916,6742.36],[1917,6966.52],[1918,6444.11],[1919,5832.8],[1920,5603.71],[1921,4871.63],[1922,5504.55],[1923,5769.84],[1924,5771.38],[1925,6298.53],[1926,6526.05],[1927,7033.87],[1928,7504.92],[1929,7350.88],[1930,6981.06],[1931,5810.09],[1932,5327.95],[1933,4891.07],[1934,5356.36],[1935,5733.08],[1936,5984.97],[1937,6491.73],[1938,6596.94],[1939,6919.43],[1940,7790.3],[1941,8780.77],[1942,10206.71],[1943,10539.59],[1944,10800.51],[1945,10351.21],[1946,10058.5],[1947,10286.28],[1948,10253.07],[1949,10251.27],[1950,10581.27],[1951,10932.47],[1952,11367.16],[1953,11586.61],[1954,11173.26],[1955,11901.51],[1956,12555.55],[1957,12489.95],[1958,12384.41],[1959,12590.8],[1960,12701.48],[1961,12817.92],[1962,13462.49],[1963,13882.56],[1964,14510.9],[1965,15198.11],[1966,15884.84],[1967,16076.59],[1968,16658.21],[1969,17286.99],[1970,17487.46],[1971,18229.64],[1972,18970.57],[1973,20081.31],[1974,20613.59],[1975,20775.51],[1976,21626.09],[1977,22090.88],[1978,22754.83],[1979,23465.83],[1980,23473.9],[1981,23904.53],[1982,22898.79],[1983,23329.8],[1984,24431.85],[1985,25514.79],[1986,25921.17],[1987,26626.52],[1988,27562.41],[1989,27729.9],[1990,27387.27],[1991,26491.6],[1992,26342.88],[1993,26590.4],[1994,27543.91],[1995,27969.67],[1996,28074.84],[1997,28954.93],[1998,29837.46],[1999,31154.86],[2000,32448.61],[2001,32570.57],[2002,33328.97],[2003,33635.25],[2004,34346.97],[2005,35078],[2006,35714.67],[2007,36225.06],[2008,35950.08],[2009,34569.63]],"population":[[1820,816000],[1830,1169000],[1840,1697000],[1850,2485000],[1860,3369000],[1870,3781000],[1871,3801000],[1872,3870000],[1873,3943000],[1874,4012000],[1875,4071000],[1876,4128000],[1877,4184000],[1878,4244000],[1879,4312000],[1880,4384000],[1881,4451000],[1882,4503000],[1883,4560000],[1884,4617000],[1885,4666000],[1886,4711000],[1887,4760000],[1888,4813000],[1889,4865000],[1890,4918000],[1891,4972000],[1892,5022000],[1893,5072000],[1894,5121000],[1895,5169000],[1896,5218000],[1897,5269000],[1898,5325000],[1899,5383000],[1900,5457000],[1901,5536000],[1902,5650000],[1903,5813000],[1904,5994000],[1905,6166000],[1906,6282000],[1907,6596000],[1908,6813000],[1909,6993000],[1910,7188000],[1911,7410000],[1912,7602000],[1913,7852000],[1914,8093000],[1915,8191000],[1916,8214000],[1917,8277000],[1918,8374000],[1919,8548000],[1920,8798000],[1921,9028000],[1922,9159000],[1923,9256000],[1924,9394000],[1925,9549000],[1926,9713000],[1927,9905000],[1928,10107000],[1929,10305000],[1930,10488000],[1931,10657000],[1932,10794000],[1933,10919000],[1934,11030000],[1935,11136000],[1936,11243000],[1937,11341000],[1938,11452000],[1939,11570000],[1940,11688000],[1941,11818000],[1942,11969000],[1943,12115000],[1944,12268000],[1945,12404000],[1946,12634000],[1947,12901000],[1948,13180000],[1949,13469000],[1950,14011422],[1951,14330675],[1952,14785584],[1953,15183375],[1954,15636245],[1955,16050356],[1956,16445087],[1957,17010154],[1958,17462004],[1959,17872034],[1960,18266765],[1961,18634977],[1962,18985849],[1963,19342841],[1964,19711053],[1965,20071104],[1966,20448496],[1967,20819767],[1968,21143100],[1969,21448073],[1970,21749986],[1971,22026400],[1972,22284500],[1973,22559500],[1974,22874700],[1975,23209200],[1976,23517500],[1977,23796400],[1978,24036300],[1979,24276900],[1980,24593300],[1981,24900000],[1982,25201900],[1983,25456300],[1984,25701800],[1985,25941600],[1986,26203800],[1987,26549700],[1988,26894800],[1989,27379300],[1990,27790600],[1991,28117600],[1992,28523502],[1993,28920644],[1994,29262472],[1995,29619002],[1996,29983162],[1997,30305843],[1998,30628924],[1999,30957019],[2000,31278097],[2001,31592805],[2002,31902268],[2003,32207113],[2004,32507874],[2005,32805041],[2006,33098932],[2007,33390141],[2008,33679263]],"lifeExpectancy":[[1800,39],[1831,39.05],[1841,40.32],[1851,41.06],[1861,41.6],[1871,42.56],[1881,44.73],[1891,45.17],[1901,48.63],[1911,52.51],[1921,57.02],[1922,57.02],[1923,57.02],[1924,58.83],[1925,59.31],[1926,57.99],[1927,58.68],[1928,58.57],[1929,57.97],[1930,58.95],[1931,60.36],[1932,61.43],[1933,62.36],[1934,62.77],[1935,62.49],[1936,62.72],[1937,61.35],[1938,63.31],[1939,63.74],[1940,64.01],[1941,63.76],[1942,64.7],[1943,64.61],[1944,65.35],[1945,66.33],[1946,66.53],[1947,66.78],[1948,67.33],[1949,67.65],[1950,68.28],[1951,68.55],[1952,68.75],[1953,69.13],[1954,69.99],[1955,70.05],[1956,70.04],[1957,69.96],[1958,70.62],[1959,70.66],[1960,71.04],[1961,71.27],[1962,71.3],[1963,71.31],[1964,71.69],[1965,71.79],[1966,71.92],[1967,72.13],[1968,72.29],[1969,72.45],[1970,72.65],[1971,72.98],[1972,72.88],[1973,73.11],[1974,73.19],[1975,73.49],[1976,73.92],[1977,74.21],[1978,74.54],[1979,74.9],[1980,75.14],[1981,75.55],[1982,75.76],[1983,76.13],[1984,76.43],[1985,76.41],[1986,76.56],[1987,76.86],[1988,76.93],[1989,77.2],[1990,77.51],[1991,77.69],[1992,77.95],[1993,77.83],[1994,78.01],[1995,78.13],[1996,78.4],[1997,78.61],[1998,78.83],[1999,79.05],[2000,79.41],[2001,79.65],[2002,79.77],[2003,79.95],[2004,80.25],[2005,80.36],[2006,80.78],[2007,80.59],[2008,80.74],[2009,80.89]]},{"name":"Chile","region":"America","income":[[1800,702.1],[1820,702.1],[1821,671.26],[1822,674.88],[1823,672.16],[1824,655.85],[1825,675.33],[1826,680.4],[1827,683.34],[1828,678.3],[1829,682.26],[1830,671.74],[1831,670.8],[1832,679.53],[1833,676.85],[1834,691.32],[1835,706.81],[1836,701.53],[1837,718.11],[1838,721.22],[1839,722.49],[1840,759.86],[1841,761.15],[1842,769.85],[1843,784.83],[1844,787.67],[1845,802.73],[1846,821],[1847,829.82],[1848,854.98],[1849,906.14],[1850,942.87],[1851,959.04],[1852,977.78],[1853,946.81],[1854,964.38],[1855,998.49],[1856,1000.39],[1857,1022.86],[1858,1057.28],[1859,1081.1],[1860,1106.69],[1861,1096.14],[1862,1081.49],[1863,1111.61],[1864,1158.9],[1865,1186.33],[1866,1199.8],[1867,1141.19],[1868,1186.1],[1869,1291.65],[1870,1305.81],[1871,1288.95],[1872,1364.89],[1873,1433.73],[1874,1353.28],[1875,1443.33],[1876,1406.65],[1877,1341.24],[1878,1401.5],[1879,1590.66],[1880,1761.15],[1881,1796.41],[1882,1917.94],[1883,1902.05],[1884,1891.54],[1885,1809.21],[1886,1859.31],[1887,1961.87],[1888,1858.47],[1889,1880.77],[1890,1990.16],[1891,2124.06],[1892,2054.33],[1893,2128.49],[1894,2066.71],[1895,2183.84],[1896,2168.76],[1897,2094.59],[1898,2319.9],[1899,2306.31],[1900,2220.49],[1901,2249.32],[1902,2320.22],[1903,2164.58],[1904,2315.07],[1905,2286.48],[1906,2437.44],[1907,2537.55],[1908,2775.6],[1909,2758.56],[1910,3036.29],[1911,2921.34],[1912,3003.54],[1913,3024.38],[1914,2526.96],[1915,2417.9],[1916,2930.1],[1917,2958.57],[1918,2961.16],[1919,2510.4],[1920,2801.57],[1921,2398.38],[1922,2455.04],[1923,2919.39],[1924,3098.6],[1925,3190.46],[1926,2884.86],[1927,2793.06],[1928,3372.55],[1929,3497.1],[1930,2893.24],[1931,2244.42],[1932,1866.7],[1933,2263.32],[1934,2687.51],[1935,2794.54],[1936,2881.79],[1937,3219.61],[1938,3199.01],[1939,3207.47],[1940,3275.24],[1941,3178.6],[1942,3264.58],[1943,3295.38],[1944,3295.07],[1945,3513.35],[1946,3743.95],[1947,3279.23],[1948,3756.64],[1949,3611.84],[1950,3714],[1951,3775.99],[1952,3939.98],[1953,4161.72],[1954,3954.37],[1955,4023.33],[1956,4004.52],[1957,4315.62],[1958,4444.52],[1959,4090.77],[1960,4321.77],[1961,4418.96],[1962,4519.09],[1963,4695.23],[1964,4694.22],[1965,4632.34],[1966,5044.56],[1967,5106.65],[1968,5189.48],[1969,5283.39],[1970,5294.52],[1971,5664.81],[1972,5494.02],[1973,5094.38],[1974,5052.19],[1975,4324.83],[1976,4399.45],[1977,4756.76],[1978,5071.09],[1979,5409.11],[1980,5748.92],[1981,6003.99],[1982,5095.67],[1983,4868.24],[1984,5071.32],[1985,5090.75],[1986,5290.96],[1987,5547.06],[1988,5850.79],[1989,6359.08],[1990,6478.75],[1991,6877.27],[1992,7596.13],[1993,8000.88],[1994,8501.17],[1995,9082.42],[1996,9620.05],[1997,10118.05],[1998,10310.03],[1999,10105.61],[2000,10435.17],[2001,10665.2],[2002,10778.78],[2003,11082.55],[2004,11649.71],[2005,12262],[2006,12677.5],[2007,13124.6],[2008,13474.41],[2009,13087.38]],"population":[[1800,771447],[1820,771447],[1821,789144],[1822,807304],[1823,825890],[1824,844866],[1825,864198],[1826,883855],[1827,903807],[1828,924027],[1829,944490],[1830,965173],[1831,986056],[1832,1007120],[1833,1028350],[1834,1049733],[1835,1071256],[1836,1092912],[1837,1114694],[1838,1136597],[1839,1158619],[1840,1180761],[1841,1203023],[1842,1225410],[1843,1247926],[1844,1270578],[1845,1293375],[1846,1316325],[1847,1339439],[1848,1362729],[1849,1386207],[1850,1409885],[1851,1433777],[1852,1457897],[1853,1482258],[1854,1506873],[1855,1531758],[1856,1556924],[1857,1582386],[1858,1608154],[1859,1634242],[1860,1660659],[1861,1687416],[1862,1714521],[1863,1741983],[1864,1769808],[1865,1798001],[1866,1826566],[1867,1855505],[1868,1884819],[1869,1914507],[1870,1944569],[1871,1974998],[1872,2005790],[1873,2036939],[1874,2068435],[1875,2100268],[1876,2132427],[1877,2164899],[1878,2197670],[1879,2230723],[1880,2264042],[1881,2297611],[1882,2331409],[1883,2365419],[1884,2399621],[1885,2433995],[1886,2468522],[1887,2503181],[1888,2537954],[1889,2572823],[1890,2607769],[1891,2642778],[1892,2677834],[1893,2712925],[1894,2748040],[1895,2783171],[1896,2818312],[1897,2853462],[1898,2888620],[1899,2923792],[1900,2958986],[1901,2994214],[1902,3029494],[1903,3064845],[1904,3100295],[1905,3135874],[1906,3171619],[1907,3207571],[1908,3243777],[1909,3280289],[1910,3317166],[1911,3354469],[1912,3392269],[1913,3430640],[1914,3469662],[1915,3509420],[1916,3550005],[1917,3591512],[1918,3634043],[1919,3677702],[1920,3722598],[1921,3768846],[1922,3816561],[1923,3865863],[1924,3916875],[1925,3969721],[1926,4024523],[1927,4081406],[1928,4140494],[1929,4201905],[1930,4265756],[1931,4332156],[1932,4401207],[1933,4473001],[1934,4547615],[1935,4625112],[1936,4705534],[1937,4788901],[1938,4875203],[1939,4964398],[1940,5056404],[1941,5151095],[1942,5248293],[1943,5347758],[1944,5449185],[1945,5552190],[1946,5656303],[1947,5760959],[1948,5865486],[1949,5969096],[1950,6090833],[1951,6251933],[1952,6377619],[1953,6492774],[1954,6612138],[1955,6743269],[1956,6888843],[1957,7048426],[1958,7219783],[1959,7399842],[1960,7585349],[1961,7773314],[1962,7961258],[1963,8147349],[1964,8330423],[1965,8509950],[1966,8685954],[1967,8858908],[1968,9029621],[1969,9199122],[1970,9368558],[1971,9540298],[1972,9717524],[1973,9896635],[1974,10076544],[1975,10251542],[1976,10432214],[1977,10599793],[1978,10759823],[1979,10922822],[1980,11093718],[1981,11282304],[1982,11487112],[1983,11686845],[1984,11879139],[1985,12066701],[1986,12259840],[1987,12463354],[1988,12677524],[1989,12901157],[1990,13127760],[1991,13352503],[1992,13572994],[1993,13788271],[1994,14000060],[1995,14205449],[1996,14404243],[1997,14599929],[1998,14790995],[1999,14975383],[2000,15153450],[2001,15327316],[2002,15497046],[2003,15662645],[2004,15823957],[2005,15980912],[2006,16134219],[2007,16284741],[2008,16432536]],"lifeExpectancy":[[1800,32],[1902,32],[1907,30.5],[1912,31.9],[1917,32.2],[1922,31.6],[1927,37],[1932,38.7],[1937,39.1],[1942,44],[1947,47.9],[1950,54.34],[1951,54.45],[1952,54.67],[1953,54.91],[1954,55.16],[1955,55.43],[1956,55.72],[1957,56.02],[1958,56.33],[1959,56.67],[1960,57.03],[1961,57.42],[1962,57.83],[1963,58.28],[1964,58.76],[1965,59.26],[1966,59.78],[1967,60.32],[1968,60.87],[1969,61.44],[1970,62.02],[1971,62.63],[1972,63.27],[1973,63.93],[1974,64.62],[1975,65.34],[1976,66.08],[1977,66.84],[1978,67.6],[1979,68.35],[1980,69.07],[1981,69.74],[1982,70.36],[1983,70.91],[1984,71.4],[1985,71.83],[1986,72.22],[1987,72.57],[1988,72.91],[1989,73.24],[1990,73.56],[1991,73.87],[1992,74.56],[1993,74.64],[1994,75.12],[1995,75.04],[1996,75.36],[1997,75.93],[1998,76.05],[1999,76.25],[2000,77.01],[2001,76.86],[2002,77.42],[2003,77.48],[2004,77.53],[2005,77.93],[2006,78.34],[2007,78.45],[2008,78.56],[2009,78.67]]},{"name":"Colombia","region":"America","income":[[1800,522.98],[1820,522.98],[1905,643.11],[1906,648.17],[1907,677.81],[1908,702],[1909,724.72],[1910,751.11],[1911,772.97],[1912,795.3],[1913,813.77],[1914,823.55],[1915,840.3],[1916,861.89],[1917,874.93],[1918,900.89],[1919,952.4],[1920,992.81],[1921,1024.24],[1922,1067.09],[1923,1107.43],[1924,1141.8],[1925,1173.69],[1926,1255.5],[1927,1336],[1928,1399.43],[1929,1413.64],[1930,1384.68],[1931,1345.95],[1932,1419.21],[1933,1482.01],[1934,1557.56],[1935,1577.06],[1936,1641.72],[1937,1647.76],[1938,1735.24],[1939,1795.23],[1940,1786.07],[1941,1768.32],[1942,1724.65],[1943,1685.56],[1944,1754.34],[1945,1789.64],[1946,1913.78],[1947,1936.98],[1948,1940.11],[1949,2057.58],[1950,2087.95],[1951,2079.14],[1952,2144.12],[1953,2184.17],[1954,2270.06],[1955,2286.56],[1956,2321.02],[1957,2323.81],[1958,2292.18],[1959,2381.6],[1960,2399.03],[1961,2443.57],[1962,2492.35],[1963,2493.77],[1964,2566.86],[1965,2591.01],[1966,2657.98],[1967,2678.73],[1968,2770.65],[1969,2871.63],[1970,2987.81],[1971,3095.9],[1972,3264.66],[1973,3415.45],[1974,3557.45],[1975,3587.95],[1976,3706.3],[1977,3815.81],[1978,4095.24],[1979,4263.25],[1980,4379.58],[1981,4424.36],[1982,4397.58],[1983,4406.32],[1984,4470.55],[1985,4533.92],[1986,4719.37],[1987,4903.22],[1988,5046.81],[1989,5145.39],[1990,5302.34],[1991,5321.6],[1992,5444.65],[1993,5645.09],[1994,5823.7],[1995,6013.41],[1996,6022.65],[1997,6117.36],[1998,6041.41],[1999,5680.88],[2000,5749.55],[2001,5738],[2002,5755.26],[2003,5885.52],[2004,6080.32],[2005,6306],[2006,6663.54],[2007,7081.42],[2008,7168.15],[2009,7090.69]],"population":[[1800,1206000],[1820,1206000],[1850,2065000],[1870,2392000],[1890,3369000],[1900,3998000],[1901,4079000],[1902,4162000],[1903,4247000],[1904,4334000],[1905,4422000],[1906,4512000],[1907,4604000],[1908,4697000],[1909,4793000],[1910,4890000],[1911,4990000],[1912,5091000],[1913,5195000],[1914,5330000],[1915,5468000],[1916,5609000],[1917,5754000],[1918,5903000],[1919,6056000],[1920,6213000],[1921,6374000],[1922,6539000],[1923,6709000],[1924,6882000],[1925,7061000],[1926,7243000],[1927,7431000],[1928,7624000],[1929,7821000],[1930,7914000],[1931,8009000],[1932,8104000],[1933,8201000],[1934,8299000],[1935,8398000],[1936,8498000],[1937,8599000],[1938,8702000],[1939,8935000],[1940,9174000],[1941,9419000],[1942,9671000],[1943,9930000],[1944,10196000],[1945,10469000],[1946,10749000],[1947,11036000],[1948,11332000],[1949,11635000],[1950,11591658],[1951,11965000],[1952,12350771],[1953,12749619],[1954,13162003],[1955,13588405],[1956,14029321],[1957,14485993],[1958,14958277],[1959,15446730],[1960,15952727],[1961,16476124],[1962,17009885],[1963,17546017],[1964,18090000],[1965,18646175],[1966,19201732],[1967,19764027],[1968,20321665],[1969,20869140],[1970,21429658],[1971,21992579],[1972,22542890],[1973,23069231],[1974,23593390],[1975,24114177],[1976,24620486],[1977,25094412],[1978,25542727],[1979,26030848],[1980,26582811],[1981,27159381],[1982,27764644],[1983,28389398],[1984,29027923],[1985,29678395],[1986,30326818],[1987,30964245],[1988,31589376],[1989,32216557],[1990,32858579],[1991,33518610],[1992,34202721],[1993,34896573],[1994,35588746],[1995,36280883],[1996,36971016],[1997,37657830],[1998,38339937],[1999,39016113],[2000,39685655],[2001,40349388],[2002,41008227],[2003,41662073],[2004,42310775],[2005,42954279],[2006,43593035],[2007,44227550],[2008,44858264]],"lifeExpectancy":[[1800,32],[1912,32],[1918,31.99],[1930,32],[1938,36.6],[1944,41.85],[1950,48.37],[1951,48.97],[1952,50.14],[1953,51.22],[1954,52.23],[1955,53.16],[1956,54.02],[1957,54.79],[1958,55.5],[1959,56.14],[1960,56.72],[1961,57.25],[1962,57.74],[1963,58.2],[1964,58.64],[1965,59.06],[1966,59.46],[1967,59.84],[1968,60.2],[1969,60.54],[1970,60.87],[1971,61.21],[1972,61.56],[1973,61.93],[1974,62.32],[1975,62.75],[1976,63.23],[1977,63.76],[1978,64.32],[1979,64.9],[1980,65.48],[1981,66.03],[1982,66.52],[1983,66.95],[1984,67.3],[1985,67.57],[1986,67.78],[1987,67.93],[1988,68.05],[1989,68.17],[1990,68.3],[1991,68.45],[1992,68.64],[1993,68.86],[1994,69.13],[1995,69.43],[1996,69.75],[1997,70.07],[1998,70.39],[1999,70.7],[2000,70.98],[2001,71.25],[2002,71.51],[2003,71.76],[2004,72.01],[2005,72.25],[2006,72.49],[2007,72.72],[2008,72.96],[2009,73.19]]},{"name":"Costa Rica","region":"America","income":[[1800,670.12],[1820,670.12],[1920,2018.1],[1921,1930.71],[1922,2101.23],[1923,1898.13],[1924,2123.84],[1925,2069.57],[1926,2239.72],[1927,2033.47],[1928,2094.67],[1929,1965.69],[1930,2020.83],[1931,1956.83],[1932,1766.24],[1933,2063.55],[1934,1785.98],[1935,1898.13],[1936,1988.51],[1937,2239.22],[1938,2331.87],[1939,2320.61],[1940,2190.97],[1941,2414.62],[1942,2097.5],[1943,2061.95],[1944,1813.06],[1945,2006.27],[1946,2186.31],[1947,2529.91],[1948,2603.3],[1949,2638.98],[1950,2439.82],[1951,2425.02],[1952,2627.01],[1953,2924],[1954,2845.1],[1955,3057.12],[1956,2859.88],[1957,2990.01],[1958,3237.3],[1959,3228.87],[1960,3374.88],[1961,3383.62],[1962,3460.94],[1963,3627.39],[1964,3680.52],[1965,3885.68],[1966,4049.72],[1967,4161.73],[1968,4346.33],[1969,4501.74],[1970,4665.44],[1971,4833.79],[1972,5118.15],[1973,5367.23],[1974,5505.86],[1975,5463.45],[1976,5600.27],[1977,5926.88],[1978,6052.64],[1979,6163.74],[1980,6102.95],[1981,5817.93],[1982,5262.73],[1983,5257.08],[1984,5508.07],[1985,5394.25],[1986,5525.6],[1987,5629.92],[1988,5668.47],[1989,5839.22],[1990,5899.67],[1991,5885.81],[1992,6160.42],[1993,6374.84],[1994,6508.09],[1995,6515.31],[1996,6444.68],[1997,6677.05],[1998,7106.62],[1999,7637.89],[2000,7672.85],[2001,7627.11],[2002,7723.45],[2003,8098.56],[2004,8301.9],[2005,8661],[2006,9231.72],[2007,9765.16],[2008,9840.79],[2009,9551.56]],"population":[[1801,53000],[1820,63000],[1824,65000],[1836,78000],[1844,94000],[1850,101000],[1864,120000],[1870,137000],[1875,153000],[1883,182000],[1892,243000],[1900,297000],[1901,310000],[1902,320000],[1903,320000],[1904,330000],[1905,340000],[1906,340000],[1907,350000],[1908,350000],[1909,360000],[1910,363000],[1911,366000],[1912,369000],[1913,372000],[1914,390000],[1915,390000],[1916,400000],[1917,400000],[1918,410000],[1919,420000],[1920,420000],[1921,430000],[1922,430000],[1923,440000],[1924,450000],[1925,460000],[1926,470000],[1927,470000],[1928,480000],[1929,490000],[1930,500000],[1931,510000],[1932,520000],[1933,530000],[1934,540000],[1935,550000],[1936,560000],[1937,580000],[1938,590000],[1939,610000],[1940,620000],[1941,630000],[1942,650000],[1943,660000],[1944,680000],[1945,700000],[1946,710000],[1947,730000],[1948,750000],[1949,770000],[1950,866982],[1951,895336],[1952,926317],[1953,958893],[1954,993786],[1955,1031782],[1956,1071654],[1957,1112300],[1958,1154408],[1959,1200148],[1960,1248022],[1961,1296587],[1962,1345187],[1963,1393441],[1964,1440184],[1965,1487605],[1966,1538442],[1967,1588717],[1968,1638476],[1969,1687100],[1970,1735523],[1971,1785636],[1972,1834796],[1973,1886035],[1974,1937413],[1975,1991580],[1976,2048557],[1977,2108457],[1978,2192367],[1979,2259714],[1980,2299124],[1981,2357285],[1982,2424367],[1983,2494353],[1984,2567516],[1985,2643808],[1986,2723111],[1987,2799811],[1988,2875267],[1989,2951454],[1990,3027175],[1991,3101029],[1992,3173216],[1993,3244282],[1994,3314588],[1995,3383786],[1996,3451722],[1997,3518107],[1998,3583162],[1999,3647319],[2000,3710558],[2001,3773057],[2002,3834934],[2003,3896092],[2004,3956507],[2005,4016173],[2006,4075261],[2007,4133884],[2008,4191948]],"lifeExpectancy":[[1800,30.21],[1875,30.21],[1889,30.2],[1900,34.7],[1910,35.1],[1920,35.1],[1930,42.2],[1940,46.9],[1950,56.11],[1951,56.39],[1952,56.97],[1953,57.55],[1954,58.13],[1955,58.71],[1956,59.29],[1957,59.87],[1958,60.45],[1959,61.03],[1960,61.61],[1961,62.18],[1962,62.74],[1963,63.29],[1964,63.83],[1965,64.36],[1966,64.87],[1967,65.37],[1968,65.86],[1969,66.35],[1970,66.83],[1971,67.34],[1972,67.86],[1973,68.4],[1974,68.96],[1975,69.54],[1976,70.15],[1977,70.77],[1978,71.39],[1979,72],[1980,72.56],[1981,73.07],[1982,73.5],[1983,73.86],[1984,74.15],[1985,74.39],[1986,74.59],[1987,74.79],[1988,75],[1989,75.24],[1990,75.5],[1991,75.77],[1992,76.05],[1993,76.31],[1994,76.56],[1995,76.79],[1996,77],[1997,77.2],[1998,77.39],[1999,77.57],[2000,77.74],[2001,77.9],[2002,78.06],[2003,78.21],[2004,78.35],[2005,78.48],[2006,78.61],[2007,78.74],[2008,78.86],[2009,78.98]]},{"name":"Cuba","region":"America","income":[[1800,1123.88],[1820,1123.88],[1929,4148.69],[1930,3811.08],[1931,3142.29],[1932,2474.51],[1933,2627.11],[1934,3028.01],[1935,3471.57],[1936,3982.61],[1937,4505],[1938,3437.35],[1939,3572.08],[1940,3058.45],[1941,4047.45],[1942,3344.39],[1943,3649.49],[1944,4128.31],[1945,4496.19],[1946,4793.61],[1947,5368.57],[1948,4664.52],[1949,4957.64],[1950,5180.44],[1951,5507.89],[1952,5586.54],[1953,4811.18],[1954,4953.84],[1955,5076.02],[1956,5429.24],[1957,6092.17],[1958,5982],[1959,5232.62],[1960,5194.75],[1961,5190.1],[1962,5180.76],[1963,5143.38],[1964,5087.17],[1965,5033.96],[1966,5193.19],[1967,5690.27],[1968,5265.77],[1969,5116.29],[1970,4854.33],[1971,5155.9],[1972,5305.45],[1973,5683.94],[1974,5883.88],[1975,6086.94],[1976,6173.86],[1977,6380.49],[1978,6708.18],[1979,6821.94],[1980,6695.01],[1981,7208.8],[1982,7316.92],[1983,7453.54],[1984,7645.61],[1985,7710.16],[1986,7651.77],[1987,7532.92],[1988,7599.98],[1989,7549.09],[1990,7463.69],[1991,6537.35],[1992,5592.84],[1993,4669.61],[1994,4738.16],[1995,4875.77],[1996,5277.62],[1997,5431.99],[1998,5479.51],[1999,5823.76],[2000,6115.59],[2001,6270],[2002,6340.65],[2003,6500.13],[2004,6877.99],[2005,7407.24],[2006,8295.24],[2007,8894.89],[2008,9277.96]],"population":[[1817,572000],[1820,605000],[1827,704000],[1841,1008000],[1850,1186000],[1861,1397000],[1870,1331000],[1877,1522000],[1887,1632000],[1900,1658000],[1901,1716000],[1902,1775000],[1903,1837000],[1904,1879000],[1905,1927000],[1906,1979000],[1907,2034000],[1908,2092000],[1909,2154000],[1910,2219000],[1911,2287000],[1912,2358000],[1913,2431000],[1914,2507000],[1915,2585000],[1916,2664000],[1917,2746000],[1918,2828000],[1919,2912000],[1920,2997000],[1921,3083000],[1922,3170000],[1923,3257000],[1924,3345000],[1925,3432000],[1926,3519000],[1927,3606000],[1928,3693000],[1929,3742000],[1930,3837000],[1931,3910000],[1932,3984000],[1933,4060000],[1934,4137000],[1935,4221000],[1936,4289000],[1937,4357000],[1938,4428000],[1939,4497000],[1940,4566000],[1941,4635000],[1942,4704000],[1943,4779000],[1944,4849000],[1945,4932000],[1946,5039000],[1947,5152000],[1948,5268000],[1949,5386000],[1950,5784797],[1951,5891797],[1952,6007797],[1953,6128797],[1954,6254337],[1955,6381106],[1956,6512938],[1957,6640752],[1958,6763058],[1959,6900886],[1960,7027210],[1961,7134000],[1962,7254373],[1963,7414884],[1964,7612275],[1965,7809916],[1966,7985316],[1967,8139332],[1968,8283933],[1969,8421048],[1970,8542746],[1971,8669625],[1972,8831348],[1973,9001355],[1974,9152866],[1975,9290074],[1976,9420906],[1977,9537988],[1978,9634028],[1979,9710150],[1980,9652975],[1981,9711975],[1982,9789224],[1983,9885596],[1984,9982299],[1985,10078658],[1986,10162192],[1987,10239839],[1988,10334044],[1989,10439251],[1990,10544793],[1991,10642491],[1992,10723260],[1993,10788020],[1994,10844611],[1995,10896802],[1996,10943047],[1997,10983007],[1998,11029133],[1999,11082746],[2000,11134273],[2001,11182298],[2002,11226999],[2003,11268976],[2004,11308764],[2005,11346670],[2006,11382820],[2007,11416987],[2008,11449006]],"lifeExpectancy":[[1800,32.2],[1804,32.7],[1809,33.5],[1814,34.2],[1819,34.7],[1824,36.4],[1829,35.6],[1834,36.3],[1839,36.6],[1844,36],[1849,36.2],[1854,36.5],[1859,36.6],[1864,34.8],[1869,29.6],[1874,29.9],[1879,35.8],[1884,41],[1889,43.7],[1894,22.9],[1899,18.9],[1900,33.11],[1905,34.16],[1910,35.22],[1915,36.29],[1920,37.38],[1925,38.76],[1930,41.5],[1935,44.57],[1940,47.47],[1945,50.93],[1950,58.31],[1951,58.61],[1952,59.19],[1953,59.77],[1954,60.36],[1955,60.94],[1956,61.52],[1957,62.11],[1958,62.7],[1959,63.29],[1960,63.89],[1961,64.51],[1962,65.13],[1963,65.76],[1964,66.4],[1965,67.03],[1966,67.65],[1967,68.25],[1968,68.82],[1969,69.36],[1970,69.88],[1971,70.37],[1972,70.85],[1973,71.31],[1974,71.76],[1975,72.19],[1976,72.59],[1977,72.96],[1978,73.29],[1979,73.58],[1980,73.82],[1981,74.03],[1982,74.19],[1983,74.33],[1984,74.44],[1985,74.52],[1986,74.57],[1987,74.6],[1988,74.61],[1989,74.62],[1990,74.64],[1991,74.69],[1992,74.8],[1993,74.95],[1994,75.16],[1995,75.41],[1996,75.67],[1997,75.94],[1998,76.19],[1999,76.42],[2000,76.64],[2001,76.86],[2002,77.1],[2003,77.36],[2004,77.64],[2005,77.93],[2006,78.21],[2007,78.46],[2008,78.67],[2009,78.84]]},{"name":"Ecuador","region":"America","income":[[1800,1085.13],[1820,1085.13],[1939,2280.28],[1940,2377.52],[1941,2319.07],[1942,2384.45],[1943,2619.62],[1944,2584.66],[1945,2530.62],[1946,2760.5],[1947,2980.45],[1948,3296.76],[1949,3262.54],[1950,3266.23],[1951,3217.46],[1952,3522.11],[1953,3503.58],[1954,3687.72],[1955,3684.14],[1956,3717.83],[1957,3780.55],[1958,3784.77],[1959,3877.18],[1960,4012.4],[1961,3995.41],[1962,4086.11],[1963,4068.08],[1964,4227.1],[1965,4498.49],[1966,4480.75],[1967,4579.07],[1968,4690.4],[1969,4801.95],[1970,4988.61],[1971,5122.72],[1972,5280.99],[1973,5768.63],[1974,5931.37],[1975,6065.29],[1976,6463.83],[1977,6679.62],[1978,6944.34],[1979,7117.72],[1980,7239.77],[1981,7331.12],[1982,7213.79],[1983,6876],[1984,6968.94],[1985,7075.66],[1986,7096.73],[1987,6481.78],[1988,6992.25],[1989,6826.42],[1990,6842.3],[1991,7042.35],[1992,7103.7],[1993,7107.17],[1994,7268.52],[1995,7336.07],[1996,7331.53],[1997,7429.46],[1998,7319.01],[1999,6670.59],[2000,5616.42],[2001,5812.3],[2002,5773.04],[2003,5911],[2004,6311.01],[2005,6533],[2006,6679.1],[2007,6721.26],[2008,7108.36],[2009,7035.45]],"population":[[1800,500000],[1820,500000],[1850,816000],[1870,1013000],[1900,1400000],[1901,1420000],[1902,1441000],[1903,1462000],[1904,1483000],[1905,1505000],[1906,1527000],[1907,1549000],[1908,1571000],[1909,1594000],[1910,1617000],[1911,1641000],[1912,1665000],[1913,1689000],[1914,1703000],[1915,1717000],[1916,1731000],[1917,1746000],[1918,1760000],[1919,1774000],[1920,1790000],[1921,1805000],[1922,1820000],[1923,1835000],[1924,1850000],[1925,1865000],[1926,1881000],[1927,1896000],[1928,1912000],[1929,1928000],[1930,1944000],[1931,1995000],[1932,2050000],[1933,2095000],[1934,2140000],[1935,2196000],[1936,2249000],[1937,2298000],[1938,2355000],[1939,2412000],[1940,2466000],[1941,2541000],[1942,2575000],[1943,2641000],[1944,2712000],[1945,2781000],[1946,2853000],[1947,2936000],[1948,3017000],[1949,3104000],[1950,3369955],[1951,3458093],[1952,3548753],[1953,3642591],[1954,3740256],[1955,3842399],[1956,3948587],[1957,4058385],[1958,4172445],[1959,4291418],[1960,4415956],[1961,4546197],[1962,4681707],[1963,4822279],[1964,4967705],[1965,5117779],[1966,5272639],[1967,5432424],[1968,5596925],[1969,5765935],[1970,5939246],[1971,6116773],[1972,6298651],[1973,6485013],[1974,6675986],[1975,6871698],[1976,7072687],[1977,7278866],[1978,7489432],[1979,7703577],[1980,7920499],[1981,8141078],[1982,8365850],[1983,8593494],[1984,8825829],[1985,9061664],[1986,9301083],[1987,9545158],[1988,9794122],[1989,10048223],[1990,10318036],[1991,10526095],[1992,10748394],[1993,10979476],[1994,11208048],[1995,11438004],[1996,11673950],[1997,11911819],[1998,12139965],[1999,12347543],[2000,12505204],[2001,12701839],[2002,12921234],[2003,13074082],[2004,13212742],[2005,13363593],[2006,13547510],[2007,13755680],[2008,13927650]],"lifeExpectancy":[[1800,32.9],[1939,32.9],[1950,47.27],[1951,47.52],[1952,48.05],[1953,48.61],[1954,49.19],[1955,49.81],[1956,50.44],[1957,51.1],[1958,51.78],[1959,52.46],[1960,53.12],[1961,53.76],[1962,54.35],[1963,54.9],[1964,55.39],[1965,55.83],[1966,56.23],[1967,56.61],[1968,56.99],[1969,57.38],[1970,57.78],[1971,58.2],[1972,58.64],[1973,59.09],[1974,59.57],[1975,60.06],[1976,60.59],[1977,61.14],[1978,61.71],[1979,62.31],[1980,62.92],[1981,63.55],[1982,64.19],[1983,64.82],[1984,65.45],[1985,66.06],[1986,66.66],[1987,67.24],[1988,67.8],[1989,68.33],[1990,68.85],[1991,69.35],[1992,69.84],[1993,70.31],[1994,70.78],[1995,71.24],[1996,71.69],[1997,72.13],[1998,72.56],[1999,72.97],[2000,73.36],[2001,73.7],[2002,74.01],[2003,74.27],[2004,74.49],[2005,74.67],[2006,74.83],[2007,74.98],[2008,75.12],[2009,75.26]]},{"name":"El Salvador","region":"America","income":[[1800,804.31],[1820,804.31],[1920,1834.11],[1921,1808.24],[1922,1868.57],[1923,1916.16],[1924,2000.99],[1925,1820.16],[1926,2102.98],[1927,1821.22],[1928,2074.46],[1929,2047.83],[1930,2055.71],[1931,1817.38],[1932,1619.03],[1933,1813.79],[1934,1848.38],[1935,2008.06],[1936,1937.73],[1937,2094.71],[1938,1922.39],[1939,2036.56],[1940,2185.33],[1941,2112.35],[1942,2253.76],[1943,2428.97],[1944,2264.25],[1945,2145.53],[1946,2154.67],[1947,2679.65],[1948,3357.89],[1949,2999.55],[1950,2928.38],[1951,2911.2],[1952,3048.3],[1953,3178.36],[1954,3126.4],[1955,3195.05],[1956,3346.59],[1957,3421.52],[1958,3392.04],[1959,3437.78],[1960,3468.95],[1961,3478.67],[1962,3776.8],[1963,3817.2],[1964,4047.7],[1965,4132.17],[1966,4271.86],[1967,4358.6],[1968,4345.97],[1969,4339.02],[1970,4301.25],[1971,4370.84],[1972,4520.25],[1973,4607.17],[1974,4791.29],[1975,4924.57],[1976,4980.98],[1977,5138.92],[1978,5339.79],[1979,5124.05],[1980,4629.77],[1981,4299.26],[1982,4098.34],[1983,4083.37],[1984,4113.8],[1985,4140.59],[1986,4109.36],[1987,4140.44],[1988,4142.57],[1989,4114.22],[1990,4167.27],[1991,4213.31],[1992,4444.23],[1993,4645.22],[1994,4836.25],[1995,5042.31],[1996,5037.56],[1997,5154.83],[1998,5248.87],[1999,5325.56],[2000,5341.27],[2001,5332.23],[2002,5351.57],[2003,5350.2],[2004,5349.69],[2005,5403],[2006,5592.24],[2007,5794.23],[2008,5894.67],[2009,5646.85]],"population":[[1800,248000],[1820,248000],[1850,366000],[1870,492000],[1900,766000],[1901,782000],[1902,799000],[1903,816000],[1904,834000],[1905,851000],[1906,869000],[1907,888000],[1908,907000],[1909,926000],[1910,946000],[1911,966000],[1912,987000],[1913,1008000],[1914,1030000],[1915,1052000],[1916,1074000],[1917,1098000],[1918,1121000],[1919,1145000],[1920,1170000],[1921,1190000],[1922,1220000],[1923,1240000],[1924,1270000],[1925,1300000],[1926,1330000],[1927,1350000],[1928,1390000],[1929,1410000],[1930,1440000],[1931,1460000],[1932,1470000],[1933,1490000],[1934,1510000],[1935,1530000],[1936,1550000],[1937,1570000],[1938,1590000],[1939,1610000],[1940,1630000],[1941,1650000],[1942,1680000],[1943,1690000],[1944,1720000],[1945,1740000],[1946,1760000],[1947,1780000],[1948,1810000],[1949,1840000],[1950,1939800],[1951,1989756],[1952,2042865],[1953,2099130],[1954,2158554],[1955,2221139],[1956,2286889],[1957,2355805],[1958,2427891],[1959,2503149],[1960,2581583],[1961,2664838],[1962,2747687],[1963,2836090],[1964,2923870],[1965,3017852],[1966,3128206],[1967,3232927],[1968,3347320],[1969,3469177],[1970,3603907],[1971,3710335],[1972,3790903],[1973,3878197],[1974,3971783],[1975,4071179],[1976,4174737],[1977,4282586],[1978,4396275],[1979,4508055],[1980,4566199],[1981,4515094],[1982,4474873],[1983,4521153],[1984,4587633],[1985,4664361],[1986,4751017],[1987,4842194],[1988,4930397],[1989,5015522],[1990,5099884],[1991,5185604],[1992,5274649],[1993,5369502],[1994,5466906],[1995,5568437],[1996,5674036],[1997,5783439],[1998,5895283],[1999,6008356],[2000,6122515],[2001,6237662],[2002,6353681],[2003,6470379],[2004,6587541],[2005,6704932],[2006,6822378],[2007,6939688],[2008,7057131]],"lifeExpectancy":[[1800,28.7],[1930,28.7],[1950,43.24],[1951,43.7],[1952,44.61],[1953,45.51],[1954,46.39],[1955,47.26],[1956,48.1],[1957,48.94],[1958,49.75],[1959,50.54],[1960,51.3],[1961,52.03],[1962,52.72],[1963,53.37],[1964,53.97],[1965,54.52],[1966,55.02],[1967,55.48],[1968,55.9],[1969,56.27],[1970,56.58],[1971,56.82],[1972,56.98],[1973,57.07],[1974,57.09],[1975,57.05],[1976,56.93],[1977,56.75],[1978,56.55],[1979,56.39],[1980,56.34],[1981,56.5],[1982,56.9],[1983,57.56],[1984,58.48],[1985,59.61],[1986,60.9],[1987,62.26],[1988,63.59],[1989,64.82],[1990,65.91],[1991,66.81],[1992,67.52],[1993,68.08],[1994,68.5],[1995,68.78],[1996,68.97],[1997,69.11],[1998,69.23],[1999,69.36],[2000,69.53],[2001,69.74],[2002,69.97],[2003,70.21],[2004,70.47],[2005,70.74],[2006,71],[2007,71.26],[2008,71.5],[2009,71.74]]},{"name":"French Guiana","region":"America","income":[[1800,819.27],[1820,819.27],[1913,1511.59],[1950,2612.06],[1973,7212.76],[1990,7210.63],[2001,8495.63],[2002,8869.85],[2003,8344.72],[2004,7910.72],[2005,8202.74]],"population":[[1800,9899],[1820,9899],[1950,25516],[1951,26083],[1952,26664],[1953,27257],[1954,27863],[1955,28483],[1956,29145],[1957,29853],[1958,30609],[1959,31400],[1960,32243],[1961,33206],[1962,34424],[1963,35973],[1964,37893],[1965,40035],[1966,42172],[1967,43991],[1968,45383],[1969,46782],[1970,48291],[1971,49934],[1972,51609],[1973,53190],[1974,54687],[1975,56261],[1976,57871],[1977,59707],[1978,62287],[1979,64907],[1980,67762],[1981,70885],[1982,73999],[1983,78844],[1984,83757],[1985,88828],[1986,94003],[1987,99323],[1988,104745],[1989,110251],[1990,115930],[1991,121664],[1992,127452],[1993,133287],[1994,139166],[1995,145082],[1996,150933],[1997,156616],[1998,162127],[1999,167459],[2000,172605],[2001,177562],[2002,182333],[2003,186917],[2004,191309],[2005,195506],[2006,199509],[2007,203321],[2008,206941]],"lifeExpectancy":[[1950,52.21],[1951,52.48],[1952,53.01],[1953,53.55],[1954,54.08],[1955,54.62],[1956,55.16],[1957,55.72],[1958,56.3],[1959,56.91],[1960,57.58],[1961,58.32],[1962,59.14],[1963,60.03],[1964,60.97],[1965,61.92],[1966,62.81],[1967,63.62],[1968,64.29],[1969,64.82],[1970,65.21],[1971,65.46],[1972,65.62],[1973,65.73],[1974,65.83],[1975,65.97],[1976,66.18],[1977,66.47],[1978,66.85],[1979,67.31],[1980,67.84],[1981,68.41],[1982,68.97],[1983,69.49],[1984,69.96],[1985,70.38],[1986,70.74],[1987,71.07],[1988,71.39],[1989,71.7],[1990,72.01],[1991,72.32],[1992,72.63],[1993,72.94],[1994,73.25],[1995,73.55],[1996,73.83],[1997,74.1],[1998,74.34],[1999,74.55],[2000,74.75],[2001,74.92],[2002,75.08],[2003,75.24],[2004,75.39],[2005,75.54],[2006,75.69],[2007,75.85],[2008,76],[2009,76.16]]},{"name":"Grenada","region":"America","income":[[1800,775.67],[1820,775.67],[1950,1320.46],[1970,2079.72],[1971,2231.37],[1972,2404.58],[1973,2622.9],[1974,2805.2],[1975,2911.44],[1976,3209.18],[1977,3439.56],[1978,3766.12],[1979,3877.83],[1980,3865.76],[1981,3862.08],[1982,3872.36],[1983,3816.39],[1984,3917.98],[1985,4099.47],[1986,4491.84],[1987,4947.83],[1988,5135.84],[1989,5504.78],[1990,5839.92],[1991,6057.94],[1992,6098.92],[1993,5978.42],[1994,6130.94],[1995,6279.52],[1996,6430.85],[1997,6690.02],[1998,7565.56],[1999,8137.77],[2000,8655.03],[2001,8320.16],[2002,8365.59],[2003,8862.07],[2004,8276.23],[2005,9128],[2006,8913.55],[2007,9353.93],[2008,9558.52],[2009,8826.9]],"population":[[1800,29409],[1820,29409],[1851,33000],[1861,32000],[1871,38000],[1881,42000],[1891,53000],[1901,63000],[1911,67000],[1921,66000],[1946,72000],[1950,75806],[1951,76969],[1952,78339],[1953,80254],[1954,82525],[1955,84621],[1956,85809],[1957,87086],[1958,88359],[1959,89239],[1960,90148],[1961,90865],[1962,91449],[1963,92076],[1964,92767],[1965,93290],[1966,93579],[1967,93879],[1968,94349],[1969,94867],[1970,95410],[1971,96034],[1972,96618],[1973,96857],[1974,96340],[1975,95819],[1976,95555],[1977,94280],[1978,92535],[1979,91354],[1980,90164],[1981,92354],[1982,92112],[1983,91899],[1984,91905],[1985,92203],[1986,92576],[1987,92719],[1988,92805],[1989,92825],[1990,92360],[1991,91837],[1992,91487],[1993,90904],[1994,90591],[1995,90603],[1996,90371],[1997,90005],[1998,89700],[1999,89470],[2000,89312],[2001,89227],[2002,89211],[2003,89258],[2004,89357],[2005,89502],[2006,89703],[2007,89971],[2008,90303]],"lifeExpectancy":[[1950,62.44],[1951,62.49],[1952,62.58],[1953,62.68],[1954,62.78],[1955,62.87],[1956,62.97],[1957,63.07],[1958,63.16],[1959,63.26],[1960,63.36],[1961,63.46],[1962,63.56],[1963,63.66],[1964,63.75],[1965,63.85],[1966,63.95],[1967,64.04],[1968,64.14],[1969,64.24],[1970,64.34],[1971,64.43],[1972,64.53],[1973,64.62],[1974,64.72],[1975,64.8],[1976,64.88],[1977,64.95],[1978,65.01],[1979,65.07],[1980,65.16],[1981,65.27],[1982,65.42],[1983,65.62],[1984,65.88],[1985,66.22],[1986,66.65],[1987,67.16],[1988,67.75],[1989,68.38],[1990,69.04],[1991,69.7],[1992,70.31],[1993,70.87],[1994,71.37],[1995,71.8],[1996,72.18],[1997,72.53],[1998,72.87],[1999,73.2],[2000,73.53],[2001,73.86],[2002,74.15],[2003,74.43],[2004,74.67],[2005,74.89],[2006,75.09],[2007,75.28],[2008,75.45],[2009,75.62]]},{"name":"Guadeloupe","region":"America","income":[[1800,760.98],[1820,760.98],[1913,1404.04],[1950,2426.2],[1973,3896.92],[1990,3510.82],[2001,6697.88],[2002,6987.87],[2003,6810.68],[2004,7416.83],[2005,7788.25]],"population":[[1800,80726],[1820,80726],[1950,208080],[1951,212927],[1952,218011],[1953,223303],[1954,229120],[1955,235385],[1956,242078],[1957,248602],[1958,255124],[1959,261974],[1960,268888],[1961,275714],[1962,282625],[1963,289527],[1964,295823],[1965,301565],[1966,306983],[1967,311603],[1968,315392],[1969,318493],[1970,320657],[1971,323709],[1972,326841],[1973,329477],[1974,331634],[1975,333418],[1976,334454],[1977,334846],[1978,335118],[1979,335616],[1980,336846],[1981,338693],[1982,340813],[1983,345275],[1984,349721],[1985,354125],[1986,358368],[1987,362691],[1988,367386],[1989,372445],[1990,377678],[1991,382946],[1992,388102],[1993,392897],[1994,397585],[1995,402359],[1996,407191],[1997,412050],[1998,416906],[1999,421729],[2000,426493],[2001,431170],[2002,435739],[2003,440189],[2004,444515],[2005,448713],[2006,452776],[2007,456698],[2008,460486]],"lifeExpectancy":[[1950,54.06],[1951,54.72],[1952,55.99],[1953,57.18],[1954,58.31],[1955,59.36],[1956,60.33],[1957,61.22],[1958,62.03],[1959,62.76],[1960,63.4],[1961,63.94],[1962,64.39],[1963,64.75],[1964,65.05],[1965,65.31],[1966,65.55],[1967,65.8],[1968,66.07],[1969,66.38],[1970,66.72],[1971,67.11],[1972,67.51],[1973,67.92],[1974,68.33],[1975,68.76],[1976,69.21],[1977,69.69],[1978,70.21],[1979,70.74],[1980,71.26],[1981,71.74],[1982,72.17],[1983,72.53],[1984,72.82],[1985,73.08],[1986,73.32],[1987,73.59],[1988,73.91],[1989,74.28],[1990,74.69],[1991,75.12],[1992,75.55],[1993,75.95],[1994,76.31],[1995,76.63],[1996,76.91],[1997,77.17],[1998,77.41],[1999,77.64],[2000,77.87],[2001,78.08],[2002,78.27],[2003,78.44],[2004,78.6],[2005,78.75],[2006,78.88],[2007,79.01],[2008,79.15],[2009,79.28]]},{"name":"Guatemala","region":"America","income":[[1800,682.75],[1820,682.75],[1920,1517.05],[1921,1648.07],[1922,1539.52],[1923,1675.57],[1924,1793.08],[1925,1740.93],[1926,1740.36],[1927,1835.3],[1928,1856.8],[1929,2051.3],[1930,2117.3],[1931,1932.03],[1932,1645.48],[1933,1618.64],[1934,1802.56],[1935,2041.34],[1936,2748.75],[1937,2630.51],[1938,2651.84],[1939,2929.14],[1940,3269.57],[1941,3368.07],[1942,3337.88],[1943,2187.38],[1944,2076.27],[1945,2065],[1946,2387.43],[1947,2354.88],[1948,2370.12],[1949,2516.51],[1950,2485.79],[1951,2448.64],[1952,2428.24],[1953,2445.13],[1954,2419.2],[1955,2407.56],[1956,2550.95],[1957,2617.16],[1958,2660.06],[1959,2710.41],[1960,2696.63],[1961,2733.06],[1962,2750.36],[1963,2928.41],[1964,2978.56],[1965,3055.2],[1966,3169.15],[1967,3242.53],[1968,3466.05],[1969,3565.7],[1970,3700.25],[1971,3831.07],[1972,4031.41],[1973,4218.99],[1974,4397.54],[1975,4392.23],[1976,4621.21],[1977,4879.99],[1978,5018.99],[1979,5150.05],[1980,5236.1],[1981,5147.5],[1982,4820.49],[1983,4587.98],[1984,4488.18],[1985,4337.45],[1986,4220.98],[1987,4246.49],[1988,4284.96],[1989,4324.88],[1990,4328.93],[1991,4358.67],[1992,4439.45],[1993,4483.12],[1994,4531.75],[1995,4622.17],[1996,4627.13],[1997,4684.31],[1998,4790.14],[1999,4840.46],[2000,4884.72],[2001,4872.04],[2002,4858.35],[2003,4840.72],[2004,4858.11],[2005,4897],[2006,5035.14],[2007,5222.58],[2008,5261.46],[2009,5163.22]],"population":[[1820,595000],[1850,850000],[1870,1080000],[1900,1300000],[1901,1313000],[1902,1327000],[1903,1341000],[1904,1355000],[1905,1369000],[1906,1383000],[1907,1397000],[1908,1412000],[1909,1426000],[1910,1441000],[1911,1456000],[1912,1470000],[1913,1486000],[1914,1501000],[1915,1517000],[1916,1533000],[1917,1549000],[1918,1565000],[1919,1581000],[1920,1597000],[1921,1614000],[1922,1631000],[1923,1648000],[1924,1665000],[1925,1682000],[1926,1699000],[1927,1717000],[1928,1735000],[1929,1753000],[1930,1771000],[1931,1810000],[1932,1860000],[1933,1910000],[1934,1940000],[1935,1980000],[1936,2020000],[1937,2070000],[1938,2110000],[1939,2150000],[1940,2200000],[1941,2250000],[1942,2300000],[1943,2340000],[1944,2390000],[1945,2440000],[1946,2500000],[1947,2570000],[1948,2640000],[1949,2720000],[1950,2968976],[1951,3056382],[1952,3146381],[1953,3239239],[1954,3335063],[1955,3433887],[1956,3535792],[1957,3640876],[1958,3749336],[1959,3861360],[1960,3975707],[1961,4091112],[1962,4208858],[1963,4329980],[1964,4454413],[1965,4531949],[1966,4610525],[1967,4690773],[1968,4773538],[1969,4859160],[1970,4950548],[1971,5048218],[1972,5149581],[1973,5254378],[1974,5362594],[1975,5473584],[1976,5586789],[1977,5703430],[1978,5822706],[1979,5942151],[1980,6064228],[1981,6208454],[1982,6395630],[1983,6546945],[1984,6726525],[1985,6917947],[1986,7117868],[1987,7326406],[1988,7543322],[1989,7768407],[1990,8001019],[1991,8240499],[1992,8486949],[1993,8740433],[1994,9001037],[1995,9266312],[1996,9533880],[1997,9803875],[1998,10076122],[1999,10350211],[2000,10625732],[2001,10902031],[2002,11178650],[2003,11456063],[2004,11734580],[2005,12013907],[2006,12293545],[2007,12572928],[2008,12851647]],"lifeExpectancy":[[1800,25.8],[1921,25.82],[1934,25.8],[1940,30.35],[1950,41.36],[1951,41.52],[1952,41.84],[1953,42.19],[1954,42.58],[1955,43],[1956,43.45],[1957,43.93],[1958,44.44],[1959,44.98],[1960,45.53],[1961,46.11],[1962,46.69],[1963,47.28],[1964,47.89],[1965,48.51],[1966,49.16],[1967,49.85],[1968,50.57],[1969,51.31],[1970,52.05],[1971,52.77],[1972,53.45],[1973,54.07],[1974,54.63],[1975,55.13],[1976,55.58],[1977,55.99],[1978,56.39],[1979,56.79],[1980,57.2],[1981,57.64],[1982,58.09],[1983,58.56],[1984,59.06],[1985,59.57],[1986,60.1],[1987,60.64],[1988,61.17],[1989,61.71],[1990,62.24],[1991,62.77],[1992,63.31],[1993,63.86],[1994,64.41],[1995,64.97],[1996,65.53],[1997,66.1],[1998,66.66],[1999,67.22],[2000,67.74],[2001,68.22],[2002,68.66],[2003,69.04],[2004,69.36],[2005,69.64],[2006,69.88],[2007,70.11],[2008,70.33],[2009,70.55]]},{"name":"Guyana","region":"America","income":[[1800,910.69],[1820,910.69],[1913,1680.26],[1950,2903.52],[1960,2197.3],[1961,2236.82],[1962,2202.78],[1963,1884.75],[1964,2049.28],[1965,2213.57],[1966,2277.62],[1967,2325.09],[1968,2302.61],[1969,2421.63],[1970,2489.76],[1971,2540.96],[1972,2439.15],[1973,2456.52],[1974,2632.25],[1975,2838.12],[1976,2859.95],[1977,2760.81],[1978,2688.04],[1979,2620.32],[1980,2653.79],[1981,2688.36],[1982,2334.36],[1983,2180.61],[1984,2078.81],[1985,2139.35],[1986,2133.58],[1987,2169.07],[1988,2104.87],[1989,2013.1],[1990,1959],[1991,2077.16],[1992,2234.65],[1993,2408.93],[1994,2604.9],[1995,2729.15],[1996,2944.07],[1997,3131.96],[1998,3085.38],[1999,3182.97],[2000,3141.35],[2001,3209.76],[2002,3237.95],[2003,3198.6],[2004,3298.36],[2005,3232],[2006,3386.17],[2007,3613.42],[2008,3667.37],[2009,3776.95]],"population":[[1800,166034],[1820,166034],[1950,427971],[1951,439062],[1952,451430],[1953,464323],[1954,477498],[1955,491180],[1956,505229],[1957,520286],[1958,536776],[1959,554471],[1960,571083],[1961,584710],[1962,597896],[1963,612069],[1964,626389],[1965,640316],[1966,656528],[1967,672848],[1968,687477],[1969,701552],[1970,714811],[1971,728990],[1972,742869],[1973,755324],[1974,765282],[1975,767977],[1976,763718],[1977,758334],[1978,755889],[1979,757400],[1980,759352],[1981,761204],[1982,761673],[1983,760529],[1984,759690],[1985,758329],[1986,756887],[1987,755464],[1988,754045],[1989,752537],[1990,750903],[1991,748816],[1992,747460],[1993,747337],[1994,747536],[1995,747929],[1996,747171],[1997,746336],[1998,748211],[1999,752105],[2000,755171],[2001,757092],[2002,759104],[2003,761181],[2004,763251],[2005,765283],[2006,767245],[2007,769095],[2008,770794]],"lifeExpectancy":[[1800,31.12],[1911,31.12],[1921,34.62],[1930,41.42],[1946,50.65],[1950,51.32],[1951,51.57],[1952,52.06],[1953,52.56],[1954,53.06],[1955,53.56],[1956,54.07],[1957,54.59],[1958,55.1],[1959,55.61],[1960,56.12],[1961,56.62],[1962,57.1],[1963,57.56],[1964,57.99],[1965,58.39],[1966,58.73],[1967,59.03],[1968,59.28],[1969,59.49],[1970,59.67],[1971,59.82],[1972,59.95],[1973,60.08],[1974,60.21],[1975,60.34],[1976,60.46],[1977,60.57],[1978,60.66],[1979,60.73],[1980,60.8],[1981,60.88],[1982,60.97],[1983,61.08],[1984,61.21],[1985,61.36],[1986,61.53],[1987,61.7],[1988,61.87],[1989,62.02],[1990,62.15],[1991,62.25],[1992,62.31],[1993,62.34],[1994,62.35],[1995,62.37],[1996,62.41],[1997,62.5],[1998,62.66],[1999,62.88],[2000,63.18],[2001,63.55],[2002,63.99],[2003,64.46],[2004,64.96],[2005,65.47],[2006,65.98],[2007,66.48],[2008,66.97],[2009,67.43]]},{"name":"Haiti","region":"America","income":[[1800,503.81],[1820,503.81],[1945,1764.26],[1946,1759.43],[1947,1769.37],[1948,1766.79],[1949,1765.92],[1950,1774.19],[1951,1771.24],[1952,1840.37],[1953,1751.26],[1954,1861.11],[1955,1754.02],[1956,1871.58],[1957,1726.89],[1958,1827.63],[1959,1707.09],[1960,1780.91],[1961,1673.93],[1962,1796.59],[1963,1644.38],[1964,1572.87],[1965,1556.3],[1966,1514.23],[1967,1452.06],[1968,1477.58],[1969,1493.51],[1970,1530.69],[1971,1613.19],[1972,1654.46],[1973,1712.59],[1974,1804.06],[1975,1747],[1976,1880.97],[1977,1874.3],[1978,1947.74],[1979,2071.78],[1980,2212.9],[1981,2118.88],[1982,2011.16],[1983,1988.46],[1984,1954.71],[1985,1918.55],[1986,1876.28],[1987,1823.02],[1988,1798.56],[1989,1779.9],[1990,1742.99],[1991,1716.39],[1992,1456.31],[1993,1398.46],[1994,1259.94],[1995,1299.75],[1996,1329.43],[1997,1341.73],[1998,1346.85],[1999,1358.24],[2000,1344.49],[2001,1303.77],[2002,1270.36],[2003,1249.95],[2004,1180.25],[2005,1175],[2006,1179.62],[2007,1197],[2008,1185.24],[2009,1198.05]],"population":[[1800,723000],[1820,723000],[1850,938000],[1870,1150000],[1900,1560000],[1901,1583000],[1902,1607000],[1903,1631000],[1904,1655000],[1905,1680000],[1906,1705000],[1907,1730000],[1908,1756000],[1909,1782000],[1910,1809000],[1911,1836000],[1912,1863000],[1913,1891000],[1914,1923000],[1915,1955000],[1916,1988000],[1917,2021000],[1918,2055000],[1919,2089000],[1920,2124000],[1921,2152000],[1922,2181000],[1923,2209000],[1924,2239000],[1925,2268000],[1926,2298000],[1927,2328000],[1928,2359000],[1929,2390000],[1930,2422000],[1931,2453000],[1932,2485000],[1933,2517000],[1934,2549000],[1935,2582000],[1936,2615000],[1937,2648000],[1938,2682000],[1939,2716000],[1940,2751000],[1941,2786000],[1942,2820000],[1943,2856000],[1944,2892000],[1945,2928000],[1946,2961000],[1947,2994000],[1948,3028000],[1949,3062000],[1950,3097220],[1951,3148152],[1952,3201488],[1953,3257356],[1954,3315524],[1955,3376419],[1956,3441339],[1957,3507701],[1958,3576772],[1959,3648298],[1960,3722743],[1961,3800257],[1962,3880130],[1963,3964060],[1964,4049805],[1965,4137405],[1966,4226710],[1967,4318137],[1968,4411541],[1969,4506965],[1970,4604915],[1971,4653084],[1972,4698301],[1973,4742929],[1974,4787018],[1975,4828338],[1976,4867802],[1977,4908554],[1978,4950634],[1979,4994123],[1980,5029725],[1981,5108660],[1982,5198399],[1983,5297652],[1984,5404670],[1985,5517977],[1986,5635089],[1987,5756203],[1988,5880465],[1989,6004762],[1990,6126101],[1991,6226921],[1992,6326682],[1993,6443498],[1994,6558149],[1995,6675578],[1996,6794575],[1997,6913545],[1998,7038935],[1999,7167662],[2000,7306302],[2001,7454154],[2002,7607651],[2003,7771090],[2004,7942419],[2005,8121622],[2006,8308504],[2007,8502814],[2008,8704413]],"lifeExpectancy":[[1950,36.27],[1951,36.6],[1952,37.26],[1953,37.91],[1954,38.55],[1955,39.17],[1956,39.79],[1957,40.4],[1958,41],[1959,41.59],[1960,42.18],[1961,42.76],[1962,43.33],[1963,43.9],[1964,44.46],[1965,45],[1966,45.51],[1967,45.99],[1968,46.43],[1969,46.83],[1970,47.2],[1971,47.56],[1972,47.92],[1973,48.28],[1974,48.65],[1975,49.02],[1976,49.38],[1977,49.72],[1978,50.04],[1979,50.34],[1980,50.63],[1981,50.93],[1982,51.25],[1983,51.61],[1984,52.01],[1985,52.45],[1986,52.93],[1987,53.42],[1988,53.93],[1989,54.44],[1990,54.95],[1991,55.46],[1992,55.98],[1993,56.51],[1994,57.02],[1995,57.5],[1996,57.93],[1997,58.31],[1998,58.63],[1999,58.9],[2000,59.12],[2001,59.34],[2002,59.57],[2003,59.82],[2004,60.11],[2005,60.41],[2006,60.72],[2007,61.01],[2008,61.26],[2009,61.48]]},{"name":"Honduras","region":"America","income":[[1800,583.8],[1820,583.8],[1920,2061.23],[1921,2027.39],[1922,2118.65],[1923,2027.06],[1924,1847.36],[1925,2151.54],[1926,2096.58],[1927,2276.69],[1928,2504.1],[1929,2425.88],[1930,2529.84],[1931,2531.07],[1932,2221.64],[1933,2043.05],[1934,1959.55],[1935,1836.28],[1936,1833.69],[1937,1720.31],[1938,1787.61],[1939,1804.82],[1940,1877.36],[1941,1841.12],[1942,1641.34],[1943,1630.45],[1944,1627.55],[1945,1972.92],[1946,2073.83],[1947,2157.89],[1948,2154.29],[1949,2121.4],[1950,2125.56],[1951,2175.9],[1952,2194.93],[1953,2299.86],[1954,2103.69],[1955,2092.37],[1956,2191.2],[1957,2220.49],[1958,2217.79],[1959,2201.34],[1960,2262.22],[1961,2243.2],[1962,2291.16],[1963,2293.2],[1964,2326.64],[1965,2438.23],[1966,2489.67],[1967,2538.27],[1968,2594.6],[1969,2523.46],[1970,2518.49],[1971,2528.59],[1972,2529.84],[1973,2558.71],[1974,2824.6],[1975,2802.95],[1976,2994.99],[1977,3203.21],[1978,3403.51],[1979,3443.47],[1980,3336.79],[1981,3287.52],[1982,3121.76],[1983,2997.61],[1984,3009.41],[1985,3033.15],[1986,2952.67],[1987,3023.1],[1988,3073.17],[1989,3092.5],[1990,3004.97],[1991,2999.13],[1992,3081.69],[1993,3204.57],[1994,3052.26],[1995,3073.89],[1996,3094.71],[1997,3160.45],[1998,3168.46],[1999,3028.73],[2000,3093.71],[2001,3093.68],[2002,3099.73],[2003,3129.92],[2004,3209.35],[2005,3266],[2006,3412.03],[2007,3549.04],[2008,3615.09],[2009,3473.46]],"population":[[1801,130000],[1820,135000],[1850,350000],[1870,404000],[1900,500000],[1901,511000],[1902,522000],[1903,533000],[1904,545000],[1905,556000],[1906,568000],[1907,581000],[1908,593000],[1909,606000],[1910,619000],[1911,632000],[1912,646000],[1913,660000],[1914,668000],[1915,677000],[1916,685000],[1917,694000],[1918,702000],[1919,711000],[1920,720000],[1921,740000],[1922,770000],[1923,800000],[1924,820000],[1925,850000],[1926,880000],[1927,890000],[1928,910000],[1929,930000],[1930,950000],[1931,970000],[1932,990000],[1933,1010000],[1934,1020000],[1935,1040000],[1936,1060000],[1937,1080000],[1938,1100000],[1939,1120000],[1940,1150000],[1941,1170000],[1942,1200000],[1943,1210000],[1944,1240000],[1945,1260000],[1946,1290000],[1947,1320000],[1948,1350000],[1949,1390000],[1950,1431447],[1951,1474191],[1952,1517453],[1953,1562218],[1954,1610959],[1955,1662219],[1956,1715023],[1957,1770390],[1958,1828733],[1959,1888715],[1960,1951640],[1961,2018693],[1962,2090162],[1963,2165930],[1964,2246099],[1965,2329159],[1966,2413644],[1967,2500689],[1968,2591112],[1969,2685322],[1970,2760666],[1971,2855882],[1972,2965146],[1973,3077805],[1974,2765159],[1975,2857540],[1976,2954226],[1977,3055235],[1978,3167869],[1979,3278690],[1980,3401940],[1981,3542519],[1982,3669448],[1983,3795505],[1984,3932288],[1985,4076514],[1986,4225991],[1987,4372203],[1988,4513723],[1989,4654540],[1990,4792271],[1991,4931117],[1992,5077347],[1993,5229618],[1994,5386133],[1995,5546185],[1996,5707074],[1997,5867957],[1998,6022706],[1999,6180871],[2000,6347658],[2001,6513048],[2002,6677328],[2003,6843018],[2004,7007482],[2005,7167902],[2006,7326496],[2007,7483763],[2008,7639327]],"lifeExpectancy":[[1800,33.9],[1930,33.9],[1950,40.94],[1951,41.15],[1952,41.59],[1953,42.07],[1954,42.58],[1955,43.13],[1956,43.71],[1957,44.33],[1958,44.97],[1959,45.63],[1960,46.3],[1961,46.97],[1962,47.64],[1963,48.29],[1964,48.92],[1965,49.52],[1966,50.11],[1967,50.68],[1968,51.26],[1969,51.84],[1970,52.43],[1971,53.04],[1972,53.67],[1973,54.32],[1974,54.99],[1975,55.69],[1976,56.41],[1977,57.15],[1978,57.9],[1979,58.66],[1980,59.44],[1981,60.22],[1982,61.02],[1983,61.82],[1984,62.62],[1985,63.39],[1986,64.12],[1987,64.78],[1988,65.38],[1989,65.91],[1990,66.38],[1991,66.82],[1992,67.24],[1993,67.67],[1994,68.09],[1995,68.52],[1996,68.94],[1997,69.33],[1998,69.69],[1999,70.01],[2000,70.29],[2001,70.56],[2002,70.8],[2003,71.04],[2004,71.28],[2005,71.52],[2006,71.75],[2007,71.98],[2008,72.2],[2009,72.41]]},{"name":"Jamaica","region":"America","income":[[1800,1350.4],[1820,1350.4],[1850,1048.06],[1870,1031.12],[1913,1171.9],[1938,1874.05],[1942,1870.22],[1943,2215.6],[1946,3178.64],[1947,2914.58],[1950,2556.82],[1951,2721.41],[1952,2898.53],[1953,3258.81],[1954,3580.81],[1955,3893.49],[1956,4220.5],[1957,4756.53],[1958,4737.22],[1959,4897.48],[1960,5113.57],[1961,5207.34],[1962,5246.11],[1963,5312.99],[1964,5596.18],[1965,5915.47],[1966,6029.79],[1967,6124.7],[1968,6328.34],[1969,6706.97],[1970,7416.69],[1971,7329.12],[1972,7433.89],[1973,7959.55],[1974,7531.91],[1975,7409.37],[1976,6867.75],[1977,6650.2],[1978,6628.02],[1979,6428.41],[1980,6015.19],[1981,6094.31],[1982,6068.05],[1983,6186.72],[1984,6116.87],[1985,5820.33],[1986,5905.2],[1987,6351.24],[1988,6524.14],[1989,6948.14],[1990,7296.54],[1991,7285.44],[1992,7404.92],[1993,7447.48],[1994,7497.59],[1995,7524.48],[1996,7316.26],[1997,7121.92],[1998,7012.28],[1999,6928.82],[2000,6934.03],[2001,6987.81],[2002,6994.77],[2003,7092.05],[2004,7093.44],[2005,7132],[2006,7291.22],[2007,7365.48],[2008,7261.39],[2009,7023.74]],"population":[[1800,401000],[1820,401000],[1850,399000],[1870,499000],[1900,720000],[1901,728000],[1902,737000],[1903,745000],[1904,754000],[1905,763000],[1906,772000],[1907,781000],[1908,790000],[1909,799000],[1910,808000],[1911,818000],[1912,827000],[1913,837000],[1914,840000],[1915,842000],[1916,845000],[1917,847000],[1918,850000],[1919,852000],[1920,855000],[1921,860000],[1922,879000],[1923,891000],[1924,900000],[1925,910000],[1926,930000],[1927,946000],[1928,966000],[1929,985000],[1930,1009000],[1931,1039000],[1932,1061000],[1933,1082000],[1934,1098000],[1935,1113000],[1936,1130000],[1937,1142000],[1938,1163000],[1939,1191000],[1940,1212000],[1941,1230000],[1942,1254000],[1943,1249000],[1944,1259000],[1945,1266000],[1946,1298000],[1947,1327000],[1948,1350000],[1949,1374000],[1950,1384550],[1951,1405615],[1952,1426095],[1953,1446425],[1954,1467585],[1955,1488805],[1956,1509975],[1957,1535090],[1958,1565755],[1959,1599115],[1960,1631784],[1961,1647918],[1962,1665128],[1963,1697847],[1964,1738997],[1965,1777397],[1966,1820082],[1967,1861096],[1968,1893477],[1969,1919615],[1970,1943787],[1971,1967012],[1972,1997616],[1973,2036377],[1974,2071146],[1975,2104879],[1976,2133388],[1977,2156814],[1978,2179441],[1979,2207245],[1980,2228803],[1981,2258368],[1982,2298309],[1983,2306556],[1984,2313362],[1985,2318652],[1986,2323182],[1987,2326606],[1988,2330226],[1989,2337517],[1990,2347922],[1991,2358643],[1992,2378618],[1993,2407463],[1994,2436866],[1995,2469389],[1996,2501477],[1997,2531311],[1998,2560447],[1999,2588786],[2000,2615467],[2001,2640289],[2002,2664659],[2003,2688706],[2004,2712355],[2005,2735520],[2006,2758124],[2007,2780132],[2008,2801544]],"lifeExpectancy":[[1800,34.2],[1881,34.2],[1882,40.1],[1883,38.1],[1884,37.2],[1885,37.8],[1886,36.9],[1887,35.5],[1888,38.6],[1889,37.6],[1890,34.3],[1891,37.3],[1892,39.2],[1893,38.6],[1894,39],[1895,37.4],[1896,37.6],[1897,37],[1898,39.1],[1899,37.6],[1900,37.8],[1901,38.1],[1902,40.4],[1903,34.6],[1904,33.6],[1905,37.6],[1906,32.4],[1907,29.5],[1908,36.8],[1909,37.3],[1910,36.7],[1911,37.9],[1912,34.4],[1913,37.5],[1914,38.2],[1915,37],[1916,35.6],[1917,31.7],[1918,26.4],[1919,36.6],[1920,35.4],[1921,30.7],[1922,37],[1923,38],[1924,38.6],[1925,38.9],[1926,40.7],[1927,39.4],[1928,41.6],[1929,43],[1930,45.3],[1931,42.7],[1932,44.2],[1933,41.6],[1934,44.4],[1935,44],[1936,44.4],[1937,47.2],[1938,45.9],[1939,48.5],[1940,47.6],[1941,49.4],[1942,49.8],[1943,50.3],[1944,49.1],[1945,49.1],[1946,51.4],[1947,50.4],[1948,51.7],[1949,53.9],[1950,56.65],[1951,57.14],[1952,58.1],[1953,59.02],[1954,59.9],[1955,60.74],[1956,61.54],[1957,62.29],[1958,63],[1959,63.66],[1960,64.28],[1961,64.85],[1962,65.38],[1963,65.85],[1964,66.28],[1965,66.68],[1966,67.05],[1967,67.39],[1968,67.71],[1969,68.02],[1970,68.32],[1971,68.61],[1972,68.89],[1973,69.16],[1974,69.41],[1975,69.64],[1976,69.84],[1977,70.02],[1978,70.16],[1979,70.28],[1980,70.38],[1981,70.47],[1982,70.54],[1983,70.62],[1984,70.7],[1985,70.78],[1986,70.87],[1987,70.96],[1988,71.04],[1989,71.12],[1990,71.18],[1991,71.24],[1992,71.28],[1993,71.31],[1994,71.32],[1995,71.31],[1996,71.28],[1997,71.23],[1998,71.16],[1999,71.08],[2000,71.02],[2001,70.98],[2002,70.98],[2003,71.03],[2004,71.13],[2005,71.28],[2006,71.46],[2007,71.68],[2008,71.89],[2009,72.11]]},{"name":"Martinique","region":"America","income":[[1800,944.05],[1820,944.05],[1913,1741.82],[1950,3009.89],[1973,10528.11],[1990,11068.35],[2001,13040.82],[2002,13561.81],[2003,13247.9],[2004,13925.33],[2005,14627.13]],"population":[[1800,84039],[1820,84039],[1950,216618],[1951,221631],[1952,226688],[1953,232524],[1954,239131],[1955,245815],[1956,252779],[1957,260147],[1958,267402],[1959,274591],[1960,281802],[1961,288810],[1962,295486],[1963,301371],[1964,306529],[1965,311445],[1966,315759],[1967,319163],[1968,322092],[1969,324121],[1970,325484],[1971,327676],[1972,330290],[1973,332137],[1974,333474],[1975,334654],[1976,335492],[1977,336148],[1978,336888],[1979,337943],[1980,339365],[1981,340940],[1982,342583],[1983,345978],[1984,349558],[1985,353188],[1986,356886],[1987,360841],[1988,365013],[1989,369305],[1990,373565],[1991,377676],[1992,381739],[1993,385826],[1994,389926],[1995,394021],[1996,398129],[1997,402265],[1998,406394],[1999,410487],[2000,414516],[2001,418454],[2002,422277],[2003,425966],[2004,429510],[2005,432900],[2006,436131],[2007,439202],[2008,442119]],"lifeExpectancy":[[1950,54.74],[1951,55.22],[1952,56.15],[1953,57.06],[1954,57.93],[1955,58.79],[1956,59.61],[1957,60.41],[1958,61.18],[1959,61.91],[1960,62.61],[1961,63.27],[1962,63.89],[1963,64.47],[1964,65.01],[1965,65.53],[1966,66.02],[1967,66.5],[1968,66.98],[1969,67.45],[1970,67.93],[1971,68.43],[1972,68.94],[1973,69.45],[1974,69.97],[1975,70.49],[1976,71],[1977,71.49],[1978,71.96],[1979,72.4],[1980,72.81],[1981,73.21],[1982,73.59],[1983,73.96],[1984,74.31],[1985,74.65],[1986,74.96],[1987,75.23],[1988,75.48],[1989,75.69],[1990,75.89],[1991,76.09],[1992,76.29],[1993,76.51],[1994,76.75],[1995,77],[1996,77.27],[1997,77.54],[1998,77.8],[1999,78.05],[2000,78.28],[2001,78.49],[2002,78.69],[2003,78.87],[2004,79.04],[2005,79.2],[2006,79.35],[2007,79.5],[2008,79.63],[2009,79.77]]},{"name":"Mexico","region":"America","income":[[1800,1053.6],[1820,1105.63],[1870,981.78],[1890,1472.82],[1895,1649.1],[1896,1675.45],[1897,1762.72],[1898,1838.1],[1899,1721.61],[1900,1709.31],[1901,1837.59],[1902,1686.64],[1903,1857.23],[1904,1869.64],[1905,2043.53],[1906,1998.24],[1907,2093.88],[1908,2067.87],[1909,2106.18],[1910,2102.03],[1911,2017.76],[1912,2000.96],[1913,1880.29],[1914,1883.54],[1915,1856.03],[1916,1999.11],[1917,2084.7],[1918,2165.95],[1919,2252.31],[1920,2395.46],[1921,2386.88],[1922,2404.07],[1923,2447.87],[1924,2368.93],[1925,2477.54],[1926,2586.29],[1927,2430.9],[1928,2406.84],[1929,2274.99],[1930,2095.67],[1931,2128.79],[1932,1774.36],[1933,1944.06],[1934,2041.55],[1935,2157.92],[1936,2292.82],[1937,2328.97],[1938,2326.41],[1939,2411.19],[1940,2402.91],[1941,2570.67],[1942,2644.12],[1943,2669.16],[1944,2813.56],[1945,2824.38],[1946,2932.21],[1947,2952.46],[1948,2992.76],[1949,3074.34],[1950,3293.78],[1951,3447.11],[1952,3478.13],[1953,3380.66],[1954,3614.58],[1955,3810.53],[1956,3953.72],[1957,4131.55],[1958,4224.17],[1959,4220.45],[1960,4433.09],[1961,4512.03],[1962,4581.61],[1963,4803.87],[1964,5213.6],[1965,5384.97],[1966,5584.87],[1967,5754.73],[1968,6036.64],[1969,6222.44],[1970,6450.93],[1971,6486.92],[1972,6809.41],[1973,7130.34],[1974,7322.16],[1975,7519.08],[1976,7630.74],[1977,7674.93],[1978,8156.87],[1979,8734.87],[1980,9319.56],[1981,9890.22],[1982,9611.15],[1983,9063.14],[1984,9177.23],[1985,9184.99],[1986,8713.36],[1987,8688.16],[1988,8628.26],[1989,8815.27],[1990,9103.39],[1991,9315.66],[1992,9472.38],[1993,9482.49],[1994,9733.59],[1995,8954.52],[1996,9274.7],[1997,9767.3],[1998,10108.77],[1999,10358.8],[2000,10894.51],[2001,10763.08],[2002,10742.44],[2003,10778.21],[2004,11118.69],[2005,11317],[2006,11772.08],[2007,12057.97],[2008,12135.33],[2009,11250.37]],"population":[[1820,6587000],[1850,7662000],[1870,9219000],[1871,9331000],[1872,9444000],[1873,9558000],[1874,9674000],[1875,9791000],[1876,9910000],[1877,10030000],[1878,10151000],[1879,10274000],[1880,10399000],[1881,10524000],[1882,10652000],[1883,10781000],[1884,10912000],[1885,11044000],[1886,11178000],[1887,11313000],[1888,11450000],[1889,11589000],[1890,11729000],[1891,11904000],[1892,12083000],[1893,12263000],[1894,12447000],[1895,12663000],[1896,12822000],[1897,13014000],[1898,13209000],[1899,13406000],[1900,13607000],[1901,13755000],[1902,13904000],[1903,14055000],[1904,14208000],[1905,14363000],[1906,14519000],[1907,14676000],[1908,14836000],[1909,14997000],[1910,15000000],[1911,14990000],[1912,14980000],[1913,14970000],[1914,14960000],[1915,14950000],[1916,14940000],[1917,14930000],[1918,14920000],[1919,14910000],[1920,14900000],[1921,14895000],[1922,15129000],[1923,15367000],[1924,15609000],[1925,15854000],[1926,16103000],[1927,16356000],[1928,16613000],[1929,16875000],[1930,17175000],[1931,17480000],[1932,17790000],[1933,18115000],[1934,18445000],[1935,18781000],[1936,19040000],[1937,19370000],[1938,19705000],[1939,20047000],[1940,20393000],[1941,20955000],[1942,21532000],[1943,22125000],[1944,22734000],[1945,23724000],[1946,24413000],[1947,25122000],[1948,25852000],[1949,26603000],[1950,28485180],[1951,29296235],[1952,30144317],[1953,31031279],[1954,31959113],[1955,32929914],[1956,33945886],[1957,35015548],[1958,36141955],[1959,37328466],[1960,38578505],[1961,39836230],[1962,41121485],[1963,42434264],[1964,43774575],[1965,45142399],[1966,46537832],[1967,47995559],[1968,49518803],[1969,51110928],[1970,52775158],[1971,54406901],[1972,55984294],[1973,57557303],[1974,59122839],[1975,60678045],[1976,62219964],[1977,63759976],[1978,65295990],[1979,66825878],[1980,68347479],[1981,69969263],[1982,71640904],[1983,73362881],[1984,75080138],[1985,76767225],[1986,78442430],[1987,80122492],[1988,81781816],[1989,83366836],[1990,84913652],[1991,86488032],[1992,88111030],[1993,89749141],[1994,91337896],[1995,92880353],[1996,94398579],[1997,95895146],[1998,97325063],[1999,98616905],[2000,99926620],[2001,101246961],[2002,102479927],[2003,103718062],[2004,104959594],[2005,106202903],[2006,107449525],[2007,108700891],[2008,109955400]],"lifeExpectancy":[[1800,26.9],[1890,26.9],[1893,23.29],[1894,26.62],[1895,29.52],[1896,28.8],[1897,26.24],[1898,27.03],[1899,24.98],[1900,27.58],[1901,26.65],[1902,28.37],[1903,28.68],[1904,29.09],[1905,26.8],[1906,27.88],[1907,27.97],[1908,28.72],[1909,29.21],[1910,27.41],[1922,32.6],[1923,33.5],[1924,32.8],[1925,32.1],[1926,34.2],[1927,40.3],[1928,34.5],[1929,35.4],[1930,36.2],[1931,37.7],[1932,38.4],[1933,37.3],[1934,38.2],[1935,40.4],[1936,38.3],[1937,36.8],[1938,39.4],[1939,45.5],[1940,39.2],[1941,42.6],[1942,39.8],[1943,42.8],[1944,43.2],[1945,44.2],[1946,44.8],[1947,46.3],[1948,48.3],[1949,45.8],[1950,48.56],[1951,49.12],[1952,50.21],[1953,51.25],[1954,52.24],[1955,53.18],[1956,54.07],[1957,54.9],[1958,55.69],[1959,56.41],[1960,57.07],[1961,57.66],[1962,58.18],[1963,58.64],[1964,59.06],[1965,59.43],[1966,59.79],[1967,60.15],[1968,60.52],[1969,60.92],[1970,61.35],[1971,61.82],[1972,62.32],[1973,62.84],[1974,63.37],[1975,63.92],[1976,64.47],[1977,65.01],[1978,65.55],[1979,66.06],[1980,66.56],[1981,67.04],[1982,67.5],[1983,67.94],[1984,68.37],[1985,68.79],[1986,69.2],[1987,69.61],[1988,70],[1989,70.4],[1990,70.8],[1991,71.19],[1992,71.59],[1993,71.98],[1994,72.37],[1995,72.74],[1996,73.1],[1997,73.43],[1998,73.73],[1999,74.01],[2000,74.26],[2001,74.51],[2002,74.75],[2003,74.99],[2004,75.24],[2005,75.49],[2006,75.74],[2007,75.99],[2008,76.23],[2009,76.47]]},{"name":"Netherlands Antilles","region":"America","income":[[1800,698.1],[1820,698.1],[1913,1288.03],[1970,10117.71],[1971,10647.82],[1972,11045.68],[1973,11405.41],[1974,11939.92],[1975,12156.49],[1976,12814.81],[1977,17335.5],[1978,18336.29],[1979,19045.02],[1980,20507.69],[1981,20565.55],[1982,20008.69],[1983,19721.51],[1984,19180.39],[1985,18592.1],[1986,17385.59],[1987,17406.53],[1988,17486.37],[1989,18682.47],[1990,18834.43],[1991,19081.35],[1992,19633.02],[1993,20520.88],[1994,21690.98],[1995,22159.94],[1996,22681.57],[1997,23267.56],[1998,22901.65],[1999,22746.86],[2000,22284.26],[2001,22605.42],[2002,22596.6],[2003,22741.81],[2004,22761.26],[2005,22700.41],[2006,22795.7],[2007,23039.61],[2008,23178.37]],"population":[[1800,42536],[1820,42536],[1950,109641],[1951,112935],[1952,115318],[1953,117751],[1954,120236],[1955,122772],[1956,125362],[1957,128007],[1958,130708],[1959,133466],[1960,136282],[1961,136679],[1962,133959],[1963,141865],[1964,144450],[1965,146841],[1966,148637],[1967,150529],[1968,153117],[1969,155768],[1970,158355],[1971,161491],[1972,163778],[1973,165204],[1974,167205],[1975,168549],[1976,169591],[1977,170574],[1978,170743],[1979,171297],[1980,172534],[1981,174179],[1982,176526],[1983,178902],[1984,181168],[1985,182923],[1986,184328],[1987,185666],[1988,186689],[1989,187630],[1990,188788],[1991,190140],[1992,192002],[1993,194496],[1994,196793],[1995,198914],[1996,201239],[1997,203533],[1998,205785],[1999,207987],[2000,210134],[2001,212226],[2002,214258],[2003,216226],[2004,218126],[2005,219958],[2006,221736],[2007,223472],[2008,225168]],"lifeExpectancy":[[1950,58.45],[1951,59],[1952,60.04],[1953,61.01],[1954,61.91],[1955,62.72],[1956,63.46],[1957,64.11],[1958,64.7],[1959,65.22],[1960,65.68],[1961,66.09],[1962,66.46],[1963,66.8],[1964,67.13],[1965,67.46],[1966,67.81],[1967,68.17],[1968,68.55],[1969,68.94],[1970,69.35],[1971,69.76],[1972,70.17],[1973,70.56],[1974,70.94],[1975,71.3],[1976,71.65],[1977,72],[1978,72.34],[1979,72.68],[1980,73.01],[1981,73.33],[1982,73.61],[1983,73.86],[1984,74.08],[1985,74.25],[1986,74.38],[1987,74.46],[1988,74.51],[1989,74.53],[1990,74.53],[1991,74.52],[1992,74.49],[1993,74.47],[1994,74.45],[1995,74.46],[1996,74.5],[1997,74.57],[1998,74.67],[1999,74.79],[2000,74.95],[2001,75.11],[2002,75.29],[2003,75.47],[2004,75.63],[2005,75.79],[2006,75.94],[2007,76.09],[2008,76.23],[2009,76.38]]},{"name":"Nicaragua","region":"America","income":[[1800,726.97],[1820,726.97],[1920,2070.64],[1921,2149.99],[1922,1937.98],[1923,2074.07],[1924,2164.26],[1925,2390.12],[1926,2046.39],[1927,2056.17],[1928,2603.82],[1929,2866.65],[1930,2317.41],[1931,2136.64],[1932,1922.97],[1933,2384.59],[1934,2134.13],[1935,2109.32],[1936,1633.72],[1937,1725.31],[1938,1761.99],[1939,2107.27],[1940,2247.93],[1941,2429.83],[1942,2285.7],[1943,2449.68],[1944,2371.59],[1945,2330.71],[1946,2451.96],[1947,2383.58],[1948,2539.03],[1949,2420.55],[1950,2646.8],[1951,2742.44],[1952,3112.36],[1953,3092.08],[1954,3279.8],[1955,3393.42],[1956,3288.89],[1957,3457.42],[1958,3362.04],[1959,3307.13],[1960,3248.3],[1961,3382.87],[1962,3634.36],[1963,3902.48],[1964,4222.45],[1965,4478.93],[1966,4481.54],[1967,4643.39],[1968,4559.44],[1969,4709.94],[1970,4605.7],[1971,4678.35],[1972,4688.59],[1973,4785.64],[1974,5299.98],[1975,5125.38],[1976,5219.41],[1977,5486.37],[1978,4949.85],[1979,3524.06],[1980,3528.64],[1981,3594.8],[1982,3470.34],[1983,3551.18],[1984,3397.84],[1985,3185.74],[1986,3050.94],[1987,2955.98],[1988,2560.22],[1989,2457.13],[1990,2355.47],[1991,2234.44],[1992,2170.15],[1993,2097.6],[1994,2119.13],[1995,2153.69],[1996,2196.82],[1997,2253.02],[1998,2291.86],[1999,2678.53],[2000,2490.8],[2001,2511.22],[2002,2474.55],[2003,2484.75],[2004,2559.93],[2005,2611],[2006,2657.49],[2007,2675.66],[2008,2688.74],[2009,2591.39]],"population":[[1800,186000],[1820,186000],[1850,300000],[1870,337000],[1900,478000],[1901,485000],[1902,492000],[1903,499000],[1904,507000],[1905,514000],[1906,522000],[1907,529000],[1908,537000],[1909,545000],[1910,553000],[1911,561000],[1912,570000],[1913,578000],[1914,580000],[1915,595000],[1916,604000],[1917,613000],[1918,622000],[1919,631000],[1920,640000],[1921,640000],[1922,650000],[1923,650000],[1924,660000],[1925,660000],[1926,670000],[1927,670000],[1928,670000],[1929,680000],[1930,680000],[1931,690000],[1932,690000],[1933,700000],[1934,710000],[1935,730000],[1936,750000],[1937,770000],[1938,780000],[1939,810000],[1940,830000],[1941,840000],[1942,860000],[1943,880000],[1944,900000],[1945,920000],[1946,950000],[1947,980000],[1948,1000000],[1949,1030000],[1950,1097916],[1951,1131307],[1952,1165790],[1953,1201514],[1954,1238630],[1955,1277288],[1956,1317387],[1957,1358828],[1958,1401760],[1959,1446333],[1960,1492698],[1961,1540819],[1962,1590597],[1963,1642083],[1964,1695330],[1965,1750391],[1966,1807123],[1967,1865490],[1968,1925707],[1969,1987988],[1970,2052544],[1971,2120111],[1972,2182908],[1973,2247491],[1974,2319602],[1975,2394786],[1976,2473102],[1977,2554598],[1978,2609107],[1979,2689042],[1980,2805321],[1981,2901332],[1982,2979423],[1983,3048600],[1984,3121094],[1985,3190053],[1986,3262816],[1987,3344353],[1988,3433924],[1989,3530673],[1990,3683746],[1991,3871551],[1992,4017939],[1993,4140517],[1994,4262327],[1995,4382555],[1996,4498580],[1997,4609572],[1998,4717284],[1999,4824619],[2000,4932420],[2001,5039717],[2002,5146848],[2003,5253603],[2004,5359759],[2005,5465100],[2006,5570129],[2007,5675356],[2008,5780586]],"lifeExpectancy":[[1800,25.4],[1916,25.4],[1921,24.35],[1940,34.47],[1950,41.06],[1951,41.36],[1952,41.97],[1953,42.58],[1954,43.2],[1955,43.82],[1956,44.45],[1957,45.08],[1958,45.72],[1959,46.35],[1960,47],[1961,47.64],[1962,48.29],[1963,48.95],[1964,49.6],[1965,50.27],[1966,50.94],[1967,51.62],[1968,52.3],[1969,52.98],[1970,53.64],[1971,54.29],[1972,54.9],[1973,55.48],[1974,56.02],[1975,56.51],[1976,56.96],[1977,57.37],[1978,57.76],[1979,58.13],[1980,58.5],[1981,58.87],[1982,59.27],[1983,59.69],[1984,60.15],[1985,60.67],[1986,61.26],[1987,61.91],[1988,62.62],[1989,63.37],[1990,64.13],[1991,64.88],[1992,65.59],[1993,66.24],[1994,66.82],[1995,67.34],[1996,67.81],[1997,68.27],[1998,68.72],[1999,69.18],[2000,69.64],[2001,70.12],[2002,70.59],[2003,71.05],[2004,71.49],[2005,71.92],[2006,72.32],[2007,72.71],[2008,73.09],[2009,73.44]]},{"name":"Panama","region":"America","income":[[1800,686.66],[1820,686.66],[1945,2756.5],[1946,2811.71],[1947,2870.98],[1948,2641.44],[1949,2650.17],[1950,2500.03],[1951,2415.69],[1952,2480.38],[1953,2569.85],[1954,2600.24],[1955,2681.59],[1956,2750.55],[1957,2961.8],[1958,2924.12],[1959,3029.42],[1960,3119.95],[1961,3358.29],[1962,3536.54],[1963,3760.37],[1964,3810.21],[1965,4025.8],[1966,4200.79],[1967,4421.01],[1968,4607.85],[1969,4826.57],[1970,4976.35],[1971,5234.49],[1972,5364.25],[1973,5546.03],[1974,5521.94],[1975,5478.34],[1976,5437.09],[1977,5351.91],[1978,5773.1],[1979,5895.08],[1980,6643.42],[1981,6777.81],[1982,7009.6],[1983,6916.65],[1984,6746.94],[1985,6921.11],[1986,7003.71],[1987,7034.78],[1988,5821.91],[1989,5685.88],[1990,5834.2],[1991,6236.41],[1992,6618.74],[1993,6840.32],[1994,6922.27],[1995,6920.48],[1996,6951.6],[1997,7113.69],[1998,7255.6],[1999,7355.14],[2000,7405.97],[2001,7317.09],[2002,7356.03],[2003,7550.69],[2004,7986.1],[2005,8399],[2006,8960.44],[2007,9868.16],[2008,10733.83],[2009,10796.68]],"population":[[1800,78842],[1820,78842],[1850,135000],[1870,176000],[1900,263000],[1901,269000],[1902,275000],[1903,281000],[1904,287000],[1905,293000],[1906,299000],[1907,306000],[1908,312000],[1909,319000],[1910,326000],[1911,333000],[1912,341000],[1913,348000],[1914,365000],[1915,383000],[1916,402000],[1917,422000],[1918,442000],[1919,464000],[1920,487000],[1921,489000],[1922,491000],[1923,493000],[1924,495000],[1925,497000],[1926,499000],[1927,502000],[1928,504000],[1929,506000],[1930,515000],[1931,527000],[1932,543000],[1933,559000],[1934,576000],[1935,592000],[1936,608000],[1937,623000],[1938,640000],[1939,656000],[1940,697000],[1941,720000],[1942,773000],[1943,795000],[1944,784000],[1945,791000],[1946,788000],[1947,804000],[1948,822000],[1949,838000],[1950,892502],[1951,915560],[1952,940080],[1953,962188],[1954,985066],[1955,1010655],[1956,1036550],[1957,1063506],[1958,1085241],[1959,1115146],[1960,1147610],[1961,1181175],[1962,1215725],[1963,1251278],[1964,1287993],[1965,1325975],[1966,1365169],[1967,1405486],[1968,1446758],[1969,1488794],[1970,1531038],[1971,1573444],[1972,1616384],[1973,1659161],[1974,1706336],[1975,1747783],[1976,1789842],[1977,1839782],[1978,1872588],[1979,1914853],[1980,1956454],[1981,1995823],[1982,2036305],[1983,2077631],[1984,2120220],[1985,2164335],[1986,2209048],[1987,2253639],[1988,2298640],[1989,2344226],[1990,2390419],[1991,2437528],[1992,2484997],[1993,2531926],[1994,2579616],[1995,2629303],[1996,2680414],[1997,2734531],[1998,2788234],[1999,2838492],[2000,2889485],[2001,2941167],[2002,2990875],[2003,3039748],[2004,3089531],[2005,3140232],[2006,3191319],[2007,3242173],[2008,3292693]],"lifeExpectancy":[[1800,32.9],[1915,32.9],[1930,35.9],[1940,42.4],[1950,53.26],[1951,53.79],[1952,54.83],[1953,55.79],[1954,56.69],[1955,57.53],[1956,58.3],[1957,59.01],[1958,59.66],[1959,60.26],[1960,60.81],[1961,61.32],[1962,61.8],[1963,62.27],[1964,62.72],[1965,63.17],[1966,63.61],[1967,64.05],[1968,64.48],[1969,64.91],[1970,65.35],[1971,65.8],[1972,66.27],[1973,66.76],[1974,67.26],[1975,67.76],[1976,68.26],[1977,68.74],[1978,69.19],[1979,69.62],[1980,70],[1981,70.35],[1982,70.66],[1983,70.94],[1984,71.2],[1985,71.42],[1986,71.61],[1987,71.78],[1988,71.92],[1989,72.04],[1990,72.16],[1991,72.3],[1992,72.46],[1993,72.65],[1994,72.86],[1995,73.11],[1996,73.36],[1997,73.61],[1998,73.86],[1999,74.09],[2000,74.29],[2001,74.48],[2002,74.66],[2003,74.84],[2004,75.01],[2005,75.17],[2006,75.33],[2007,75.5],[2008,75.65],[2009,75.81]]},{"name":"Paraguay","region":"America","income":[[1800,564.16],[1820,564.16],[1939,2455.59],[1940,2271.97],[1941,2256.51],[1942,2333.36],[1943,2328.36],[1944,2323.8],[1945,2191.57],[1946,2352.9],[1947,1998.8],[1948,1976.22],[1949,2255.95],[1950,2054.03],[1951,2038.81],[1952,1952.31],[1953,1955.91],[1954,1938.39],[1955,1974.52],[1956,2006.18],[1957,2046.15],[1958,2107.31],[1959,2049.46],[1960,2016.41],[1961,2058.78],[1962,2148.03],[1963,2150.97],[1964,2187.33],[1965,2253.94],[1966,2219.58],[1967,2299.38],[1968,2318.87],[1969,2345.99],[1970,2426.65],[1971,2465.48],[1972,2523.34],[1973,2642.34],[1974,2779.72],[1975,2878.12],[1976,3000.98],[1977,3248.37],[1978,3525.63],[1979,3829.88],[1980,4283.09],[1981,4534.67],[1982,4258.5],[1983,4015.03],[1984,4023.96],[1985,4064.65],[1986,3943.64],[1987,3998.88],[1988,4136.87],[1989,4254.41],[1990,4261.11],[1991,4244.88],[1992,4196.41],[1993,4242.62],[1994,4248.93],[1995,4318.04],[1996,4254.72],[1997,4247.4],[1998,4117.41],[1999,4028.5],[2000,3907.3],[2001,3885.14],[2002,3783.67],[2003,3828.38],[2004,3885.94],[2005,3900],[2006,3989.49],[2007,4175.72],[2008,4332.38],[2009,4054.3]],"population":[[1800,143000],[1820,143000],[1850,350000],[1870,384000],[1900,440000],[1901,450000],[1902,461000],[1903,472000],[1904,483000],[1905,494000],[1906,505000],[1907,517000],[1908,529000],[1909,542000],[1910,554000],[1911,567000],[1912,580000],[1913,594000],[1914,608000],[1915,622000],[1916,637000],[1917,652000],[1918,667000],[1919,683000],[1920,699000],[1921,715000],[1922,732000],[1923,749000],[1924,767000],[1925,785000],[1926,803000],[1927,822000],[1928,841000],[1929,860000],[1930,880000],[1931,901000],[1932,922000],[1933,944000],[1934,966000],[1935,988000],[1936,1012000],[1937,1036000],[1938,1061000],[1939,1086000],[1940,1111000],[1941,1137000],[1942,1164000],[1943,1191000],[1944,1219000],[1945,1247000],[1946,1275000],[1947,1305000],[1948,1335000],[1949,1366000],[1950,1475669],[1951,1515299],[1952,1555876],[1953,1597419],[1954,1639946],[1955,1683477],[1956,1726702],[1957,1770902],[1958,1816096],[1959,1862301],[1960,1909538],[1961,1959034],[1962,2009813],[1963,2061907],[1964,2115353],[1965,2170183],[1966,2228306],[1967,2287985],[1968,2349262],[1969,2412181],[1970,2476785],[1971,2544518],[1972,2614104],[1973,2692135],[1974,2772696],[1975,2850419],[1976,2919486],[1977,2984494],[1978,3050953],[1979,3119329],[1980,3193047],[1981,3275777],[1982,3366439],[1983,3462731],[1984,3563622],[1985,3668292],[1986,3775922],[1987,3886512],[1988,4000058],[1989,4116564],[1990,4236056],[1991,4358536],[1992,4483945],[1993,4612341],[1994,4743715],[1995,4877951],[1996,5014837],[1997,5154123],[1998,5295745],[1999,5439657],[2000,5585828],[2001,5734139],[2002,5884491],[2003,6036900],[2004,6191368],[2005,6347884],[2006,6506464],[2007,6667147],[2008,6829969]],"lifeExpectancy":[[1800,35.5],[1932,35.5],[1950,62.58],[1951,62.57],[1952,62.57],[1953,62.61],[1954,62.69],[1955,62.8],[1956,62.95],[1957,63.13],[1958,63.34],[1959,63.56],[1960,63.79],[1961,64.02],[1962,64.22],[1963,64.41],[1964,64.57],[1965,64.71],[1966,64.83],[1967,64.96],[1968,65.11],[1969,65.26],[1970,65.43],[1971,65.6],[1972,65.77],[1973,65.93],[1974,66.07],[1975,66.2],[1976,66.32],[1977,66.44],[1978,66.55],[1979,66.66],[1980,66.77],[1981,66.88],[1982,66.98],[1983,67.08],[1984,67.19],[1985,67.29],[1986,67.41],[1987,67.54],[1988,67.69],[1989,67.84],[1990,68.02],[1991,68.19],[1992,68.37],[1993,68.55],[1994,68.73],[1995,68.92],[1996,69.11],[1997,69.33],[1998,69.56],[1999,69.81],[2000,70.07],[2001,70.34],[2002,70.6],[2003,70.84],[2004,71.07],[2005,71.29],[2006,71.49],[2007,71.68],[2008,71.88],[2009,72.07]]},{"name":"Peru","region":"America","income":[[1800,697.3],[1820,697.3],[1896,842.17],[1897,909.29],[1898,955.97],[1899,996.45],[1900,1036.35],[1901,1098.3],[1902,1143.88],[1903,1206.27],[1904,1231.36],[1905,1304.9],[1906,1391.58],[1907,1460.21],[1908,1469.46],[1909,1475.52],[1910,1482.18],[1911,1495.16],[1912,1528.49],[1913,1559.94],[1914,1530.83],[1915,1642.07],[1916,1789.86],[1917,1832.51],[1918,1820.58],[1919,1857.88],[1920,1852.87],[1921,1899.58],[1922,2031.68],[1923,2138.02],[1924,2302.87],[1925,2327.35],[1926,2523.87],[1927,2529.18],[1928,2650.85],[1929,2882.33],[1930,2512.78],[1931,2272.66],[1932,2150.42],[1933,2354.03],[1934,2629.71],[1935,2830.3],[1936,2918.46],[1937,2910.29],[1938,2908.69],[1939,2877.83],[1940,2887.16],[1941,2841.44],[1942,2729.71],[1943,2726.15],[1944,2910.25],[1945,2967.32],[1946,3029.7],[1947,3062.49],[1948,3110.57],[1949,3288.95],[1950,3486.91],[1951,3665.31],[1952,3758.52],[1953,3896.3],[1954,3902.72],[1955,4084.31],[1956,4157.3],[1957,4245.26],[1958,4144.74],[1959,4053.34],[1960,4486.39],[1961,4747.91],[1962,4957.04],[1963,5038.46],[1964,5235.97],[1965,5430.6],[1966,5724.34],[1967,5788.09],[1968,5568.88],[1969,5555.3],[1970,5823.86],[1971,5916.94],[1972,5937.83],[1973,6078.65],[1974,6224.46],[1975,6536.7],[1976,6453.03],[1977,6281.29],[1978,6118.28],[1979,6317.33],[1980,6441.29],[1981,6561.48],[1982,6434.5],[1983,5452.54],[1984,5578.5],[1985,5563.34],[1986,5987.6],[1987,6360.94],[1988,5714.65],[1989,4911.48],[1990,4564.34],[1991,4581.33],[1992,4446.38],[1993,4603.44],[1994,5123.24],[1995,5453.85],[1996,5474.06],[1997,5838.35],[1998,5745.32],[1999,5704.59],[2000,5791.37],[2001,5714.9],[2002,5909.02],[2003,6054.91],[2004,6161.25],[2005,6466],[2006,6860.37],[2007,7317.57],[2008,7912.56],[2009,7858.97]],"population":[[1820,1317000],[1850,2001000],[1870,2606000],[1890,3346000],[1896,3470000],[1897,3513000],[1898,3558000],[1899,3603000],[1900,3648000],[1901,3694000],[1902,3741000],[1903,3788000],[1904,3836000],[1905,3885000],[1906,3934000],[1907,3984000],[1908,4034000],[1909,4085000],[1910,4137000],[1911,4189000],[1912,4242000],[1913,4295000],[1914,4350000],[1915,4405000],[1916,4460000],[1917,4517000],[1918,4574000],[1919,4631000],[1920,4690000],[1921,4764000],[1922,4838000],[1923,4914000],[1924,4992000],[1925,5070000],[1926,5150000],[1927,5230000],[1928,5312000],[1929,5396000],[1930,5480000],[1931,5569000],[1932,5660000],[1933,5752000],[1934,5846000],[1935,5941000],[1936,6038000],[1937,6137000],[1938,6237000],[1939,6338000],[1940,6440000],[1941,6550000],[1942,6662000],[1943,6776000],[1944,6892000],[1945,7010000],[1946,7130000],[1947,7252000],[1948,7376000],[1949,7502000],[1950,7632500],[1951,7826200],[1952,8025700],[1953,8232100],[1954,8447000],[1955,8671500],[1956,8904900],[1957,9146100],[1958,9396700],[1959,9657800],[1960,9931000],[1961,10217500],[1962,10516500],[1963,10825800],[1964,11143500],[1965,11467300],[1966,11796400],[1967,12132200],[1968,12476000],[1969,12829100],[1970,13192800],[1971,13568300],[1972,13954700],[1973,14350300],[1974,14753100],[1975,15161199],[1976,15573199],[1977,15990099],[1978,16414399],[1979,16848699],[1980,17295298],[1981,17754798],[1982,18125129],[1983,18516941],[1984,18927692],[1985,19348926],[1986,19771935],[1987,20195924],[1988,20625082],[1989,21063800],[1990,21511443],[1991,21967278],[1992,22430449],[1993,22900004],[1994,23374974],[1995,23846388],[1996,24304899],[1997,24748122],[1998,25174087],[1999,25581874],[2000,25979722],[2001,26376033],[2002,26769436],[2003,27158869],[2004,27544305],[2005,27925628],[2006,28302603],[2007,28674757],[2008,29041593]],"lifeExpectancy":[[1800,35.7],[1940,35.7],[1950,43.11],[1951,43.29],[1952,43.67],[1953,44.08],[1954,44.53],[1955,45],[1956,45.51],[1957,46.04],[1958,46.59],[1959,47.14],[1960,47.7],[1961,48.24],[1962,48.76],[1963,49.26],[1964,49.74],[1965,50.23],[1966,50.75],[1967,51.33],[1968,51.98],[1969,52.7],[1970,53.46],[1971,54.25],[1972,55.02],[1973,55.76],[1974,56.45],[1975,57.1],[1976,57.7],[1977,58.29],[1978,58.88],[1979,59.46],[1980,60.06],[1981,60.66],[1982,61.26],[1983,61.86],[1984,62.44],[1985,63.01],[1986,63.56],[1987,64.09],[1988,64.6],[1989,65.1],[1990,65.58],[1991,66.06],[1992,66.53],[1993,67.02],[1994,67.51],[1995,68.01],[1996,68.51],[1997,69.03],[1998,69.53],[1999,70.03],[2000,70.51],[2001,70.96],[2002,71.39],[2003,71.78],[2004,72.14],[2005,72.46],[2006,72.75],[2007,73.01],[2008,73.25],[2009,73.47]]},{"name":"Puerto Rico","region":"America","income":[[1800,775.1],[1820,775.1],[1913,1265.58],[1950,2822.05],[1951,2903.07],[1952,3081.96],[1953,3252.09],[1954,3370.58],[1955,3487.49],[1956,3738.97],[1957,3907.16],[1958,3951.38],[1959,4263.73],[1960,4502.88],[1961,4840.8],[1962,5108.34],[1963,5529.93],[1964,5793.24],[1965,6211.83],[1966,6572.88],[1967,6929.28],[1968,7191.45],[1969,7688.13],[1970,8357.4],[1971,8743.88],[1972,9123.04],[1973,9611.77],[1974,9539.61],[1975,9143.75],[1976,9336.84],[1977,9770.52],[1978,10292.77],[1979,10747.13],[1980,10771.18],[1981,10787.87],[1982,10330.99],[1983,10263.66],[1984,10902.91],[1985,11022.16],[1986,11812.68],[1987,12281.34],[1988,12965.94],[1989,13487.7],[1990,13873.73],[1991,14093.02],[1992,14641.59],[1993,15193.09],[1994,15682.44],[1995,16245.19],[1996,16594.09],[1997,16999.43],[1998,17443.02],[1999,18084.73],[2000,18568.22],[2001,18861.59],[2002,18855.61],[2003,19067.16],[2004,19287.91],[2005,19725.45],[2006,19366.01],[2007,19016.23],[2008,18970.51]],"population":[[1800,155000],[1815,221000],[1820,248000],[1832,330000],[1850,495000],[1860,583000],[1870,645000],[1877,732000],[1887,799000],[1899,953000],[1900,959000],[1901,974000],[1902,990000],[1903,1006000],[1904,1022000],[1905,1039000],[1906,1056000],[1907,1073000],[1908,1090000],[1909,1108000],[1910,1126000],[1911,1144000],[1912,1162000],[1913,1181000],[1914,1199000],[1915,1217000],[1916,1235000],[1917,1254000],[1918,1273000],[1919,1292000],[1920,1312000],[1921,1336000],[1922,1359000],[1923,1383000],[1924,1407000],[1925,1431000],[1926,1455000],[1927,1478000],[1928,1502000],[1929,1526000],[1930,1552000],[1931,1584000],[1932,1615000],[1933,1647000],[1934,1679000],[1935,1710000],[1936,1743000],[1937,1777000],[1938,1810000],[1939,1844000],[1940,1880000],[1941,1935000],[1942,1987000],[1943,2033000],[1944,2062000],[1945,2099000],[1946,2141000],[1947,2162000],[1948,2187000],[1949,2197000],[1950,2218000],[1951,2235000],[1952,2227000],[1953,2204000],[1954,2214000],[1955,2250000],[1956,2249000],[1957,2260000],[1958,2299000],[1959,2322000],[1960,2358000],[1961,2402514],[1962,2448046],[1963,2496601],[1964,2552181],[1965,2596774],[1966,2627368],[1967,2648961],[1968,2673568],[1969,2722232],[1970,2721754],[1971,2766299],[1972,2847132],[1973,2863420],[1974,2886600],[1975,2935124],[1976,3026125],[1977,3080828],[1978,3117884],[1979,3168446],[1980,3209648],[1981,3238968],[1982,3279001],[1983,3316031],[1984,3350037],[1985,3382106],[1986,3413303],[1987,3444468],[1988,3474992],[1989,3505600],[1990,3536910],[1991,3562110],[1992,3585176],[1993,3615497],[1994,3649237],[1995,3683103],[1996,3724655],[1997,3759430],[1998,3781101],[1999,3800081],[2000,3815909],[2001,3839190],[2002,3859606],[2003,3877881],[2004,3894855],[2005,3911299],[2006,3927188],[2007,3942491],[2008,3957169]],"lifeExpectancy":[[1800,30.43],[1894,30.43],[1902,33.3],[1903,30.36],[1910,38.17],[1920,38.46],[1930,40.65],[1940,46.01],[1950,61.71],[1951,62.43],[1952,63.8],[1953,65],[1954,66.05],[1955,66.93],[1956,67.67],[1957,68.25],[1958,68.7],[1959,69.05],[1960,69.3],[1961,69.51],[1962,69.7],[1963,69.89],[1964,70.12],[1965,70.37],[1966,70.65],[1967,70.92],[1968,71.18],[1969,71.42],[1970,71.65],[1971,71.87],[1972,72.11],[1973,72.36],[1974,72.61],[1975,72.86],[1976,73.08],[1977,73.28],[1978,73.43],[1979,73.54],[1980,73.63],[1981,73.71],[1982,73.81],[1983,73.94],[1984,74.09],[1985,74.24],[1986,74.38],[1987,74.47],[1988,74.51],[1989,74.5],[1990,74.45],[1991,74.37],[1992,74.3],[1993,74.25],[1994,74.26],[1995,74.35],[1996,74.55],[1997,74.87],[1998,75.29],[1999,75.78],[2000,76.32],[2001,76.86],[2002,77.37],[2003,77.8],[2004,78.15],[2005,78.4],[2006,78.58],[2007,78.72],[2008,78.84],[2009,78.95]]},{"name":"Suriname","region":"America","income":[[1800,1004.13],[1820,1004.13],[1913,1852.67],[1950,3201.44],[1970,4958.82],[1971,5250.97],[1972,5504.44],[1973,5758.36],[1974,5960.04],[1975,5413.8],[1976,5953.52],[1977,6622.72],[1978,7028.64],[1979,6631.28],[1980,6045.94],[1981,6417.63],[1982,6061.25],[1983,5722.81],[1984,5518.3],[1985,6193.03],[1986,6009.13],[1987,5508.17],[1988,5930.97],[1989,6148.98],[1990,5863.39],[1991,5962.17],[1992,5974.26],[1993,5624.37],[1994,5400.78],[1995,5509.17],[1996,5520.94],[1997,5589.34],[1998,5703.02],[1999,5510.23],[2000,5677.29],[2001,5962.11],[2002,6070.68],[2003,6446.04],[2004,6880.09],[2005,7234],[2006,7425.02],[2007,7722.28],[2008,8091.8],[2009,8199.03]],"population":[[1800,80721],[1820,80721],[1950,208068],[1951,213358],[1952,219442],[1953,226016],[1954,233027],[1955,240491],[1956,248363],[1957,256534],[1958,265294],[1959,274847],[1960,284506],[1961,294466],[1962,305124],[1963,316001],[1964,327023],[1965,336711],[1966,345810],[1967,354353],[1968,361735],[1969,368064],[1970,372898],[1971,377191],[1972,381410],[1973,383662],[1974,380911],[1975,363393],[1976,353047],[1977,360780],[1978,366025],[1979,363631],[1980,354860],[1981,352967],[1982,359611],[1983,365602],[1984,370748],[1985,375592],[1986,379472],[1987,382559],[1988,386349],[1989,390987],[1990,395000],[1991,398992],[1992,402943],[1993,406817],[1994,410577],[1995,414188],[1996,417635],[1997,420899],[1998,423948],[1999,426759],[2000,429323],[2001,431635],[2002,433682],[2003,435449],[2004,436935],[2005,438144],[2006,439117],[2007,439894],[2008,440486]],"lifeExpectancy":[[1800,32.9],[1925,32.9],[1950,54.7],[1951,55.05],[1952,55.73],[1953,56.36],[1954,56.95],[1955,57.5],[1956,58],[1957,58.47],[1958,58.9],[1959,59.3],[1960,59.68],[1961,60.05],[1962,60.41],[1963,60.78],[1964,61.14],[1965,61.52],[1966,61.9],[1967,62.27],[1968,62.63],[1969,62.98],[1970,63.31],[1971,63.61],[1972,63.89],[1973,64.14],[1974,64.37],[1975,64.59],[1976,64.81],[1977,65.05],[1978,65.3],[1979,65.56],[1980,65.83],[1981,66.09],[1982,66.33],[1983,66.53],[1984,66.71],[1985,66.85],[1986,66.96],[1987,67.06],[1988,67.15],[1989,67.24],[1990,67.33],[1991,67.44],[1992,67.55],[1993,67.66],[1994,67.77],[1995,67.88],[1996,67.97],[1997,68.03],[1998,68.08],[1999,68.1],[2000,68.11],[2001,68.12],[2002,68.15],[2003,68.21],[2004,68.3],[2005,68.43],[2006,68.58],[2007,68.76],[2008,68.96],[2009,69.16]]},{"name":"Trinidad and Tobago","region":"America","income":[[1800,774.21],[1820,774.21],[1913,1264.12],[1950,2818.8],[1951,2987.51],[1952,3023.27],[1953,3033.59],[1954,3002.88],[1955,3311.35],[1956,3881.04],[1957,4100.39],[1958,4303.08],[1959,4405.84],[1960,4795.86],[1961,4888.04],[1962,4997.52],[1963,5154.49],[1964,5217.56],[1965,5393.58],[1966,5550.35],[1967,5621.37],[1968,5895.03],[1969,6058.54],[1970,6324.94],[1971,6346.12],[1972,6619.55],[1973,6663.4],[1974,6945.61],[1975,6995.35],[1976,7555.17],[1977,7899.55],[1978,8683.78],[1979,8937.55],[1980,9498.49],[1981,9815.18],[1982,9119.53],[1983,8280.37],[1984,8647.69],[1985,8180.31],[1986,7818.14],[1987,7388.6],[1988,7059.56],[1989,6990.8],[1990,7113.56],[1991,7398.63],[1992,7370.99],[1993,7340.13],[1994,7705.76],[1995,8071.16],[1996,8449.63],[1997,8792.57],[1998,9269.85],[1999,9952.12],[2000,10496.91],[2001,11020.92],[2002,11460.6],[2003,13030.45],[2004,13978.56],[2005,15352],[2006,17384.13],[2007,18141.92],[2008,18511.09],[2009,17826.05]],"population":[[1800,60000],[1820,60000],[1850,80000],[1870,124000],[1900,268000],[1901,274000],[1902,279000],[1903,285000],[1904,291000],[1905,298000],[1906,304000],[1907,310000],[1908,317000],[1909,324000],[1910,331000],[1911,338000],[1912,345000],[1913,352000],[1914,357000],[1915,362000],[1916,367000],[1917,373000],[1918,378000],[1919,383000],[1920,389000],[1921,367000],[1922,371000],[1923,376000],[1924,379000],[1925,382000],[1926,385000],[1927,388000],[1928,392000],[1929,398000],[1930,405000],[1931,412000],[1932,417000],[1933,422000],[1934,428000],[1935,435000],[1936,442000],[1937,450000],[1938,458000],[1939,466000],[1940,476000],[1941,492000],[1942,510000],[1943,525000],[1944,536000],[1945,547000],[1946,561000],[1947,583000],[1948,600000],[1949,616000],[1950,632000],[1951,648700],[1952,662850],[1953,678300],[1954,697500],[1955,720800],[1956,742500],[1957,764900],[1958,788600],[1959,817050],[1960,841150],[1961,861387],[1962,887498],[1963,904380],[1964,923887],[1965,939255],[1966,952535],[1967,960155],[1968,963086],[1969,962927],[1970,955000],[1971,961605],[1972,975199],[1973,984786],[1974,995364],[1975,1006931],[1976,1021480],[1977,1039009],[1978,1055527],[1979,1073027],[1980,1090513],[1981,1101836],[1982,1116479],[1983,1133265],[1984,1150426],[1985,1166353],[1986,1180346],[1987,1191336],[1988,1198392],[1989,1200303],[1990,1198247],[1991,1192417],[1992,1183669],[1993,1174430],[1994,1165700],[1995,1158553],[1996,1148699],[1997,1138101],[1998,1131314],[1999,1125375],[2000,1118204],[2001,1110217],[2002,1101832],[2003,1093146],[2004,1084206],[2005,1075066],[2006,1065842],[2007,1056608],[2008,1047366]],"lifeExpectancy":[[1800,32.9],[1829,32.9],[1835,38.8],[1921,38.8],[1931,45.7],[1946,54.5],[1950,58.22],[1951,58.42],[1952,58.83],[1953,59.3],[1954,59.81],[1955,60.36],[1956,60.96],[1957,61.6],[1958,62.25],[1959,62.9],[1960,63.52],[1961,64.08],[1962,64.55],[1963,64.92],[1964,65.18],[1965,65.35],[1966,65.43],[1967,65.47],[1968,65.5],[1969,65.54],[1970,65.61],[1971,65.72],[1972,65.86],[1973,66.03],[1974,66.22],[1975,66.42],[1976,66.63],[1977,66.84],[1978,67.03],[1979,67.2],[1980,67.36],[1981,67.51],[1982,67.67],[1983,67.83],[1984,67.99],[1985,68.16],[1986,68.34],[1987,68.51],[1988,68.66],[1989,68.8],[1990,68.92],[1991,69],[1992,69.06],[1993,69.08],[1994,69.08],[1995,69.04],[1996,68.96],[1997,68.85],[1998,68.72],[1999,68.59],[2000,68.48],[2001,68.41],[2002,68.39],[2003,68.44],[2004,68.57],[2005,68.75],[2006,68.97],[2007,69.22],[2008,69.46],[2009,69.7]]},{"name":"United States","region":"America","income":[[1800,1912.62],[1801,1948.59],[1802,1981.63],[1803,1946.61],[1804,1944.22],[1805,1987.88],[1806,2024.49],[1807,2045.45],[1808,1896.7],[1809,1993.22],[1810,2050.52],[1811,2093.55],[1812,2056.15],[1813,2079.25],[1814,2119.35],[1815,2111.19],[1816,2023.09],[1817,2021.75],[1818,2027.3],[1819,2023.02],[1820,2011.22],[1821,2043.38],[1822,2101.55],[1823,2077.84],[1824,2134.86],[1825,2184.19],[1826,2200.15],[1827,2210.11],[1828,2209.17],[1829,2133.96],[1830,2293.67],[1831,2438],[1832,2530.55],[1833,2620.99],[1834,2491.55],[1835,2589.99],[1836,2629.47],[1837,2543.05],[1838,2520.65],[1839,2646.12],[1840,2512.15],[1841,2457.92],[1842,2436.73],[1843,2476.52],[1844,2614.36],[1845,2656.44],[1846,2673.07],[1847,2744.83],[1848,2817.92],[1849,2743.7],[1850,2754.9],[1851,2871.34],[1852,3022.03],[1853,3235.59],[1854,3244.9],[1855,3172.17],[1856,3239.39],[1857,3167.39],[1858,3182.83],[1859,3270.94],[1860,3359.31],[1861,3288.25],[1862,3393.61],[1863,3617.64],[1864,3739.47],[1865,3541.92],[1866,3514],[1867,3632],[1868,3681.88],[1869,3781.48],[1870,3970.93],[1871,4044.9],[1872,4106.03],[1873,4198.88],[1874,4055.76],[1875,4170.62],[1876,4131.67],[1877,4181.78],[1878,4275.61],[1879,4718.64],[1880,5178.86],[1881,5239.22],[1882,5428.53],[1883,5402.76],[1884,5362.11],[1885,5277.75],[1886,5332.39],[1887,5472.26],[1888,5330.85],[1889,5549.39],[1890,5524.7],[1891,5584.39],[1892,5717.15],[1893,5579.84],[1894,5297.88],[1895,5828.93],[1896,5603.9],[1897,5962.94],[1898,6008.89],[1899,6609.78],[1900,6624.3],[1901,7305.78],[1902,7282.17],[1903,7356.13],[1904,7494.66],[1905,8031.68],[1906,8205.42],[1907,7928.61],[1908,7339.85],[1909,8048.39],[1910,7913.7],[1911,8010.71],[1912,8317.33],[1913,8448.56],[1914,7615.96],[1915,7758.77],[1916,8875.24],[1917,8714.46],[1918,9254.58],[1919,8908.37],[1920,8568.17],[1921,8068.82],[1922,8504.51],[1923,9512.22],[1924,9544.98],[1925,9581.57],[1926,9990.36],[1927,9869.44],[1928,9892.79],[1929,10387.38],[1930,9346.2],[1931,8640.93],[1932,7433.95],[1933,7267.63],[1934,7977.82],[1935,8601.16],[1936,9629.63],[1937,10028.34],[1938,9569.07],[1939,10225.26],[1940,10948.06],[1941,12667.38],[1942,14819.55],[1943,16980.87],[1944,18085.1],[1945,17614.95],[1946,15431.41],[1947,14931.55],[1948,15266.38],[1949,14866.24],[1950,15855.86],[1951,16750.74],[1952,17039.38],[1953,17471.28],[1954,16979.26],[1955,17822.45],[1956,17783.27],[1957,17749.5],[1958,17217.39],[1959,18084.11],[1960,18175.43],[1961,18226.62],[1962,18978.45],[1963,19461.1],[1964,20243.98],[1965,21209.93],[1966,22263.22],[1967,22495.68],[1968,23268.21],[1969,23669.41],[1970,23345.77],[1971,23744.67],[1972,24654.04],[1973,25742],[1974,25281.7],[1975,24889.6],[1976,25881.72],[1977,26715.14],[1978,27814.18],[1979,28278.91],[1980,27838.11],[1981,28160.14],[1982,27243.47],[1983,28119.69],[1984,29785.25],[1985,30636.21],[1986,31297.31],[1987,31953.81],[1988,32860.52],[1989,33587.09],[1990,33710.39],[1991,33076.87],[1992,33589.59],[1993,33914.89],[1994,34730.56],[1995,35053.29],[1996,35807],[1997,36847.81],[1998,37811.68],[1999,38912.58],[2000,39758.5],[2001,39474.11],[2002,39535.84],[2003,40044.18],[2004,40956.4],[2005,41674],[2006,42385.18],[2007,42866.22],[2008,42656.49],[2009,41256.08]],"population":[[1820,9980510],[1821,10298969],[1822,10625503],[1823,10951077],[1824,11276695],[1825,11602355],[1826,11928057],[1827,12250905],[1828,12580590],[1829,12906416],[1830,13240314],[1831,13658580],[1832,14077890],[1833,14496235],[1834,14914618],[1835,15334042],[1836,15752501],[1837,16170997],[1838,16590533],[1839,17009101],[1840,17443768],[1841,18056100],[1842,18667464],[1843,19278865],[1844,19890301],[1845,20502776],[1846,21114282],[1847,21725822],[1848,22337396],[1849,22950007],[1850,23579718],[1851,24405303],[1852,25230918],[1853,26156953],[1854,26882238],[1855,27707943],[1856,28534680],[1857,29360442],[1858,30186232],[1859,31012051],[1860,31838901],[1861,32677742],[1862,33515609],[1863,34354509],[1864,35192433],[1865,36031388],[1866,36869368],[1867,37708378],[1868,38546412],[1869,39385476],[1870,40240630],[1871,41098000],[1872,42136000],[1873,43174000],[1874,44212000],[1875,45245000],[1876,46287000],[1877,47325000],[1878,48362000],[1879,49400000],[1880,50458000],[1881,51743000],[1882,53027000],[1883,54311000],[1884,55595000],[1885,56879000],[1886,58164000],[1887,59448000],[1888,60732000],[1889,62016000],[1890,63302000],[1891,64612000],[1892,65922000],[1893,67231000],[1894,68541000],[1895,69851000],[1896,71161000],[1897,72471000],[1898,73781000],[1899,75091000],[1900,76391000],[1901,77888000],[1902,79469000],[1903,80946000],[1904,82485000],[1905,84147000],[1906,85770000],[1907,87339000],[1908,89055000],[1909,90845000],[1910,92767000],[1911,94234000],[1912,95703000],[1913,97606000],[1914,99505000],[1915,100941000],[1916,102364000],[1917,103817000],[1918,104958000],[1919,105473000],[1920,106881000],[1921,108964000],[1922,110484000],[1923,112387000],[1924,114558000],[1925,116284000],[1926,117857000],[1927,119502000],[1928,120971000],[1929,122245000],[1930,123668000],[1931,124633000],[1932,125436000],[1933,126180000],[1934,126978000],[1935,127859000],[1936,128681000],[1937,129464000],[1938,130476000],[1939,131539000],[1940,132637000],[1941,133922000],[1942,135386000],[1943,137272000],[1944,138937000],[1945,140474000],[1946,141940000],[1947,144688000],[1948,147203000],[1949,149770000],[1950,152271000],[1951,154878000],[1952,157553000],[1953,160184000],[1954,163026000],[1955,165931000],[1956,168903000],[1957,171984000],[1958,174882000],[1959,177830000],[1960,180671000],[1961,183691000],[1962,186538000],[1963,189242000],[1964,191889000],[1965,194303000],[1966,196560000],[1967,198712000],[1968,200706000],[1969,202677000],[1970,205052000],[1971,207661000],[1972,209896000],[1973,211909000],[1974,213854000],[1975,215973000],[1976,218035000],[1977,220239000],[1978,222585000],[1979,225055000],[1980,227726463],[1981,229966237],[1982,232187835],[1983,234307207],[1984,236348292],[1985,238466283],[1986,240650755],[1987,242803533],[1988,245021414],[1989,247341697],[1990,250131894],[1991,253492503],[1992,256894189],[1993,260255352],[1994,263435673],[1995,266557091],[1996,269667391],[1997,272911760],[1998,276115288],[1999,279294713],[2000,282338631],[2001,285023886],[2002,287675526],[2003,290342554],[2004,293027571],[2005,295734134],[2006,298444215],[2007,301139947],[2008,303824646]],"lifeExpectancy":[[1800,39.41],[1880,39.41],[1890,45.21],[1901,49.3],[1902,50.5],[1903,50.6],[1904,49.6],[1905,50.3],[1906,50.1],[1907,50.2],[1908,51.9],[1909,52.8],[1910,51.8],[1911,53.4],[1912,54.1],[1913,53.5],[1914,54.6],[1915,55.1],[1916,54.2],[1917,54],[1918,47.2],[1919,55.3],[1920,55.4],[1921,58.2],[1922,58.1],[1923,57.5],[1924,58.5],[1925,58.5],[1926,57.9],[1927,59.4],[1928,58.3],[1929,58.5],[1930,59.6],[1931,60.3],[1932,61],[1933,60.95],[1934,60.31],[1935,60.97],[1936,60.42],[1937,61.11],[1938,62.44],[1939,63.12],[1940,63.28],[1941,63.84],[1942,64.63],[1943,64.34],[1944,65.13],[1945,65.63],[1946,66.33],[1947,66.73],[1948,67.3],[1949,67.68],[1950,68.12],[1951,68.22],[1952,68.44],[1953,68.79],[1954,69.58],[1955,69.63],[1956,69.71],[1957,69.49],[1958,69.76],[1959,69.98],[1960,69.91],[1961,70.32],[1962,70.21],[1963,70.04],[1964,70.33],[1965,70.41],[1966,70.43],[1967,70.76],[1968,70.42],[1969,70.66],[1970,70.92],[1971,71.24],[1972,71.34],[1973,71.54],[1974,72.08],[1975,72.68],[1976,72.99],[1977,73.38],[1978,73.58],[1979,74.03],[1980,73.93],[1981,74.36],[1982,74.65],[1983,74.71],[1984,74.82],[1985,74.79],[1986,74.87],[1987,75.01],[1988,75.03],[1989,75.31],[1990,75.6],[1991,75.8],[1992,76.08],[1993,75.83],[1994,76],[1995,76.09],[1996,76.44],[1997,76.8],[1998,76.97],[1999,76.97],[2000,77.13],[2001,77.25],[2002,77.31],[2003,77.49],[2004,77.92],[2005,77.93],[2006,78.21],[2007,79.09],[2008,79.27],[2009,79.43]]},{"name":"Uruguay","region":"America","income":[[1800,784.46],[1820,784.46],[1870,2515.22],[1871,2512],[1872,3035.52],[1873,2999.99],[1874,2670.33],[1875,2240.25],[1876,2427.41],[1877,2448.19],[1878,2591.78],[1879,2247.79],[1880,2401.2],[1881,2227.77],[1882,2398.64],[1883,2764.11],[1884,2680.57],[1885,2963.18],[1886,3008.19],[1887,2614.93],[1888,3134.99],[1889,2785.56],[1890,2476.55],[1891,2641.64],[1892,2646.24],[1893,2810.95],[1894,3064.67],[1895,2962.06],[1896,3049.71],[1897,2875.86],[1898,2595.08],[1899,2607.73],[1900,2558.84],[1901,2575.86],[1902,2967.03],[1903,3016.04],[1904,3044.56],[1905,2692.36],[1906,2921.72],[1907,3180.2],[1908,3429.15],[1909,3410.15],[1910,3616.95],[1911,3410.32],[1912,4045.87],[1913,3817.78],[1914,3061.19],[1915,2849.17],[1916,2892.97],[1917,3134.27],[1918,3261.16],[1919,3615.78],[1920,3084.06],[1921,3173],[1922,3550.25],[1923,3656.14],[1924,3918.22],[1925,3676.65],[1926,3918.96],[1927,4379.65],[1928,4504.87],[1929,4437.56],[1930,4960.9],[1931,4037.12],[1932,3686.22],[1933,3172.25],[1934,3714.87],[1935,3870.21],[1936,3989.47],[1937,3993.26],[1938,4240.05],[1939,4258.09],[1940,4221.98],[1941,4247.21],[1942,3849.73],[1943,3841.54],[1944,4272.8],[1945,4340.79],[1946,4709.27],[1947,4973.97],[1948,5080.7],[1949,5194.38],[1950,5374.01],[1951,5714.81],[1952,5716.77],[1953,5926.63],[1954,6217.57],[1955,6172.35],[1956,6182.26],[1957,6150.77],[1958,6230.9],[1959,5605],[1960,5720.89],[1961,5808.7],[1962,5603.36],[1963,5558.9],[1964,5603.15],[1965,5605.11],[1966,5737.16],[1967,5444.62],[1968,5475.23],[1969,5756.43],[1970,5979.13],[1971,5916.95],[1972,5703.41],[1973,5737.31],[1974,5909.05],[1975,6252.62],[1976,6468.66],[1977,6504.34],[1978,6808.86],[1979,7189.87],[1980,7586.16],[1981,7690.7],[1982,6920.22],[1983,6475.01],[1984,6366.47],[1985,6420.41],[1986,6946.57],[1987,7452.4],[1988,7407.36],[1989,7453.36],[1990,7466.41],[1991,7628.84],[1992,8137],[1993,8331.94],[1994,8728.07],[1995,8495.07],[1996,8856.81],[1997,9230.24],[1998,9590.07],[1999,9266.79],[2000,9092.32],[2001,8732.2],[2002,7727],[2003,7853.82],[2004,8735],[2005,9266],[2006,9641.29],[2007,10331.31],[2008,11178.99],[2009,11461.03]],"population":[[1800,55000],[1820,55000],[1850,132000],[1870,343000],[1871,354000],[1872,364000],[1873,376000],[1874,387000],[1875,399000],[1876,411000],[1877,424000],[1878,437000],[1879,450000],[1880,464000],[1881,482000],[1882,502000],[1883,522000],[1884,543000],[1885,564000],[1886,587000],[1887,610000],[1888,635000],[1889,660000],[1890,686000],[1891,706000],[1892,727000],[1893,748000],[1894,770000],[1895,792000],[1896,815000],[1897,839000],[1898,864000],[1899,889000],[1900,915000],[1901,930000],[1902,945000],[1903,961000],[1904,977000],[1905,993000],[1906,1009000],[1907,1026000],[1908,1043000],[1909,1062000],[1910,1081000],[1911,1112000],[1912,1144000],[1913,1177000],[1914,1223000],[1915,1246000],[1916,1269000],[1917,1292000],[1918,1316000],[1919,1341000],[1920,1371000],[1921,1402000],[1922,1433000],[1923,1465000],[1924,1498000],[1925,1534000],[1926,1571000],[1927,1608000],[1928,1646000],[1929,1685000],[1930,1713000],[1931,1741000],[1932,1770000],[1933,1799000],[1934,1829000],[1935,1859000],[1936,1889000],[1937,1921000],[1938,1952000],[1939,1944000],[1940,1965000],[1941,1987000],[1942,2010000],[1943,2032000],[1944,2055000],[1945,2081000],[1946,2107000],[1947,2134000],[1948,2160000],[1949,2188000],[1950,2194275],[1951,2223060],[1952,2252965],[1953,2283920],[1954,2316543],[1955,2353136],[1956,2389290],[1957,2424959],[1958,2460411],[1959,2495022],[1960,2530969],[1961,2563794],[1962,2598466],[1963,2632111],[1964,2663610],[1965,2693133],[1966,2721207],[1967,2748579],[1968,2776607],[1969,2801859],[1970,2823659],[1971,2826042],[1972,2829526],[1973,2834115],[1974,2838213],[1975,2841818],[1976,2857453],[1977,2873520],[1978,2889495],[1979,2905131],[1980,2919851],[1981,2935649],[1982,2953997],[1983,2972570],[1984,2990097],[1985,3008270],[1986,3026971],[1987,3045153],[1988,3063668],[1989,3084065],[1990,3105708],[1991,3127574],[1992,3149262],[1993,3170958],[1994,3193413],[1995,3215423],[1996,3238280],[1997,3262838],[1998,3284853],[1999,3304234],[2000,3323876],[2001,3343797],[2002,3363085],[2003,3381606],[2004,3399237],[2005,3415920],[2006,3431932],[2007,3447496],[2008,3462531]],"lifeExpectancy":[[1800,32.9],[1925,32.9],[1950,65.98],[1951,66.04],[1952,66.18],[1953,66.33],[1954,66.51],[1955,66.71],[1956,66.93],[1957,67.17],[1958,67.41],[1959,67.66],[1960,67.89],[1961,68.11],[1962,68.29],[1963,68.44],[1964,68.54],[1965,68.6],[1966,68.63],[1967,68.64],[1968,68.65],[1969,68.66],[1970,68.69],[1971,68.73],[1972,68.8],[1973,68.88],[1974,69],[1975,69.14],[1976,69.32],[1977,69.53],[1978,69.76],[1979,70.02],[1980,70.28],[1981,70.56],[1982,70.83],[1983,71.1],[1984,71.35],[1985,71.58],[1986,71.8],[1987,72],[1988,72.19],[1989,72.37],[1990,72.54],[1991,72.72],[1992,72.91],[1993,73.11],[1994,73.32],[1995,73.54],[1996,73.77],[1997,74],[1998,74.23],[1999,74.45],[2000,74.66],[2001,74.88],[2002,75.08],[2003,75.3],[2004,75.51],[2005,75.71],[2006,75.92],[2007,76.12],[2008,76.31],[2009,76.5]]},{"name":"Albania","region":"Europe & Central Asia","income":[[1800,601.22],[1820,613.83],[1870,682.67],[1890,914.81],[1900,1048.26],[1910,1194.13],[1913,1240.6],[1929,1417.53],[1950,1532.35],[1951,1598.49],[1952,1601.06],[1953,1665.79],[1954,1714.69],[1955,1807.13],[1956,1825.3],[1957,1942.28],[1958,2029.79],[1959,2113.35],[1960,2220.34],[1961,2238.79],[1962,2312.89],[1963,2391.78],[1964,2473.7],[1965,2563.95],[1966,2660.07],[1967,2760.2],[1968,2859.81],[1969,2956.94],[1970,3066.02],[1971,3188.58],[1972,3313.42],[1973,3478.46],[1974,3491.43],[1975,3503.59],[1976,3517.62],[1977,3533],[1978,3549.26],[1979,3566.57],[1980,3591.76],[1981,3611.03],[1982,3630.88],[1983,3652.08],[1984,3672.87],[1985,3692.09],[1986,3715.55],[1987,3738.93],[1988,3762.61],[1989,3790.98],[1990,3824.85],[1991,2717.57],[1992,2497.44],[1993,2716.65],[1994,2918.82],[1995,3285.53],[1996,3569.59],[1997,3193.05],[1998,3584.77],[1999,3928.28],[2000,4195.21],[2001,4476.05],[2002,4604.21],[2003,4855.21],[2004,5115.25],[2005,5369],[2006,5635.21],[2007,5967.02],[2008,6399.81],[2009,6546.27]],"population":[[1820,437000],[1850,500000],[1870,603000],[1890,726000],[1900,800000],[1910,874000],[1913,898000],[1920,932000],[1921,937000],[1922,942000],[1923,947000],[1924,952000],[1925,956000],[1926,962000],[1927,967000],[1928,972000],[1929,977000],[1930,982000],[1931,988000],[1932,993000],[1933,998000],[1934,1003000],[1935,1009000],[1936,1014000],[1937,1030000],[1938,1040000],[1939,1070000],[1940,1088000],[1941,1100000],[1942,1117000],[1943,1119000],[1944,1122000],[1945,1138000],[1946,1154000],[1947,1175000],[1948,1192000],[1949,1209000],[1950,1227156],[1951,1254119],[1952,1282697],[1953,1314608],[1954,1352982],[1955,1392164],[1956,1434476],[1957,1476505],[1958,1521417],[1959,1571329],[1960,1623114],[1961,1676635],[1962,1728137],[1963,1779715],[1964,1832284],[1965,1883652],[1966,1932963],[1967,1984060],[1968,2038698],[1969,2100263],[1970,2156612],[1971,2208719],[1972,2263554],[1973,2295691],[1974,2347924],[1975,2401108],[1976,2454824],[1977,2509048],[1978,2563376],[1979,2617679],[1980,2671412],[1981,2724272],[1982,2780097],[1983,2837315],[1984,2895998],[1985,2956697],[1986,3015438],[1987,3075321],[1988,3136843],[1989,3195800],[1990,3250778],[1991,3294227],[1992,3326498],[1993,3351656],[1994,3378424],[1995,3400516],[1996,3414733],[1997,3428038],[1998,3441234],[1999,3457493],[2000,3473835],[2001,3490304],[2002,3508512],[2003,3526642],[2004,3544808],[2005,3563112],[2006,3581655],[2007,3600523],[2008,3619778]],"lifeExpectancy":[[1800,35.4],[1929,35.4],[1950,54.16],[1951,54.37],[1952,54.85],[1953,55.44],[1954,56.15],[1955,56.98],[1956,57.91],[1957,58.94],[1958,60.04],[1959,61.16],[1960,62.25],[1961,63.27],[1962,64.16],[1963,64.89],[1964,65.44],[1965,65.83],[1966,66.1],[1967,66.31],[1968,66.51],[1969,66.73],[1970,66.98],[1971,67.25],[1972,67.53],[1973,67.8],[1974,68.06],[1975,68.31],[1976,68.56],[1977,68.82],[1978,69.08],[1979,69.36],[1980,69.66],[1981,69.98],[1982,70.32],[1983,70.67],[1984,71.02],[1985,71.34],[1986,71.6],[1987,71.78],[1988,71.88],[1989,71.91],[1990,71.9],[1991,71.86],[1992,71.84],[1993,71.87],[1994,71.97],[1995,72.17],[1996,72.47],[1997,72.87],[1998,73.33],[1999,73.84],[2000,74.36],[2001,74.86],[2002,75.31],[2003,75.69],[2004,75.99],[2005,76.21],[2006,76.37],[2007,76.5],[2008,76.62],[2009,76.74]]},{"name":"Armenia","region":"Europe & Central Asia","income":[[1800,502.64],[1820,513.22],[1913,1144.01],[1950,2241.72],[1973,2849.09],[1990,2809.07],[1991,2436.61],[1992,1442.94],[1993,1375.72],[1994,1498.94],[1995,1632.31],[1996,1731.63],[1997,1791.35],[1998,1928.33],[1999,1992.96],[2000,2114.06],[2001,2328.46],[2002,2692.3],[2003,3078.9],[2004,3413.91],[2005,3903],[2006,4413.18],[2007,5011.56],[2008,5338.64],[2009,4523.44]],"population":[[1800,413326],[1820,413326],[1950,1355269],[1951,1379204],[1952,1416722],[1953,1455777],[1954,1505668],[1955,1565329],[1956,1617460],[1957,1672403],[1958,1733125],[1959,1796363],[1960,1868852],[1961,1943799],[1962,2006853],[1963,2065618],[1964,2134940],[1965,2205833],[1966,2273695],[1967,2338063],[1968,2402358],[1969,2463153],[1970,2519745],[1971,2581671],[1972,2647035],[1973,2712997],[1974,2776539],[1975,2834136],[1976,2892704],[1977,2954907],[1978,3014042],[1979,3066726],[1980,3115289],[1981,3166098],[1982,3218691],[1983,3270153],[1984,3322394],[1985,3373532],[1986,3421978],[1987,3468857],[1988,3515614],[1989,3325992],[1990,3376783],[1991,3437479],[1992,3378331],[1993,3231570],[1994,3126094],[1995,3068751],[1996,3063395],[1997,3059000],[1998,3049147],[1999,3047620],[2000,3042556],[2001,3027590],[2002,3013818],[2003,3001712],[2004,2991360],[2005,2982904],[2006,2976372],[2007,2971650],[2008,2968586]],"lifeExpectancy":[[1950,61.94],[1951,62.15],[1952,62.58],[1953,63.01],[1954,63.44],[1955,63.86],[1956,64.28],[1957,64.71],[1958,65.13],[1959,65.56],[1960,65.99],[1961,66.42],[1962,66.86],[1963,67.3],[1964,67.74],[1965,68.18],[1966,68.61],[1967,69.04],[1968,69.45],[1969,69.83],[1970,70.17],[1971,70.44],[1972,70.63],[1973,70.74],[1974,70.79],[1975,70.79],[1976,70.79],[1977,70.8],[1978,70.84],[1979,70.89],[1980,70.93],[1981,70.91],[1982,70.78],[1983,70.52],[1984,70.16],[1985,69.71],[1986,69.22],[1987,68.75],[1988,68.35],[1989,68.06],[1990,67.89],[1991,67.86],[1992,67.96],[1993,68.14],[1994,68.41],[1995,68.76],[1996,69.18],[1997,69.65],[1998,70.16],[1999,70.68],[2000,71.19],[2001,71.66],[2002,72.1],[2003,72.49],[2004,72.83],[2005,73.13],[2006,73.38],[2007,73.61],[2008,73.82],[2009,74.03]]},{"name":"Austria","region":"Europe & Central Asia","income":[[1800,1434.51],[1820,1550.01],[1821,1574.98],[1822,1600.35],[1823,1626.12],[1824,1652.32],[1825,1678.93],[1826,1705.97],[1827,1733.45],[1828,1761.37],[1829,1789.74],[1830,1818.56],[1831,1837.1],[1832,1855.82],[1833,1874.73],[1834,1893.83],[1835,1913.13],[1836,1932.63],[1837,1952.33],[1838,1972.22],[1839,1992.32],[1840,2012.62],[1841,2034.4],[1842,2056.41],[1843,2078.65],[1844,2101.14],[1845,2123.87],[1846,2146.85],[1847,2170.08],[1848,2193.56],[1849,2217.29],[1850,2241.28],[1851,2262.88],[1852,2284.7],[1853,2306.73],[1854,2328.97],[1855,2351.42],[1856,2374.09],[1857,2396.98],[1858,2420.09],[1859,2443.42],[1860,2466.98],[1861,2483.91],[1862,2500.97],[1863,2518.14],[1864,2535.43],[1865,2552.84],[1866,2570.37],[1867,2588.02],[1868,2605.79],[1869,2623.68],[1870,2641.7],[1871,2813.04],[1872,2815.2],[1873,2730.96],[1874,2834.04],[1875,2829.2],[1876,2873.94],[1877,2952.65],[1878,3031.03],[1879,2990.81],[1880,3013.1],[1881,3116],[1882,3115.19],[1883,3222.36],[1884,3287.4],[1885,3245.89],[1886,3329.95],[1887,3538.38],[1888,3508.79],[1889,3454.42],[1890,3619.16],[1891,3720.23],[1892,3771.43],[1893,3764.68],[1894,3951.4],[1895,4024.65],[1896,4053.25],[1897,4105.88],[1898,4303.41],[1899,4359.56],[1900,4362.27],[1901,4344.52],[1902,4477.8],[1903,4480.79],[1904,4513.37],[1905,4728.12],[1906,4870.98],[1907,5130.41],[1908,5113.09],[1909,5056.77],[1910,5090.03],[1911,5205.8],[1912,5422.19],[1913,5360.93],[1914,4448.44],[1915,4104.04],[1916,4064.74],[1917,4000.87],[1918,3952.16],[1919,3494.55],[1920,3731.71],[1921,4099.62],[1922,4451.32],[1923,4396.76],[1924,4892.64],[1925,5208.47],[1926,5279.81],[1927,5422.72],[1928,5657.6],[1929,5721.43],[1930,5546.91],[1931,5085.87],[1932,4547.49],[1933,4382.76],[1934,4411.25],[1935,4496.45],[1936,4632.65],[1937,4881.74],[1938,5506.35],[1939,6336.15],[1940,6124.69],[1941,6524.02],[1942,6161.23],[1943,6287.8],[1944,5888.21],[1945,2667.85],[1946,3026.57],[1947,3351.41],[1948,4276.52],[1949,5094.41],[1950,5733.1],[1951,6124.93],[1952,6137.08],[1953,6399.79],[1954,7045.97],[1955,7817.25],[1956,8348.45],[1957,8842.6],[1958,9137.3],[1959,9360.85],[1960,10083.83],[1961,10560.97],[1962,10750.72],[1963,11116.7],[1964,11705.63],[1965,11964.28],[1966,12549.33],[1967,12834.6],[1968,13335.56],[1969,14125.32],[1970,15078.77],[1971,15779.07],[1972,16661.63],[1973,17379.33],[1974,18033.98],[1975,18016.37],[1976,18874.3],[1977,19749.42],[1978,19693.62],[1979,20803.4],[1980,21284.71],[1981,21220.89],[1982,21597.08],[1983,22266.66],[1984,22336.95],[1985,22821.2],[1986,23329.16],[1987,23687.83],[1988,24371.18],[1989,25307.87],[1990,26135],[1991,26744.4],[1992,27042.02],[1993,26882.04],[1994,27463.48],[1995,27918.82],[1996,28602.35],[1997,29095.92],[1998,30107.98],[1999,31039.62],[2000,32008.5],[2001,32196.42],[2002,32417.61],[2003,32741.19],[2004,33455.69],[2005,34108],[2006,35161.23],[2007,36348.95],[2008,37032.76],[2009,35636.42]],"population":[[1820,3369000],[1821,3386000],[1822,3402000],[1823,3419000],[1824,3436000],[1825,3452000],[1826,3469000],[1827,3486000],[1828,3504000],[1829,3521000],[1830,3538000],[1831,3555000],[1832,3573000],[1833,3590000],[1834,3608000],[1835,3626000],[1836,3614000],[1837,3662000],[1838,3680000],[1839,3698000],[1840,3716000],[1841,3739000],[1842,3762000],[1843,3785000],[1844,3808000],[1845,3831000],[1846,3855000],[1847,3878000],[1848,3902000],[1849,3926000],[1850,3950000],[1851,3978000],[1852,4006000],[1853,4035000],[1854,4063000],[1855,4092000],[1856,4120000],[1857,4150000],[1858,4178000],[1859,4206000],[1860,4235000],[1861,4263000],[1862,4292000],[1863,4321000],[1864,4350000],[1865,4380000],[1866,4409000],[1867,4439000],[1868,4469000],[1869,4499000],[1870,4520000],[1871,4562000],[1872,4604000],[1873,4646000],[1874,4688000],[1875,4730000],[1876,4772000],[1877,4815000],[1878,4857000],[1879,4899000],[1880,4941000],[1881,4985000],[1882,5030000],[1883,5075000],[1884,5121000],[1885,5166000],[1886,5212000],[1887,5257000],[1888,5303000],[1889,5348000],[1890,5394000],[1891,5446000],[1892,5504000],[1893,5563000],[1894,5622000],[1895,5680000],[1896,5739000],[1897,5798000],[1898,5856000],[1899,5915000],[1900,5973000],[1901,6035000],[1902,6099000],[1903,6164000],[1904,6228000],[1905,6292000],[1906,6357000],[1907,6421000],[1908,6485000],[1909,6550000],[1910,6614000],[1911,6669000],[1912,6724000],[1913,6767000],[1914,6806000],[1915,6843000],[1916,6825000],[1917,6785000],[1918,6727000],[1919,6420000],[1920,6455000],[1921,6504000],[1922,6528000],[1923,6543000],[1924,6562000],[1925,6582000],[1926,6603000],[1927,6623000],[1928,6643000],[1929,6664000],[1930,6684000],[1931,6705000],[1932,6725000],[1933,6746000],[1934,6760000],[1935,6761000],[1936,6758000],[1937,6755000],[1938,6753000],[1939,6653000],[1940,6705000],[1941,6745000],[1942,6783000],[1943,6808000],[1944,6834000],[1945,6799000],[1946,7000000],[1947,6971000],[1948,6956000],[1949,6943000],[1950,6935100],[1951,6935451],[1952,6927772],[1953,6932483],[1954,6940209],[1955,6946885],[1956,6952359],[1957,6965860],[1958,6987358],[1959,7014331],[1960,7047437],[1961,7086299],[1962,7129864],[1963,7175811],[1964,7223801],[1965,7270889],[1966,7322066],[1967,7376998],[1968,7415403],[1969,7441055],[1970,7467086],[1971,7500482],[1972,7544201],[1973,7586115],[1974,7599038],[1975,7578903],[1976,7565525],[1977,7568430],[1978,7562305],[1979,7549425],[1980,7549433],[1981,7564629],[1982,7574613],[1983,7552896],[1984,7554132],[1985,7559776],[1986,7568242],[1987,7578903],[1988,7599791],[1989,7627861],[1990,7722953],[1991,7818423],[1992,7914969],[1993,7988599],[1994,8027540],[1995,8047433],[1996,8060852],[1997,8069876],[1998,8078622],[1999,8094156],[2000,8113413],[2001,8131690],[2002,8148312],[2003,8162656],[2004,8174762],[2005,8184691],[2006,8192880],[2007,8199783],[2008,8205533]],"lifeExpectancy":[[1800,34.4],[1870,34.4],[1881,35],[1891,37.3],[1901,42],[1903,40.1],[1911,45.1],[1931,56.45],[1947,61.31],[1948,63.24],[1949,63.43],[1950,64.88],[1951,65.26],[1952,66.8],[1953,67.29],[1954,67.32],[1955,67.6],[1956,67.72],[1957,67.48],[1958,68.49],[1959,68.42],[1960,68.78],[1961,69.75],[1962,69.54],[1963,69.67],[1964,70.16],[1965,69.95],[1966,70.26],[1967,70.14],[1968,70.29],[1969,70.06],[1970,70.11],[1971,70.31],[1972,70.63],[1973,71.21],[1974,71.2],[1975,71.33],[1976,71.82],[1977,72.17],[1978,72.25],[1979,72.56],[1980,72.7],[1981,73.02],[1982,73.18],[1983,73.25],[1984,73.79],[1985,74.01],[1986,74.49],[1987,74.93],[1988,75.41],[1989,75.5],[1990,75.77],[1991,75.83],[1992,76.04],[1993,76.27],[1994,76.59],[1995,76.83],[1996,77.1],[1997,77.5],[1998,77.87],[1999,78.05],[2000,78.33],[2001,78.83],[2002,78.96],[2003,78.96],[2004,79.47],[2005,79.64],[2006,80.1],[2007,80.3],[2008,80.51],[2009,80.23]]},{"name":"Azerbaijan","region":"Europe & Central Asia","income":[[1800,639.95],[1820,653.43],[1913,1456.54],[1950,2854.15],[1973,4425.48],[1990,4629.49],[1991,4528.84],[1992,3455.54],[1993,2627.69],[1994,2088.93],[1995,1828.59],[1996,1843.19],[1997,1943.29],[1998,2132.38],[1999,2285.7],[2000,2533.17],[2001,2775.74],[2002,3059.18],[2003,3387.79],[2004,3760.11],[2005,4648],[2006,6183.5],[2007,7646.12],[2008,8381.63],[2009,9088.42]],"population":[[1800,879960],[1820,879960],[1950,2885332],[1951,2983082],[1952,3090973],[1953,3158974],[1954,3222581],[1955,3313718],[1956,3416717],[1957,3526313],[1958,3630590],[1959,3740596],[1960,3881546],[1961,4033503],[1962,4157301],[1963,4283470],[1964,4430183],[1965,4566962],[1966,4701730],[1967,4827284],[1968,4945231],[1969,5059334],[1970,5168973],[1971,5283659],[1972,5393681],[1973,5497774],[1974,5599407],[1975,5696117],[1976,5789818],[1977,5886578],[1978,5986427],[1979,6082087],[1980,6173361],[1981,6270531],[1982,6369133],[1983,6470276],[1984,6578901],[1985,6681687],[1986,6776473],[1987,6873978],[1988,6975798],[1989,7101735],[1990,7199838],[1991,7308339],[1992,7413618],[1993,7497205],[1994,7572945],[1995,7630291],[1996,7668253],[1997,7695123],[1998,7714005],[1999,7729131],[2000,7748163],[2001,7771092],[2002,7798497],[2003,7830764],[2004,7868385],[2005,7911974],[2006,7961619],[2007,8017309],[2008,8079043]],"lifeExpectancy":[[1950,57.15],[1951,57.35],[1952,57.76],[1953,58.17],[1954,58.57],[1955,58.98],[1956,59.38],[1957,59.79],[1958,60.19],[1959,60.6],[1960,61.01],[1961,61.42],[1962,61.84],[1963,62.25],[1964,62.67],[1965,63.08],[1966,63.5],[1967,63.91],[1968,64.3],[1969,64.67],[1970,65],[1971,65.25],[1972,65.42],[1973,65.5],[1974,65.51],[1975,65.45],[1976,65.34],[1977,65.21],[1978,65.08],[1979,64.97],[1980,64.92],[1981,64.93],[1982,65.02],[1983,65.17],[1984,65.36],[1985,65.55],[1986,65.72],[1987,65.82],[1988,65.84],[1989,65.77],[1990,65.65],[1991,65.49],[1992,65.35],[1993,65.27],[1994,65.26],[1995,65.36],[1996,65.56],[1997,65.86],[1998,66.23],[1999,66.67],[2000,67.14],[2001,67.63],[2002,68.11],[2003,68.58],[2004,69.01],[2005,69.39],[2006,69.73],[2007,70.04],[2008,70.33],[2009,70.6]]},{"name":"Belarus","region":"Europe & Central Asia","income":[[1800,717.05],[1820,732.15],[1913,1632.01],[1950,3197.98],[1973,4958.61],[1990,6807.78],[1991,6693.19],[1992,6014.41],[1993,5528.26],[1994,4868.62],[1995,4355.51],[1996,4475.41],[1997,4987.79],[1998,5411.86],[1999,5602.35],[2000,5936.24],[2001,6225.16],[2002,6545.79],[2003,6999.86],[2004,7806.72],[2005,8541],[2006,9431.37],[2007,10271.59],[2008,11322.27],[2009,11574.43]],"population":[[1800,2355081],[1820,2355081],[1950,7722155],[1951,7742159],[1952,7698249],[1953,7666821],[1954,7698751],[1955,7780565],[1956,7856790],[1957,7912626],[1958,7982625],[1959,8075290],[1960,8167918],[1961,8262998],[1962,8365073],[1963,8438881],[1964,8501607],[1965,8590786],[1966,8694009],[1967,8786887],[1968,8864776],[1969,8946091],[1970,9027198],[1971,9101396],[1972,9169156],[1973,9236465],[1974,9304311],[1975,9360184],[1976,9405544],[1977,9457385],[1978,9520280],[1979,9581518],[1980,9643706],[1981,9712761],[1982,9778781],[1983,9845174],[1984,9914262],[1985,9981744],[1986,10044184],[1987,10097446],[1988,10149612],[1989,10184084],[1990,10215208],[1991,10244639],[1992,10306362],[1993,10360516],[1994,10387841],[1995,10403989],[1996,10408773],[1997,10404210],[1998,10394407],[1999,10382370],[2000,10366719],[2001,10350194],[2002,10335382],[2003,10322151],[2004,10310520],[2005,10300483],[2006,10293011],[2007,10289007],[2008,10287955]],"lifeExpectancy":[[1800,36.2],[1900,36.2],[1950,65.02],[1951,65.25],[1952,65.69],[1953,66.13],[1954,66.55],[1955,66.96],[1956,67.36],[1957,67.74],[1958,68.11],[1959,69.06],[1960,71.85],[1961,72.57],[1962,71.29],[1963,71.95],[1964,73.48],[1965,73.02],[1966,73.38],[1967,73.13],[1968,73.24],[1969,72.84],[1970,72.32],[1971,72.96],[1972,72.67],[1973,72.71],[1974,73.01],[1975,72.08],[1976,71.92],[1977,71.86],[1978,71.72],[1979,71.32],[1980,71.08],[1981,71.36],[1982,71.49],[1983,71.28],[1984,70.65],[1985,70.86],[1986,72.25],[1987,72.15],[1988,71.89],[1989,71.68],[1990,71.14],[1991,70.58],[1992,70.16],[1993,69.05],[1994,68.81],[1995,68.42],[1996,68.56],[1997,68.37],[1998,68.37],[1999,67.97],[2000,68.99],[2001,68.61],[2002,68.17],[2003,68.71],[2004,69.09],[2005,68.84],[2006,69.51],[2007,70.41],[2008,69.19],[2009,69.4]]},{"name":"Belgium","region":"Europe & Central Asia","income":[[1800,1554],[1820,1566.22],[1821,1570.35],[1822,1574.5],[1823,1578.66],[1824,1582.83],[1825,1587.02],[1826,1591.21],[1827,1595.41],[1828,1599.63],[1829,1603.86],[1830,1608.09],[1831,1630.75],[1832,1653.73],[1833,1677.03],[1834,1700.66],[1835,1724.62],[1836,1748.92],[1837,1773.57],[1838,1798.56],[1839,1823.9],[1840,1849.6],[1841,1875.66],[1842,1902.09],[1843,1928.89],[1844,1956.07],[1845,1983.63],[1846,2011.58],[1847,2092.67],[1848,2083.09],[1849,2127.15],[1850,2194.69],[1851,2241.25],[1852,2286.73],[1853,2332.14],[1854,2461.44],[1855,2462.74],[1856,2581.08],[1857,2631],[1858,2631.23],[1859,2614.36],[1860,2728.3],[1861,2749.4],[1862,2801.79],[1863,2861.59],[1864,2936.27],[1865,2914.6],[1866,2980.08],[1867,2973.81],[1868,3059.92],[1869,3171.27],[1870,3206.23],[1871,3195.35],[1872,3364.87],[1873,3360.56],[1874,3444.3],[1875,3409.48],[1876,3426.09],[1877,3437.96],[1878,3507.43],[1879,3510.63],[1880,3654.84],[1881,3660.7],[1882,3740.81],[1883,3751.04],[1884,3740.87],[1885,3742.93],[1886,3761.51],[1887,3877.6],[1888,3874.23],[1889,4032.17],[1890,4091.5],[1891,4052.2],[1892,4108.36],[1893,4124.83],[1894,4140.29],[1895,4192.43],[1896,4240.59],[1897,4282.65],[1898,4316.81],[1899,4366.64],[1900,4456.85],[1901,4442.72],[1902,4466.99],[1903,4506.92],[1904,4565.58],[1905,4639.15],[1906,4682.47],[1907,4700.11],[1908,4700.77],[1909,4746.97],[1910,4858.37],[1911,4959.53],[1912,5029.69],[1913,5045.58],[1914,3696.15],[1915,3027.96],[1916,3388.9],[1917,2821.92],[1918,2636.44],[1919,3249.35],[1920,4906.66],[1921,5166.58],[1922,5513.88],[1923,5864.8],[1924,6123.55],[1925,6131.49],[1926,6209.34],[1927,6183.18],[1928,6598.97],[1929,6763.13],[1930,6865.1],[1931,6615.19],[1932,6291.57],[1933,6216.09],[1934,6063.88],[1935,6335.16],[1936,6529.96],[1937,6834.46],[1938,6697.85],[1939,6423.53],[1940,5272.8],[1941,4501.67],[1942,4617.74],[1943,3740.56],[1944,3794.18],[1945,4048.7],[1946,6372.25],[1947,7175.79],[1948,7533.41],[1949,7749.11],[1950,7990.47],[1951,8393.42],[1952,8343.11],[1953,8645.37],[1954,8950.31],[1955,9244.73],[1956,9529.4],[1957,9714.96],[1958,9477.27],[1959,9675.47],[1960,10076.6],[1961,10512.51],[1962,10991.21],[1963,11396.13],[1964,12089.41],[1965,12406.29],[1966,12720.18],[1967,13149.04],[1968,13647.2],[1969,14520.74],[1970,15379.71],[1971,15899.66],[1972,16672.14],[1973,17639.58],[1974,18325.17],[1975,18032.12],[1976,19019.94],[1977,19117.97],[1978,19645.54],[1979,20090.12],[1980,20969.62],[1981,20696.13],[1982,20979.85],[1983,20979.01],[1984,21498.94],[1985,21708.75],[1986,22024.75],[1987,22525.56],[1988,23555.82],[1989,24269.23],[1990,24925.91],[1991,25293.57],[1992,25575.57],[1993,25229.6],[1994,25947.3],[1995,26480.95],[1996,26725.5],[1997,27561.2],[1998,28030.61],[1999,28937.15],[2000,29940.2],[2001,30092.08],[2002,30485.88],[2003,30736.53],[2004,31600.02],[2005,32077],[2006,32738.41],[2007,33448],[2008,33490.47],[2009,32256.64]],"population":[[1820,3434000],[1821,3464000],[1822,3495000],[1823,3526000],[1824,3557000],[1825,3589000],[1826,3620000],[1827,3652000],[1828,3685000],[1829,3717000],[1830,3750000],[1831,3782000],[1832,3814000],[1833,3846000],[1834,3879000],[1835,3912000],[1836,3945000],[1837,3978000],[1838,4012000],[1839,4046000],[1840,4080000],[1841,4115000],[1842,4151000],[1843,4187000],[1844,4223000],[1845,4259000],[1846,4296000],[1847,4333000],[1848,4371000],[1849,4408000],[1850,4449000],[1851,4477000],[1852,4506000],[1853,4534000],[1854,4563000],[1855,4592000],[1856,4621000],[1857,4651000],[1858,4680000],[1859,4710000],[1860,4740000],[1861,4774000],[1862,4809000],[1863,4844000],[1864,4879000],[1865,4915000],[1866,4950000],[1867,4986000],[1868,5023000],[1869,5029000],[1870,5096000],[1871,5137000],[1872,5178000],[1873,5219000],[1874,5261000],[1875,5303000],[1876,5345000],[1877,5394000],[1878,5442000],[1879,5492000],[1880,5541000],[1881,5606000],[1882,5673000],[1883,5740000],[1884,5807000],[1885,5876000],[1886,5919000],[1887,5962000],[1888,6007000],[1889,6051000],[1890,6096000],[1891,6164000],[1892,6231000],[1893,6300000],[1894,6370000],[1895,6439000],[1896,6494000],[1897,6548000],[1898,6604000],[1899,6662000],[1900,6719000],[1901,6801000],[1902,6903000],[1903,6997000],[1904,7086000],[1905,7175000],[1906,7258000],[1907,7338000],[1908,7411000],[1909,7478000],[1910,7498000],[1911,7517000],[1912,7590000],[1913,7666000],[1914,7723000],[1915,7759000],[1916,7762000],[1917,7729000],[1918,7660000],[1919,7628000],[1920,7552000],[1921,7504000],[1922,7571000],[1923,7635000],[1924,7707000],[1925,7779000],[1926,7844000],[1927,7904000],[1928,7968000],[1929,8032000],[1930,8076000],[1931,8126000],[1932,8186000],[1933,8231000],[1934,8262000],[1935,8288000],[1936,8315000],[1937,8346000],[1938,8374000],[1939,8392000],[1940,8346000],[1941,8276000],[1942,8247000],[1943,8242000],[1944,8291000],[1945,8339000],[1946,8367000],[1947,8450000],[1948,8557000],[1949,8614000],[1950,8639369],[1951,8678386],[1952,8730405],[1953,8777873],[1954,8819380],[1955,8868475],[1956,8923845],[1957,8989111],[1958,9052707],[1959,9103729],[1960,9118700],[1961,9165800],[1962,9218400],[1963,9283100],[1964,9367000],[1965,9448100],[1966,9507800],[1967,9556500],[1968,9589800],[1969,9612700],[1970,9637800],[1971,9672500],[1972,9709100],[1973,9738400],[1974,9767800],[1975,9794800],[1976,9811000],[1977,9821800],[1978,9829700],[1979,9837200],[1980,9846800],[1981,9852400],[1982,9856303],[1983,9855520],[1984,9855300],[1985,9858200],[1986,9861800],[1987,9870200],[1988,9884000],[1989,9937697],[1990,9969310],[1991,10004487],[1992,10045622],[1993,10085426],[1994,10122914],[1995,10155459],[1996,10178934],[1997,10199787],[1998,10217030],[1999,10235655],[2000,10263618],[2001,10291679],[2002,10311970],[2003,10330824],[2004,10348276],[2005,10364388],[2006,10379067],[2007,10392226],[2008,10403951]],"lifeExpectancy":[[1800,40],[1841,40.33],[1842,38.66],[1843,40.36],[1844,41.9],[1845,41.03],[1846,37.83],[1847,35.11],[1848,38.04],[1849,34.5],[1850,42.28],[1851,41.88],[1852,41.77],[1853,41.33],[1854,39.78],[1855,37.49],[1856,40.92],[1857,40.49],[1858,40.18],[1859,38.98],[1860,45.12],[1861,41.27],[1862,43.12],[1863,41.33],[1864,39.81],[1865,37.74],[1866,32.47],[1867,43.08],[1868,42.56],[1869,42.58],[1870,40.92],[1871,34.35],[1872,40.04],[1873,43.48],[1874,44.67],[1875,42.17],[1876,43.68],[1877,44.48],[1878,44.24],[1879,43.84],[1880,42.48],[1881,44.42],[1882,45.54],[1883,44.89],[1884,44.24],[1885,45.48],[1886,43.36],[1887,46.06],[1888,44.92],[1889,45.07],[1890,44.14],[1891,44.06],[1892,43.16],[1893,44.44],[1894,46.65],[1895,45.46],[1896,48.06],[1897,48.82],[1898,48.12],[1899,46.49],[1900,46.59],[1901,49.44],[1902,49.18],[1903,49.26],[1904,49.32],[1905,50.01],[1906,49.74],[1907,51.11],[1908,49.7],[1909,50.7],[1910,51.37],[1911,49.25],[1912,52.26],[1913,52.51],[1919,49.86],[1920,53.66],[1921,54.75],[1922,55.15],[1923,56.77],[1924,57.51],[1925,57.16],[1926,56.97],[1927,57.2],[1928,57.53],[1929,55.07],[1930,57.17],[1931,58.51],[1932,58.59],[1933,58.76],[1934,60.42],[1935,60.01],[1936,60.01],[1937,60],[1938,60.15],[1939,60.01],[1940,55.96],[1941,58.95],[1942,59.2],[1943,60.39],[1944,56.94],[1945,58.39],[1946,61.92],[1947,63.46],[1948,64.98],[1949,65.48],[1950,66.35],[1951,66.8],[1952,68],[1953,68.37],[1954,68.63],[1955,68.58],[1956,68.87],[1957,69.24],[1958,69.93],[1959,70.33],[1960,69.65],[1961,70.52],[1962,70.25],[1963,70.06],[1964,70.73],[1965,70.58],[1966,70.65],[1967,70.94],[1968,70.63],[1969,70.71],[1970,70.97],[1971,71.1],[1972,71.44],[1973,71.65],[1974,72.01],[1975,72],[1976,72.15],[1977,72.8],[1978,72.75],[1979,73.24],[1980,73.29],[1981,73.7],[1982,73.93],[1983,73.93],[1984,74.43],[1985,74.54],[1986,74.74],[1987,75.35],[1988,75.66],[1989,75.73],[1990,76.14],[1991,76.3],[1992,76.46],[1993,76.47],[1994,76.82],[1995,76.97],[1996,77.31],[1997,77.53],[1998,77.62],[1999,77.8],[2000,77.91],[2001,78.22],[2002,78.32],[2003,78.47],[2004,79.12],[2005,79.21],[2006,79.55],[2007,79.49],[2008,79.78],[2009,80.05]]},{"name":"Bosnia and Herzegovina","region":"Europe & Central Asia","income":[[1800,490.82],[1820,501.12],[1870,402.62],[1890,566.65],[1900,606.28],[1910,710.41],[1913,710.43],[1920,693.15],[1921,699.98],[1922,710.29],[1923,736.69],[1924,778.43],[1925,805.15],[1926,849.17],[1927,823.56],[1928,883.37],[1929,916.93],[1930,886.2],[1931,847.43],[1932,758.01],[1933,770.86],[1934,788.59],[1935,766.06],[1936,853.69],[1937,855.96],[1938,911.73],[1939,948.93],[1947,884.19],[1948,1040.8],[1949,1128.12],[1950,1042.5],[1951,1069.5],[1952,973.53],[1953,1104.17],[1954,1150.69],[1955,1208.08],[1956,1170.76],[1957,1353.99],[1958,1398.03],[1959,1555.19],[1960,1638.06],[1961,1694.86],[1962,1709.68],[1963,1869.42],[1964,2029.36],[1965,2063.9],[1966,2154.29],[1967,2172.35],[1968,2199.57],[1969,2426.35],[1970,2523.61],[1971,2790],[1972,2860.17],[1973,2930.94],[1974,3279.66],[1975,3250.83],[1976,3319.88],[1977,3528.48],[1978,3690.94],[1979,3910.97],[1980,4075.45],[1981,4123.1],[1982,4126.61],[1983,4138.77],[1984,4220.39],[1985,4232.24],[1986,4383.55],[1987,4314.11],[1988,4234.67],[1989,4162.74],[1990,3844.61],[1991,3378.38],[1992,2546.78],[1993,1895.66],[1994,2034.37],[1995,2200.62],[1996,3487.83],[1997,4766.36],[1998,5251.02],[1999,5544.95],[2000,5733.15],[2001,5880.63],[2002,6018.98],[2003,6097.74],[2004,6317.27],[2005,6506],[2006,6856.27],[2007,7247.13],[2008,7619.54],[2009,7341.98]],"population":[[1800,851806],[1820,851806],[1950,2662000],[1951,2721000],[1952,2791000],[1953,2863000],[1954,2916000],[1955,2974000],[1956,3025000],[1957,3076000],[1958,3126000],[1959,3185000],[1960,3240000],[1961,3299000],[1962,3349000],[1963,3399000],[1964,3445000],[1965,3493000],[1966,3541000],[1967,3585000],[1968,3627000],[1969,3669000],[1970,3703000],[1971,3761000],[1972,3819000],[1973,3872000],[1974,3925000],[1975,3980000],[1976,4033000],[1977,4086000],[1978,4135000],[1979,4181000],[1980,4092000],[1981,4135743],[1982,4172693],[1983,4207275],[1984,4241401],[1985,4275355],[1986,4307685],[1987,4338977],[1988,4369894],[1989,4398322],[1990,4423646],[1991,4449406],[1992,4256013],[1993,3955016],[1994,3784983],[1995,3708960],[1996,3608495],[1997,3607000],[1998,3817575],[1999,3958653],[2000,4035457],[2001,4111293],[2002,4165416],[2003,4243181],[2004,4345591],[2005,4430494],[2006,4498976],[2007,4552198],[2008,4590310]],"lifeExpectancy":[[1800,35.1],[1920,35.1],[1950,51.68],[1951,52.24],[1952,53.34],[1953,54.38],[1954,55.37],[1955,56.32],[1956,57.21],[1957,58.06],[1958,58.86],[1959,59.62],[1960,60.33],[1961,61.01],[1962,61.65],[1963,62.26],[1964,62.85],[1965,63.43],[1966,63.99],[1967,64.54],[1968,65.09],[1969,65.63],[1970,66.16],[1971,66.7],[1972,67.24],[1973,67.78],[1974,68.3],[1975,68.8],[1976,69.25],[1977,69.64],[1978,69.96],[1979,70.22],[1980,70.45],[1981,70.69],[1982,70.94],[1983,71.21],[1984,71.44],[1985,71.5],[1986,71.22],[1987,70.53],[1988,69.45],[1989,68.1],[1990,66.74],[1991,65.69],[1992,65.22],[1993,65.44],[1994,66.36],[1995,67.85],[1996,69.63],[1997,71.38],[1998,72.83],[1999,73.88],[2000,74.49],[2001,74.72],[2002,74.77],[2003,74.76],[2004,74.77],[2005,74.82],[2006,74.93],[2007,75.06],[2008,75.2],[2009,75.34]]},{"name":"Bulgaria","region":"Europe & Central Asia","income":[[1800,836.31],[1820,853.86],[1870,1084.36],[1890,1460.07],[1900,1578.95],[1910,1879.73],[1913,1980.34],[1924,1173.28],[1925,1190.81],[1926,1509.7],[1927,1619.8],[1928,1573.86],[1929,1523.89],[1930,1658.24],[1931,1876.69],[1932,1864.41],[1933,1871.38],[1934,1689.5],[1935,1595.52],[1936,1927.59],[1937,2022.45],[1938,2059.3],[1939,2068.96],[1940,1998.58],[1941,2022.66],[1942,1910.08],[1943,1953.88],[1944,1790.93],[1945,1384.92],[1950,2131.56],[1951,2567.42],[1952,2444.29],[1953,2691.94],[1954,2613.98],[1955,2772.89],[1956,2747.38],[1957,3008.67],[1958,3238.11],[1959,3464.57],[1960,3759.17],[1961,3966.09],[1962,4254.34],[1963,4412.81],[1964,4721.86],[1965,4970.49],[1966,5325.95],[1967,5577],[1968,5639.35],[1969,5868.78],[1970,6162.47],[1971,6328.5],[1972,6597.49],[1973,6822.39],[1974,6989.57],[1975,7527.86],[1976,7722.87],[1977,7612.24],[1978,7771.12],[1979,8062.6],[1980,7802.85],[1981,7987.02],[1982,8224.19],[1983,8052.37],[1984,8301.98],[1985,8037.95],[1986,8236.46],[1987,8239.85],[1988,8179.01],[1989,8025.27],[1990,7225.88],[1991,6710.7],[1992,6302.62],[1993,6367.39],[1994,6550.71],[1995,6820.31],[1996,6250.97],[1997,5970.39],[1998,6282.64],[1999,6491.1],[2000,6907.01],[2001,7264.61],[2002,7696.78],[2003,8105.39],[2004,8721.23],[2005,9353],[2006,9995.42],[2007,10923.45],[2008,11357.63],[2009,10840.26]],"population":[[1820,2187000],[1850,2500000],[1870,2586000],[1890,3445000],[1900,4000000],[1910,4520000],[1913,4720000],[1920,5072000],[1921,5148000],[1922,5255000],[1923,5365000],[1924,5476000],[1925,5590000],[1926,5705000],[1927,5798000],[1928,5873000],[1929,5950000],[1930,6027000],[1931,6106000],[1932,6186000],[1933,6267000],[1934,6349000],[1935,6415000],[1936,6469000],[1937,6514000],[1938,6564000],[1939,6614000],[1940,6666000],[1941,6715000],[1942,6771000],[1943,6828000],[1944,6885000],[1945,6942000],[1946,7000000],[1947,7064000],[1948,7130000],[1949,7195000],[1950,7250500],[1951,7258200],[1952,7274900],[1953,7346100],[1954,7423300],[1955,7499400],[1956,7575800],[1957,7651254],[1958,7727553],[1959,7797777],[1960,7867374],[1961,7943118],[1962,8012946],[1963,8078145],[1964,8144339],[1965,8201400],[1966,8258057],[1967,8310226],[1968,8369603],[1969,8434172],[1970,8489574],[1971,8536395],[1972,8576200],[1973,8620997],[1974,8678745],[1975,8720742],[1976,8755037],[1977,8797022],[1978,8803281],[1979,8811589],[1980,8843528],[1981,8869441],[1982,8892098],[1983,8910284],[1984,8928271],[1985,8943573],[1986,8958770],[1987,8971958],[1988,8982025],[1989,8990055],[1990,8894028],[1991,8772368],[1992,8658506],[1993,8441872],[1994,8353335],[1995,8255811],[1996,8161026],[1997,8066057],[1998,7971774],[1999,7893227],[2000,7818495],[2001,7738416],[2002,7661799],[2003,7588399],[2004,7517973],[2005,7450349],[2006,7385367],[2007,7322858],[2008,7262675]],"lifeExpectancy":[[1800,35.8],[1900,40.2],[1902,42.5],[1905,43.3],[1923,44.6],[1926,45.3],[1930,48.3],[1937,51.8],[1947,54.08],[1948,55.79],[1949,57.92],[1950,61.39],[1951,60.63],[1952,59.6],[1953,64.14],[1954,64.4],[1955,64.81],[1956,65.21],[1957,66.61],[1958,68.71],[1959,66.57],[1960,69.18],[1961,70.22],[1962,69.51],[1963,70.34],[1964,71.14],[1965,71.3],[1966,71.23],[1967,70.42],[1968,71.25],[1969,70.43],[1970,71.27],[1971,70.87],[1972,70.9],[1973,71.34],[1974,71.2],[1975,71.05],[1976,71.38],[1977,70.81],[1978,71.17],[1979,71.27],[1980,71.1],[1981,71.49],[1982,71.08],[1983,71.25],[1984,71.35],[1985,71.07],[1986,71.55],[1987,71.34],[1988,71.4],[1989,71.46],[1990,71.31],[1991,71.19],[1992,71.19],[1993,71.18],[1994,70.85],[1995,70.95],[1996,70.85],[1997,70.32],[1998,70.91],[1999,71.57],[2000,71.59],[2001,71.9],[2002,72.14],[2003,72.35],[2004,72.54],[2005,72.53],[2006,72.64],[2007,72.95],[2008,73.32],[2009,73.53]]},{"name":"Croatia","region":"Europe & Central Asia","income":[[1800,1227.06],[1820,1252.8],[1870,1290.02],[1890,1815.56],[1900,1942.56],[1910,2276.2],[1913,2276.25],[1920,2220.87],[1921,2242.77],[1922,2275.79],[1923,2360.39],[1924,2494.12],[1925,2579.72],[1926,2720.79],[1927,2638.71],[1928,2830.35],[1929,2937.87],[1930,2839.43],[1931,2715.2],[1932,2428.7],[1933,2469.86],[1934,2526.67],[1935,2454.48],[1936,2735.24],[1937,2742.51],[1938,2921.23],[1939,3040.4],[1947,2832.99],[1948,3334.76],[1949,3614.53],[1950,3340.19],[1951,3426.71],[1952,3119.24],[1953,3537.81],[1954,3686.86],[1955,3870.72],[1956,3751.15],[1957,4338.23],[1958,4479.35],[1959,4982.88],[1960,5248.4],[1961,5430.38],[1962,5477.89],[1963,5989.69],[1964,6502.15],[1965,6612.81],[1966,6902.41],[1967,6960.3],[1968,7047.52],[1969,7774.12],[1970,8085.73],[1971,8939.27],[1972,9164.09],[1973,9390.85],[1974,10508.17],[1975,10415.79],[1976,10637.03],[1977,11305.39],[1978,11825.89],[1979,12530.9],[1980,13057.9],[1981,13210.57],[1982,13221.82],[1983,13260.78],[1984,13522.3],[1985,13560.25],[1986,14045.06],[1987,13822.58],[1988,13568.05],[1989,13337.57],[1990,12318.28],[1991,9653.91],[1992,8447.79],[1993,7699.56],[1994,8100.49],[1995,8636.98],[1996,9176.84],[1997,9875.6],[1998,10225.82],[1999,10229.92],[2000,10582.67],[2001,11070.38],[2002,11628.39],[2003,12080.57],[2004,12490.93],[2005,13232],[2006,13865.36],[2007,14635.87],[2008,14981.18],[2009,14110.46]],"population":[[1800,1227886],[1820,1227886],[1950,3837297],[1951,3859830],[1952,3882229],[1953,3906475],[1954,3929591],[1955,3955526],[1956,3973442],[1957,3991242],[1958,4004029],[1959,4020631],[1960,4036145],[1961,4055443],[1962,4076557],[1963,4098506],[1964,4113553],[1965,4133313],[1966,4155830],[1967,4174366],[1968,4189903],[1969,4200551],[1970,4205389],[1971,4215869],[1972,4225310],[1973,4234664],[1974,4245822],[1975,4255000],[1976,4286311],[1977,4318673],[1978,4349242],[1979,4379909],[1980,4383000],[1981,4390829],[1982,4413368],[1983,4430941],[1984,4441854],[1985,4457874],[1986,4471752],[1987,4484310],[1988,4493676],[1989,4501397],[1990,4508347],[1991,4540641],[1992,4494013],[1993,4486066],[1994,4511187],[1995,4496683],[1996,4464030],[1997,4444595],[1998,4420195],[1999,4408383],[2000,4410830],[2001,4439110],[2002,4481020],[2003,4497779],[2004,4496869],[2005,4495904],[2006,4494749],[2007,4493312],[2008,4491543]],"lifeExpectancy":[[1800,36.1],[1920,36.1],[1950,59.5],[1951,59.95],[1952,60.83],[1953,61.66],[1954,62.44],[1955,63.18],[1956,63.87],[1957,64.5],[1958,65.09],[1959,65.63],[1960,66.12],[1961,66.57],[1962,66.96],[1963,67.31],[1964,67.63],[1965,67.92],[1966,68.18],[1967,68.42],[1968,68.65],[1969,68.87],[1970,69.09],[1971,69.32],[1972,69.55],[1973,69.79],[1974,70.01],[1975,70.22],[1976,70.38],[1977,70.5],[1978,70.55],[1979,70.56],[1980,70.55],[1981,70.54],[1982,70.55],[1983,70.61],[1984,70.73],[1985,70.9],[1986,71.1],[1987,71.31],[1988,71.53],[1989,71.73],[1990,71.95],[1991,72.2],[1992,72.49],[1993,72.83],[1994,73.21],[1995,73.6],[1996,73.96],[1997,74.27],[1998,74.52],[1999,74.69],[2000,74.81],[2001,74.9],[2002,75],[2003,75.14],[2004,75.31],[2005,75.53],[2006,75.78],[2007,76.03],[2008,76.27],[2009,76.49]]},{"name":"Cyprus","region":"Europe & Central Asia","income":[[1800,572.78],[1820,592.1],[1913,1752.95],[1950,2920.87],[1970,6323.94],[1971,7126.25],[1972,7624.59],[1973,7845.87],[1974,7689.08],[1975,6454.1],[1976,7680.86],[1977,8898.47],[1978,9539.09],[1979,10405.7],[1980,10904.71],[1981,11096.52],[1982,11663.94],[1983,12125.95],[1984,13018.71],[1985,13469.91],[1986,13820.98],[1987,14634.95],[1988,15679.76],[1989,16704.33],[1990,17572.31],[1991,17235.54],[1992,18364.5],[1993,18043.12],[1994,18695.08],[1995,20180.14],[1996,20228.69],[1997,20409.23],[1998,21170.8],[1999,21953.68],[2000,22821.38],[2001,23469.74],[2002,23683.6],[2003,23766.98],[2004,24211.44],[2005,24473],[2006,24908.98],[2007,25774.93],[2008,26349.47],[2009,25643.45]],"population":[[1800,184392],[1881,186000],[1891,209000],[1901,237000],[1911,274000],[1921,311000],[1931,348000],[1946,450000],[1950,494000],[1951,502000],[1952,508000],[1953,515000],[1954,523000],[1955,530000],[1956,536000],[1957,546000],[1958,558000],[1959,567000],[1960,573000],[1961,578700],[1962,576000],[1963,582300],[1964,586500],[1965,590800],[1966,595000],[1967,599400],[1968,604300],[1969,609400],[1970,614600],[1971,619800],[1972,626300],[1973,633900],[1974,640700],[1975,610500],[1976,598600],[1977,598400],[1978,601000],[1979,605100],[1980,611000],[1981,617900],[1982,624300],[1983,631800],[1984,639900],[1985,647300],[1986,650000],[1987,659400],[1988,664217],[1989,670912],[1990,681349],[1991,693906],[1992,707285],[1993,718776],[1994,726752],[1995,733188],[1996,738649],[1997,743728],[1998,748822],[1999,753692],[2000,758363],[2001,762887],[2002,767314],[2003,771657],[2004,775927],[2005,780133],[2006,784301],[2007,788457],[2008,792604]],"lifeExpectancy":[[1800,38.5],[1895,38.51],[1905,45],[1915,47.46],[1925,48.46],[1937,48.46],[1943,53.46],[1950,66.55],[1951,66.66],[1952,66.88],[1953,67.1],[1954,67.32],[1955,67.54],[1956,67.76],[1957,67.98],[1958,68.2],[1959,68.42],[1960,68.65],[1961,68.87],[1962,69.09],[1963,69.31],[1964,69.53],[1965,69.75],[1966,69.95],[1967,70.15],[1968,70.35],[1969,70.55],[1970,70.77],[1971,71.03],[1972,71.34],[1973,71.7],[1974,72.11],[1975,72.54],[1976,72.98],[1977,73.41],[1978,73.8],[1979,74.14],[1980,74.44],[1981,74.69],[1982,74.93],[1983,75.16],[1984,75.39],[1985,75.61],[1986,75.82],[1987,76.02],[1988,76.21],[1989,76.38],[1990,76.55],[1991,76.71],[1992,76.87],[1993,77.05],[1994,77.23],[1995,77.42],[1996,77.63],[1997,77.86],[1998,78.08],[1999,78.31],[2000,78.54],[2001,78.75],[2002,78.94],[2003,79.11],[2004,79.27],[2005,79.4],[2006,79.52],[2007,79.63],[2008,79.74],[2009,79.85]]},{"name":"Denmark","region":"Europe & Central Asia","income":[[1800,1342.84],[1820,1389.28],[1821,1442.33],[1822,1450.88],[1823,1432.15],[1824,1456.44],[1825,1451.29],[1826,1456.02],[1827,1485.24],[1828,1495.5],[1829,1461.16],[1830,1470.07],[1831,1459.29],[1832,1500.9],[1833,1483.15],[1834,1552.3],[1835,1531.9],[1836,1523.43],[1837,1552.67],[1838,1553.12],[1839,1560.42],[1840,1599.67],[1841,1585.44],[1842,1580.41],[1843,1659.37],[1844,1719.34],[1845,1748.87],[1846,1770.96],[1847,1749.37],[1848,1825.11],[1849,1917.22],[1850,2005.8],[1851,1888.73],[1852,1937.48],[1853,1928.12],[1854,1918.48],[1855,2105.48],[1856,1963.1],[1857,1972.19],[1858,1936.14],[1859,2042.7],[1860,2002.6],[1861,2012.25],[1862,2051.1],[1863,2158.64],[1864,2119.27],[1865,2170.78],[1866,2155.68],[1867,2136.16],[1868,2154.08],[1869,2258.2],[1870,2334.67],[1871,2325.92],[1872,2438.77],[1873,2406.44],[1874,2456.17],[1875,2477.37],[1876,2502.66],[1877,2406.95],[1878,2476.02],[1879,2534.1],[1880,2576.34],[1881,2581.47],[1882,2652.98],[1883,2726.01],[1884,2713.39],[1885,2703.7],[1886,2780.97],[1887,2854.28],[1888,2851.25],[1889,2867.96],[1890,3019.69],[1891,3061.96],[1892,3117.15],[1893,3158.46],[1894,3197.16],[1895,3337.28],[1896,3420.8],[1897,3458.18],[1898,3470.75],[1899,3575.26],[1900,3658.24],[1901,3769.45],[1902,3819.26],[1903,4006.01],[1904,4054.34],[1905,4084.6],[1906,4158.25],[1907,4267.16],[1908,4353.49],[1909,4470.21],[1910,4553.02],[1911,4745.57],[1912,4697.1],[1913,4826.63],[1914,5077.93],[1915,4673.39],[1916,4819.94],[1917,4485.64],[1918,4295.37],[1919,4799.78],[1920,4970.96],[1921,4770.64],[1922,5201.84],[1923,5699.38],[1924,5668.6],[1925,5488.31],[1926,5770.84],[1927,5854.2],[1928,6022.47],[1929,6395.75],[1930,6739.15],[1931,6771.4],[1932,6540.17],[1933,6702.3],[1934,6852.67],[1935,6960.34],[1936,7090.48],[1937,7219.21],[1938,7348.56],[1939,7652.71],[1940,6541.9],[1941,5855.93],[1942,5933.93],[1943,6521.29],[1944,7125.28],[1945,6520.8],[1946,7445.19],[1947,7788.25],[1948,7925.43],[1949,8403.5],[1950,8996.05],[1951,8999.38],[1952,9035.67],[1953,9485.18],[1954,9601.58],[1955,9645.67],[1956,9715.12],[1957,10416.31],[1958,10600.5],[1959,11325.13],[1960,11569.48],[1961,12242.19],[1962,12831.71],[1963,12828.01],[1964,13937.78],[1965,14476.65],[1966,14769.04],[1967,15155.34],[1968,15706.49],[1969,16649.14],[1970,16877.42],[1971,17230.2],[1972,18059.78],[1973,18627.44],[1974,18392.37],[1975,18242.49],[1976,19400.16],[1977,19679.76],[1978,19934.76],[1979,20617.91],[1980,20529.08],[1981,20379.19],[1982,21037.65],[1983,21610.89],[1984,22601.41],[1985,23592.45],[1986,24451.45],[1987,24524.78],[1988,24831.14],[1989,24914.52],[1990,25208.56],[1991,25503.74],[1992,25956.19],[1993,25882.23],[1994,27258.06],[1995,27985.59],[1996,28655.63],[1997,29490.37],[1998,30058.99],[1999,30767.67],[2000,31805.54],[2001,31964.4],[2002,32039.01],[2003,32089.74],[2004,32694.6],[2005,33626],[2006,34664.67],[2007,35124.41],[2008,34636.39],[2009,32670.06]],"population":[[1820,1155000],[1821,1167000],[1822,1179000],[1823,1196000],[1824,1213000],[1825,1228000],[1826,1243000],[1827,1255000],[1828,1265000],[1829,1270000],[1830,1273000],[1831,1275000],[1832,1276000],[1833,1284000],[1834,1295000],[1835,1306000],[1836,1315000],[1837,1325000],[1838,1335000],[1839,1347000],[1840,1357000],[1841,1371000],[1842,1385000],[1843,1392000],[1844,1414000],[1845,1430000],[1846,1444000],[1847,1456000],[1848,1470000],[1849,1484000],[1850,1499000],[1851,1517000],[1852,1536000],[1853,1552000],[1854,1569000],[1855,1590000],[1856,1612000],[1857,1634000],[1858,1653000],[1859,1674000],[1860,1696000],[1861,1717000],[1862,1739000],[1863,1761000],[1864,1777000],[1865,1799000],[1866,1814000],[1867,1833000],[1868,1852000],[1869,1871000],[1870,1888000],[1871,1903000],[1872,1918000],[1873,1935000],[1874,1954000],[1875,1973000],[1876,1994000],[1877,2019000],[1878,2043000],[1879,2064000],[1880,2081000],[1881,2101000],[1882,2120000],[1883,2137000],[1884,2160000],[1885,2186000],[1886,2213000],[1887,2237000],[1888,2257000],[1889,2276000],[1890,2294000],[1891,2311000],[1892,2327000],[1893,2344000],[1894,2367000],[1895,2397000],[1896,2428000],[1897,2462000],[1898,2497000],[1899,2530000],[1900,2561000],[1901,2594000],[1902,2623000],[1903,2653000],[1904,2681000],[1905,2710000],[1906,2741000],[1907,2775000],[1908,2809000],[1909,2845000],[1910,2882000],[1911,2917000],[1912,2951000],[1913,2983000],[1914,3018000],[1915,3055000],[1916,3092000],[1917,3130000],[1918,3165000],[1919,3202000],[1920,3242000],[1921,3285000],[1922,3322000],[1923,3356000],[1924,3389000],[1925,3425000],[1926,3452000],[1927,3475000],[1928,3497000],[1929,3518000],[1930,3542000],[1931,3569000],[1932,3603000],[1933,3633000],[1934,3666000],[1935,3695000],[1936,3722000],[1937,3749000],[1938,3777000],[1939,3805000],[1940,3832000],[1941,3863000],[1942,3903000],[1943,3949000],[1944,3998000],[1945,4045000],[1946,4101000],[1947,4146000],[1948,4190000],[1949,4230000],[1950,4271000],[1951,4303620],[1952,4334000],[1953,4369280],[1954,4406000],[1955,4439000],[1956,4466471],[1957,4487831],[1958,4515132],[1959,4546636],[1960,4581000],[1961,4609817],[1962,4646899],[1963,4683579],[1964,4720171],[1965,4758100],[1966,4797500],[1967,4838800],[1968,4867300],[1969,4890687],[1970,4928757],[1971,4963126],[1972,4991596],[1973,5021861],[1974,5045297],[1975,5059861],[1976,5072596],[1977,5088419],[1978,5104247],[1979,5116800],[1980,5123027],[1981,5121572],[1982,5117810],[1983,5114297],[1984,5111619],[1985,5113691],[1986,5120534],[1987,5127024],[1988,5129516],[1989,5132593],[1990,5140954],[1991,5154352],[1992,5171393],[1993,5188386],[1994,5205603],[1995,5232612],[1996,5262075],[1997,5283663],[1998,5302767],[1999,5320134],[2000,5337416],[2001,5355826],[2002,5374693],[2003,5394138],[2004,5413392],[2005,5432335],[2006,5450661],[2007,5468120],[2008,5484723]],"lifeExpectancy":[[1800,35],[1835,38.35],[1836,39.92],[1837,41.5],[1838,43.11],[1839,41.86],[1840,41.06],[1841,42.64],[1842,42.49],[1843,43.85],[1844,44],[1845,43.35],[1846,40.43],[1847,40.47],[1848,40.73],[1849,39.5],[1850,43.5],[1851,44.57],[1852,43.08],[1853,38.6],[1854,44.74],[1855,46.18],[1856,46.78],[1857,42.49],[1858,40.04],[1859,44.42],[1860,45.11],[1861,47.65],[1862,47.62],[1863,47.58],[1864,40.2],[1865,39.85],[1866,42.95],[1867,44.97],[1868,45.66],[1869,46.13],[1870,46.06],[1871,46.15],[1872,47.53],[1873,47.58],[1874,46.11],[1875,44.51],[1876,45.88],[1877,47.41],[1878,47.6],[1879,46.29],[1880,44.86],[1881,48.37],[1882,46.77],[1883,48.56],[1884,48.6],[1885,49.69],[1886,49],[1887,48.71],[1888,46.71],[1889,47.83],[1890,47.3],[1891,46.83],[1892,47.49],[1893,47.14],[1894,49.42],[1895,50.93],[1896,52.99],[1897,51.86],[1898,53.15],[1899,50.71],[1900,51.95],[1901,52.66],[1902,54.74],[1903,54.81],[1904,55.81],[1905,54.41],[1906,56.6],[1907,56.13],[1908,54.96],[1909,57.44],[1910,58.09],[1911,57.01],[1912,58.09],[1913,58.93],[1914,58.53],[1915,58.46],[1916,56.97],[1917,57.31],[1918,56.25],[1919,57],[1920,57.55],[1921,61.78],[1922,60.65],[1923,61.22],[1924,61.19],[1925,61.96],[1926,61.71],[1927,61.24],[1928,61.93],[1929,62],[1930,62.31],[1931,61.89],[1932,62.74],[1933,63.66],[1934,64.15],[1935,62.92],[1936,63.5],[1937,63.98],[1938,64.99],[1939,65.83],[1940,66.27],[1941,66.02],[1942,67.16],[1943,67.46],[1944,66.41],[1945,66.09],[1946,67.24],[1947,68.54],[1948,70.12],[1949,70.15],[1950,70.33],[1951,70.93],[1952,70.78],[1953,71.15],[1954,71.35],[1955,71.92],[1956,72.05],[1957,71.81],[1958,72.24],[1959,72.22],[1960,72.21],[1961,72.47],[1962,72.35],[1963,72.44],[1964,72.52],[1965,72.4],[1966,72.48],[1967,72.96],[1968,73.17],[1969,73.26],[1970,73.38],[1971,73.44],[1972,73.47],[1973,73.71],[1974,73.84],[1975,74.11],[1976,73.78],[1977,74.69],[1978,74.45],[1979,74.27],[1980,74.16],[1981,74.29],[1982,74.63],[1983,74.5],[1984,74.65],[1985,74.52],[1986,74.69],[1987,74.8],[1988,74.89],[1989,74.92],[1990,74.92],[1991,75.29],[1992,75.33],[1993,75.25],[1994,75.51],[1995,75.36],[1996,75.74],[1997,76.11],[1998,76.51],[1999,76.66],[2000,76.9],[2001,77.06],[2002,77.18],[2003,77.78],[2004,77.58],[2005,78.32],[2006,78.32],[2007,78.44],[2008,78.41],[2009,78.57]]},{"name":"Estonia","region":"Europe & Central Asia","income":[[1800,906.39],[1820,925.48],[1913,2062.96],[1950,4042.45],[1973,8313.11],[1990,10389.82],[1991,9409.45],[1992,8245.73],[1993,7733.48],[1994,7733.63],[1995,8199.12],[1996,8680.18],[1997,9689.84],[1998,10283.79],[1999,10356.42],[2000,11244.49],[2001,12050.17],[2002,13011.44],[2003,13770.19],[2004,15014.22],[2005,16654],[2006,18350.51],[2007,19705.76],[2008,18993.59],[2009,16349.13]],"population":[[1800,334136],[1820,334136],[1950,1095610],[1951,1111966],[1952,1130445],[1953,1140395],[1954,1148378],[1955,1154371],[1956,1162801],[1957,1174251],[1958,1185336],[1959,1197418],[1960,1210647],[1961,1224467],[1962,1238786],[1963,1254604],[1964,1272439],[1965,1287808],[1966,1300177],[1967,1311560],[1968,1324437],[1969,1342891],[1970,1363183],[1971,1381459],[1972,1397391],[1973,1410836],[1974,1422291],[1975,1432246],[1976,1442204],[1977,1453168],[1978,1463533],[1979,1472244],[1980,1482196],[1981,1493318],[1982,1504043],[1983,1514671],[1984,1526128],[1985,1538224],[1986,1550072],[1987,1562224],[1988,1569187],[1989,1570926],[1990,1569322],[1991,1559547],[1992,1528715],[1993,1491426],[1994,1467535],[1995,1446509],[1996,1427827],[1997,1413351],[1998,1400972],[1999,1389756],[2000,1379835],[2001,1369983],[2002,1360122],[2003,1350722],[2004,1341664],[2005,1332893],[2006,1324333],[2007,1315912],[2008,1307605]],"lifeExpectancy":[[1800,36.5],[1860,36.5],[1897,43],[1900,43.1],[1922,51.7],[1935,56.27],[1950,64.36],[1951,64.6],[1952,65.08],[1953,65.57],[1954,66.06],[1955,66.55],[1956,67.04],[1957,67.53],[1958,68],[1959,68.64],[1960,69.34],[1961,69.66],[1962,69.84],[1963,69.9],[1964,70.64],[1965,70.71],[1966,70.68],[1967,70.97],[1968,70.59],[1969,70.28],[1970,70.39],[1971,70.59],[1972,70.35],[1973,70.7],[1974,70.8],[1975,70.12],[1976,69.74],[1977,69.86],[1978,69.72],[1979,69.5],[1980,69.59],[1981,69.46],[1982,69.86],[1983,69.78],[1984,69.65],[1985,69.79],[1986,70.93],[1987,70.94],[1988,70.98],[1989,70.53],[1990,69.9],[1991,69.8],[1992,69.14],[1993,68.19],[1994,66.67],[1995,67.72],[1996,69.94],[1997,70.13],[1998,69.72],[1999,70.5],[2000,70.8],[2001,70.67],[2002,71.23],[2003,71.82],[2004,72.29],[2005,72.96],[2006,73.13],[2007,73.14],[2008,73.23],[2009,73.5]]},{"name":"Finland","region":"Europe & Central Asia","income":[[1800,1037.69],[1820,1073.4],[1821,1078.92],[1822,1084.47],[1823,1090.05],[1824,1095.65],[1825,1101.29],[1826,1106.95],[1827,1112.64],[1828,1118.37],[1829,1124.12],[1830,1129.9],[1831,1135.71],[1832,1141.55],[1833,1147.42],[1834,1153.32],[1835,1159.25],[1836,1165.21],[1837,1171.21],[1838,1177.23],[1839,1183.28],[1840,1189.37],[1841,1195.48],[1842,1201.63],[1843,1207.81],[1844,1214.02],[1845,1220.27],[1846,1226.54],[1847,1232.85],[1848,1239.19],[1849,1245.56],[1850,1251.97],[1851,1258.44],[1852,1264.95],[1853,1271.49],[1854,1278.06],[1855,1284.67],[1856,1291.32],[1857,1297.99],[1858,1304.71],[1859,1311.45],[1860,1318.23],[1861,1316.39],[1862,1231.83],[1863,1316.16],[1864,1331.17],[1865,1307.65],[1866,1316.86],[1867,1217.5],[1868,1379.02],[1869,1513.88],[1870,1566.35],[1871,1548.7],[1872,1573.71],[1873,1640.18],[1874,1654.92],[1875,1664.63],[1876,1730.68],[1877,1664.65],[1878,1611.83],[1879,1604.46],[1880,1587.17],[1881,1525.64],[1882,1653.22],[1883,1690.22],[1884,1675.84],[1885,1692.17],[1886,1753.02],[1887,1753.07],[1888,1789.84],[1889,1823.23],[1890,1898.07],[1891,1855.95],[1892,1759.05],[1893,1842.91],[1894,1923.34],[1895,2051.12],[1896,2157.69],[1897,2232.26],[1898,2292.74],[1899,2208.61],[1900,2293.12],[1901,2248.73],[1902,2187.05],[1903,2316.91],[1904,2379.03],[1905,2393.93],[1906,2466.09],[1907,2521.28],[1908,2513.65],[1909,2589.75],[1910,2620.18],[1911,2665.1],[1912,2779.55],[1913,2900.86],[1914,2749.61],[1915,2586.14],[1916,2601.75],[1917,2172.74],[1918,1882.63],[1919,2279.04],[1920,2536.46],[1921,2589.95],[1922,2828.49],[1923,3005.49],[1924,3056.68],[1925,3199.82],[1926,3287.25],[1927,3514.45],[1928,3720.77],[1929,3733.94],[1930,3663.59],[1931,3546.72],[1932,3504.34],[1933,3713.08],[1934,4107.16],[1935,4250.49],[1936,4506.28],[1937,4729.48],[1938,4933.25],[1939,4683.47],[1940,4426.07],[1941,4565.98],[1942,4572.8],[1943,5080.7],[1944,5064.01],[1945,4740.94],[1946,5061.83],[1947,5108.35],[1948,5438.68],[1949,5694.41],[1950,5845.63],[1951,6282.55],[1952,6424.52],[1953,6393.12],[1954,6874.03],[1955,7142.39],[1956,7277.78],[1957,7545.42],[1958,7523.81],[1959,7907.52],[1960,8562.87],[1961,9150.5],[1962,9371.84],[1963,9612.4],[1964,10042.22],[1965,10540.94],[1966,10753.82],[1967,10921.64],[1968,11122.84],[1969,12201.15],[1970,13162.25],[1971,13420.39],[1972,14358.88],[1973,15235.13],[1974,15614.72],[1975,15724.68],[1976,15610.75],[1977,15605.42],[1978,15886.31],[1979,16948.22],[1980,17796.77],[1981,18051.17],[1982,18533.16],[1983,18920.9],[1984,19387.97],[1985,19958.81],[1986,20367.55],[1987,21141.01],[1988,22110.88],[1989,23289.8],[1990,23180.78],[1991,21581.75],[1992,20647.16],[1993,20294.81],[1994,21005.54],[1995,21650.15],[1996,22402.5],[1997,23723.95],[1998,25004.32],[1999,25915.26],[2000,27171.97],[2001,27825.53],[2002,28204.59],[2003,28650.03],[2004,29651.4],[2005,30469],[2006,31683.68],[2007,33102.61],[2008,33339.32],[2009,30602.73]],"population":[[1820,1169000],[1821,1186000],[1822,1202000],[1823,1219000],[1824,1235000],[1825,1252000],[1826,1268000],[1827,1310000],[1828,1326000],[1829,1343000],[1830,1364000],[1831,1374000],[1832,1378000],[1833,1383000],[1834,1387000],[1835,1391000],[1836,1399000],[1837,1409000],[1838,1420000],[1839,1430000],[1840,1441000],[1841,1456000],[1842,1476000],[1843,1495000],[1844,1516000],[1845,1536000],[1846,1555000],[1847,1573000],[1848,1591000],[1849,1610000],[1850,1628000],[1851,1642000],[1852,1652000],[1853,1663000],[1854,1673000],[1855,1683000],[1856,1692000],[1857,1703000],[1858,1715000],[1859,1726000],[1860,1738000],[1861,1754000],[1862,1774000],[1863,1794000],[1864,1813000],[1865,1833000],[1866,1840000],[1867,1831000],[1868,1776000],[1869,1734000],[1870,1754000],[1871,1786000],[1872,1819000],[1873,1847000],[1874,1873000],[1875,1899000],[1876,1928000],[1877,1957000],[1878,1983000],[1879,2014000],[1880,2047000],[1881,2072000],[1882,2098000],[1883,2130000],[1884,2164000],[1885,2195000],[1886,2224000],[1887,2259000],[1888,2296000],[1889,2331000],[1890,2364000],[1891,2394000],[1892,2451000],[1893,2430000],[1894,2511000],[1895,2483000],[1896,2515000],[1897,2549000],[1898,2589000],[1899,2624000],[1900,2646000],[1901,2667000],[1902,2686000],[1903,2706000],[1904,2735000],[1905,2762000],[1906,2788000],[1907,2821000],[1908,2861000],[1909,2899000],[1910,2929000],[1911,2962000],[1912,2998000],[1913,3027000],[1914,3053000],[1915,3083000],[1916,3105000],[1917,3124000],[1918,3125000],[1919,3117000],[1920,3133000],[1921,3170000],[1922,3210000],[1923,3243000],[1924,3272000],[1925,3304000],[1926,3339000],[1927,3368000],[1928,3396000],[1929,3424000],[1930,3449000],[1931,3476000],[1932,3503000],[1933,3526000],[1934,3549000],[1935,3576000],[1936,3601000],[1937,3626000],[1938,3656000],[1939,3686000],[1940,3698000],[1941,3702000],[1942,3708000],[1943,3721000],[1944,3735000],[1945,3758000],[1946,3806000],[1947,3859000],[1948,3912000],[1949,3963000],[1950,4008900],[1951,4047300],[1952,4090500],[1953,4139400],[1954,4186900],[1955,4234900],[1956,4281700],[1957,4324000],[1958,4359800],[1959,4394700],[1960,4429600],[1961,4461004],[1962,4491443],[1963,4523309],[1964,4548544],[1965,4563732],[1966,4580869],[1967,4605744],[1968,4626469],[1969,4623785],[1970,4606307],[1971,4612124],[1972,4639657],[1973,4666081],[1974,4690574],[1975,4711439],[1976,4725664],[1977,4738902],[1978,4752528],[1979,4764690],[1980,4779535],[1981,4799964],[1982,4826933],[1983,4855787],[1984,4881788],[1985,4901783],[1986,4917386],[1987,4931729],[1988,4946633],[1989,4962441],[1990,4986431],[1991,5013786],[1992,5041039],[1993,5064846],[1994,5086044],[1995,5104654],[1996,5120310],[1997,5134406],[1998,5146983],[1999,5158097],[2000,5168595],[2001,5180309],[2002,5193039],[2003,5204405],[2004,5214512],[2005,5223442],[2006,5231372],[2007,5238460],[2008,5244749]],"lifeExpectancy":[[1800,31.8],[1805,31.77],[1815,35.77],[1825,38.36],[1835,34.61],[1845,40.4],[1855,35.06],[1865,32.07],[1875,41.57],[1878,39.17],[1879,44.95],[1880,39.67],[1881,37.65],[1882,40.46],[1883,42.79],[1884,42.87],[1885,41.3],[1886,40.92],[1887,45.6],[1888,45.16],[1889,44.93],[1890,44.61],[1891,42.57],[1892,39.73],[1893,43.34],[1894,45.22],[1895,47.64],[1896,46.56],[1897,48.16],[1898,48.07],[1899,44.4],[1900,41.8],[1901,42.87],[1902,46.23],[1903,46.64],[1904,47.21],[1905,46.04],[1906,47.07],[1907,46.98],[1908,46.15],[1909,48.67],[1910,48.53],[1911,48.73],[1912,49.13],[1913,49.05],[1914,49.73],[1915,49.54],[1916,48.03],[1917,46.49],[1918,32.71],[1919,43.07],[1920,47.55],[1921,52.41],[1922,51.92],[1923,52.52],[1924,50.22],[1925,53.42],[1926,53.83],[1927,51.86],[1928,53.71],[1929,51.28],[1930,54.47],[1931,54.88],[1932,55.79],[1933,55.45],[1934,56.04],[1935,57.36],[1936,56.16],[1937,57.1],[1938,57.2],[1939,54.67],[1940,46.65],[1941,46.5],[1942,53.9],[1943,56.27],[1944,48],[1945,57.19],[1946,60.27],[1947,60.53],[1948,61.99],[1949,61.88],[1950,64.24],[1951,65.67],[1952,66.55],[1953,66.61],[1954,67.57],[1955,67.37],[1956,67.99],[1957,67.49],[1958,68.63],[1959,68.81],[1960,69.01],[1961,69.04],[1962,68.75],[1963,69.16],[1964,69.37],[1965,69.13],[1966,69.65],[1967,69.83],[1968,69.79],[1969,69.67],[1970,70.36],[1971,70.18],[1972,70.87],[1973,71.38],[1974,71.3],[1975,71.85],[1976,72],[1977,72.52],[1978,73.08],[1979,73.37],[1980,73.66],[1981,73.98],[1982,74.55],[1983,74.46],[1984,74.77],[1985,74.44],[1986,74.8],[1987,74.83],[1988,74.79],[1989,75.01],[1990,75.04],[1991,75.45],[1992,75.7],[1993,75.94],[1994,76.64],[1995,76.66],[1996,76.94],[1997,77.13],[1998,77.34],[1999,77.53],[2000,77.76],[2001,78.23],[2002,78.37],[2003,78.63],[2004,78.96],[2005,79.09],[2006,79.49],[2007,79.53],[2008,79.7],[2009,79.9]]},{"name":"France","region":"Europe & Central Asia","income":[[1800,1388.32],[1820,1508.17],[1821,1605.15],[1822,1488.9],[1823,1484.46],[1824,1450.73],[1825,1461.26],[1826,1507.24],[1827,1517.77],[1828,1424.55],[1829,1505.31],[1830,1478.21],[1831,1468.18],[1832,1575.78],[1833,1575.21],[1834,1556.85],[1835,1638.99],[1836,1670.87],[1837,1691.88],[1838,1728.95],[1839,1702.64],[1840,1833.29],[1841,1782.25],[1842,1748.42],[1843,1814.96],[1844,1869.79],[1845,1937.81],[1846,2061.01],[1847,2247.78],[1848,1754.96],[1849,1751.73],[1850,1840.71],[1851,1810.27],[1852,2049.4],[1853,2279.88],[1854,2558.73],[1855,2699.62],[1856,2804.19],[1857,2709.43],[1858,2530.47],[1859,2537.44],[1860,2704.03],[1861,2763.29],[1862,2864.8],[1863,2947.49],[1864,3001.41],[1865,2952.32],[1866,3078.84],[1867,3035.75],[1868,3248.75],[1869,3053.02],[1870,2952.12],[1871,3094.7],[1872,3265.24],[1873,3226.92],[1874,3368.09],[1875,3305.81],[1876,3271.13],[1877,3263.78],[1878,3086.79],[1879,3061.22],[1880,3251.85],[1881,3467.16],[1882,3592.01],[1883,3442.58],[1884,3268.75],[1885,3178.76],[1886,3144.18],[1887,3176.37],[1888,3256.96],[1889,3273.56],[1890,3400.86],[1891,3444.97],[1892,3524.93],[1893,3398.78],[1894,3737.15],[1895,3668.19],[1896,3791.6],[1897,3688.84],[1898,3914.43],[1899,4060.44],[1900,4120.2],[1901,3923.77],[1902,3882.54],[1903,4018.39],[1904,4104.52],[1905,4215.5],[1906,4163.4],[1907,4506.35],[1908,4497.65],[1909,4648.43],[1910,4431.67],[1911,4874.61],[1912,5269.95],[1913,5216.06],[1914,4366.68],[1915,3838.35],[1916,4391.91],[1917,4343.65],[1918,3715.96],[1919,4091.01],[1920,4363.66],[1921,4138.93],[1922,4952.53],[1923,5174.88],[1924,5731.07],[1925,5758.31],[1926,5943.23],[1927,5809.19],[1928,6139.65],[1929,6647.68],[1930,6404.85],[1931,6109.1],[1932,5562.21],[1933,5715.58],[1934,5506.14],[1935,5360.76],[1936,5427.12],[1937,5543.16],[1938,5395.35],[1939,5609.14],[1940,4419.43],[1941,4268.29],[1942,4290.23],[1943,4272.41],[1944,3266.23],[1945,4011.65],[1946,5348.07],[1947,5625.06],[1948,6298.46],[1949,6625.98],[1950,7104.01],[1951,7436.28],[1952,7550.91],[1953,7692.44],[1954,8019.09],[1955,8399.74],[1956,8786.31],[1957,9242.42],[1958,9434.98],[1959,9619.51],[1960,10244.42],[1961,10686.66],[1962,11191.29],[1963,11579.29],[1964,12197.97],[1965,12650.59],[1966,13187.05],[1967,13683.81],[1968,14146.15],[1969,15000.57],[1970,15703.71],[1971,16284.72],[1972,16840.55],[1973,17597.08],[1974,18004.5],[1975,17848.25],[1976,18509.58],[1977,18996.91],[1978,19524.41],[1979,20102.02],[1980,20334.47],[1981,20488.68],[1982,20933.53],[1983,21265.16],[1984,21488.65],[1985,21805.96],[1986,22218.56],[1987,22608.9],[1988,23523.51],[1989,24186.1],[1990,24676.73],[1991,24847.93],[1992,25140.92],[1993,24731.22],[1994,25117.85],[1995,25556.85],[1996,25717.2],[1997,26170.75],[1998,26957.92],[1999,27689.46],[2000,28636.15],[2001,28983.72],[2002,29043.35],[2003,29048.88],[2004,29505.88],[2005,29644],[2006,30161.01],[2007,30666.76],[2008,30598.37],[2009,29774.85]],"population":[[1820,31250000],[1821,31460000],[1822,31685000],[1823,31905000],[1824,32127000],[1825,32350000],[1826,32538000],[1827,32727000],[1828,32917000],[1829,33108000],[1830,33300000],[1831,33439000],[1832,33598000],[1833,33718000],[1834,33859000],[1835,34000000],[1836,34178000],[1837,34357000],[1838,34537000],[1839,34718000],[1840,34900000],[1841,35059000],[1842,35218000],[1843,35378000],[1844,35539000],[1845,35700000],[1846,35829000],[1847,35959000],[1848,36089000],[1849,36219000],[1850,36350000],[1851,36479000],[1852,36609000],[1853,36739000],[1854,36869000],[1855,37000000],[1856,37060000],[1857,37120000],[1858,37180000],[1859,37240000],[1860,37300000],[1861,37390000],[1862,37520000],[1863,37710000],[1864,37860000],[1865,38020000],[1866,38080000],[1867,38230000],[1868,38330000],[1869,38890000],[1870,38440000],[1871,37731000],[1872,37679000],[1873,37887000],[1874,38044000],[1875,38221000],[1876,38398000],[1877,38576000],[1878,38763000],[1879,38909000],[1880,39045000],[1881,39191000],[1882,39337000],[1883,39472000],[1884,39629000],[1885,39733000],[1886,39858000],[1887,39889000],[1888,39920000],[1889,40004000],[1890,40014000],[1891,39983000],[1892,39993000],[1893,40014000],[1894,40056000],[1895,40098000],[1896,40192000],[1897,40348000],[1898,40473000],[1899,40546000],[1900,40598000],[1901,40640000],[1902,40713000],[1903,40786000],[1904,40859000],[1905,40890000],[1906,40942000],[1907,40942000],[1908,41046000],[1909,41109000],[1910,41224000],[1911,41307000],[1912,41359000],[1913,41463000],[1914,41476000],[1915,40481000],[1916,39884000],[1917,39288000],[1918,38542000],[1919,38700000],[1920,39000000],[1921,39240000],[1922,39420000],[1923,39880000],[1924,40310000],[1925,40610000],[1926,40870000],[1927,40940000],[1928,41050000],[1929,41230000],[1930,41610000],[1931,41860000],[1932,41860000],[1933,41890000],[1934,41950000],[1935,41940000],[1936,41910000],[1937,41930000],[1938,41960000],[1939,41900000],[1940,41000000],[1941,39600000],[1942,39400000],[1943,39000000],[1944,38900000],[1945,39700000],[1946,40290000],[1947,40680000],[1948,41110000],[1949,41480000],[1950,41828673],[1951,42155534],[1952,42459667],[1953,42751746],[1954,43056505],[1955,43427669],[1956,43843075],[1957,44310863],[1958,44788852],[1959,45239729],[1960,45670000],[1961,46189000],[1962,47124000],[1963,47808000],[1964,48340000],[1965,48763000],[1966,49194000],[1967,49569000],[1968,49934000],[1969,50353000],[1970,50787000],[1971,51285000],[1972,51732000],[1973,52157000],[1974,52503000],[1975,52758427],[1976,52953613],[1977,53165019],[1978,53380649],[1979,53605523],[1980,53869743],[1981,54147284],[1982,54433565],[1983,54649810],[1984,54946500],[1985,55171224],[1986,55387361],[1987,55630100],[1988,55873463],[1989,56416625],[1990,56735161],[1991,57055448],[1992,57374179],[1993,57658289],[1994,57906847],[1995,58149727],[1996,58388408],[1997,58623428],[1998,58866290],[1999,59116128],[2000,59381628],[2001,59658144],[2002,59925035],[2003,60180529],[2004,60424213],[2005,60656178],[2006,60876136],[2007,61083916],[2008,61279972]],"lifeExpectancy":[[1800,32.4],[1806,35],[1807,34.2],[1808,34.5],[1809,35],[1810,37.4],[1811,36.1],[1812,31.7],[1813,31.2],[1814,30.1],[1815,36.5],[1816,40.04],[1817,39.18],[1818,38.53],[1819,37.25],[1820,39.21],[1821,39.83],[1822,38.3],[1823,39.97],[1824,39.14],[1825,38.53],[1826,37.76],[1827,39.35],[1828,37.53],[1829,39.36],[1830,39.56],[1831,39.65],[1832,35.81],[1833,38.83],[1834,35.01],[1835,39.48],[1836,41.95],[1837,39.38],[1838,39.33],[1839,40.91],[1840,40.37],[1841,40.68],[1842,40.01],[1843,40.75],[1844,42.29],[1845,43.58],[1846,40.67],[1847,40.41],[1848,40.29],[1849,35.91],[1850,43.28],[1851,41.77],[1852,41.32],[1853,42.52],[1854,36.13],[1855,37.54],[1856,40.18],[1857,39.59],[1858,39.67],[1859,35.26],[1860,43.33],[1861,40.45],[1862,42.7],[1863,41.73],[1864,42.01],[1865,40.16],[1866,41.83],[1867,42.33],[1868,40.23],[1869,41.14],[1870,36.41],[1871,29.59],[1872,42.64],[1873,41.75],[1874,44.3],[1875,43.17],[1876,43.55],[1877,44.33],[1878,43.36],[1879,43.99],[1880,42.73],[1881,43.55],[1882,43.16],[1883,43.28],[1884,42.52],[1885,43.97],[1886,43.17],[1887,43.75],[1888,44.15],[1889,45.56],[1890,43.36],[1891,44.11],[1892,43.57],[1893,43.6],[1894,45.53],[1895,45.2],[1896,47.56],[1897,47.93],[1898,45.99],[1899,45.23],[1900,45.08],[1901,47.01],[1902,48.01],[1903,48.43],[1904,48.08],[1905,48.36],[1906,47.74],[1907,48.28],[1908,49.3],[1909,50.01],[1910,51.37],[1911,48.17],[1912,51.62],[1913,51.35],[1914,37.85],[1915,35.63],[1916,39.51],[1917,42.6],[1918,34.34],[1919,47.52],[1920,51.6],[1921,52.69],[1922,54.92],[1923,54.65],[1924,55.27],[1925,54.39],[1926,54.03],[1927,55.8],[1928,55.44],[1929,54.27],[1930,56.87],[1931,56.93],[1932,57.26],[1933,57.7],[1934,58.36],[1935,58.32],[1936,58.81],[1937,59.17],[1938,58.97],[1939,59.62],[1940,49.45],[1941,57.67],[1942,57.44],[1943,53.33],[1944,47.19],[1945,54.96],[1946,62.38],[1947,63.98],[1948,65.83],[1949,64.92],[1950,66.39],[1951,66.12],[1952,67.41],[1953,67.34],[1954,68.21],[1955,68.47],[1956,68.5],[1957,68.93],[1958,70.16],[1959,70.19],[1960,70.4],[1961,70.98],[1962,70.51],[1963,70.36],[1964,71.32],[1965,71.15],[1966,71.56],[1967,71.55],[1968,71.54],[1969,71.27],[1970,72.16],[1971,72.13],[1972,72.38],[1973,72.54],[1974,72.89],[1975,72.98],[1976,73.22],[1977,73.83],[1978,73.95],[1979,74.26],[1980,74.35],[1981,74.51],[1982,74.89],[1983,74.87],[1984,75.37],[1985,75.47],[1986,75.75],[1987,76.34],[1988,76.57],[1989,76.69],[1990,76.98],[1991,77.17],[1992,77.46],[1993,77.5],[1994,77.94],[1995,78.06],[1996,78.27],[1997,78.62],[1998,78.79],[1999,78.92],[2000,79.23],[2001,79.41],[2002,79.57],[2003,79.57],[2004,80.5],[2005,80.47],[2006,80.88],[2007,81.14],[2008,81.25],[2009,81.47]]},{"name":"Georgia","region":"Europe & Central Asia","income":[[1800,571.2],[1820,583.23],[1913,1300.06],[1965,2711.39],[1966,2881.8],[1967,3029.8],[1968,3134.36],[1969,3254.08],[1970,3613.63],[1971,3670.07],[1972,3741.23],[1973,3950.02],[1974,4263.52],[1975,4544.1],[1976,4788.27],[1977,5086.05],[1978,5430.06],[1979,5792.37],[1980,6014.45],[1981,6283.62],[1982,6359.83],[1983,6579.72],[1984,6876.8],[1985,7150.61],[1986,6499.97],[1987,6514.54],[1988,6816.1],[1989,6297.59],[1990,5375.31],[1991,4278.33],[1992,2393.03],[1993,1724.67],[1994,1576.71],[1995,1647.82],[1996,1861.57],[1997,2085.64],[1998,2176.23],[1999,2264.09],[2000,2332.22],[2001,2472.71],[2002,2637.56],[2003,2961.18],[2004,3167.15],[2005,3505],[2006,3764.4],[2007,4235.19],[2008,4345.66],[2009,4168.7]],"population":[[1800,1072178],[1820,1072178],[1950,3515602],[1951,3579417],[1952,3628347],[1953,3687436],[1954,3759860],[1955,3827154],[1956,3887496],[1957,3936823],[1958,3994787],[1959,4071078],[1960,4146570],[1961,4211113],[1962,4278649],[1963,4344220],[1964,4406832],[1965,4464959],[1966,4518103],[1967,4564785],[1968,4606979],[1969,4650335],[1970,4694491],[1971,4741628],[1972,4786475],[1973,4825850],[1974,4865233],[1975,4897656],[1976,4930036],[1977,4963464],[1978,4991045],[1979,5018606],[1980,5045697],[1981,5073148],[1982,5101213],[1983,5130925],[1984,5161724],[1985,5192957],[1986,5218973],[1987,5239970],[1988,5320248],[1989,5398106],[1990,5426207],[1991,5420156],[1992,5355289],[1993,5247618],[1994,5120809],[1995,5012952],[1996,4934572],[1997,4883476],[1998,4848495],[1999,4815667],[2000,4777209],[2001,4746164],[2002,4728357],[2003,4710921],[2004,4693892],[2005,4677401],[2006,4661473],[2007,4646003],[2008,4630841]],"lifeExpectancy":[[1950,59.8],[1951,60],[1952,60.4],[1953,60.8],[1954,61.2],[1955,61.6],[1956,62],[1957,62.4],[1958,62.81],[1959,63.21],[1960,63.61],[1961,64.02],[1962,64.44],[1963,64.85],[1964,65.27],[1965,65.67],[1966,66.06],[1967,66.43],[1968,66.79],[1969,67.12],[1970,67.44],[1971,67.75],[1972,68.07],[1973,68.39],[1974,68.71],[1975,69],[1976,69.25],[1977,69.45],[1978,69.58],[1979,69.65],[1980,69.69],[1981,69.71],[1982,69.74],[1983,69.81],[1984,69.91],[1985,70.04],[1986,70.18],[1987,70.31],[1988,70.41],[1989,70.47],[1990,70.51],[1991,70.54],[1992,70.57],[1993,70.61],[1994,70.68],[1995,70.77],[1996,70.88],[1997,71],[1998,71.13],[1999,71.25],[2000,71.36],[2001,71.45],[2002,71.5],[2003,71.53],[2004,71.54],[2005,71.55],[2006,71.57],[2007,71.63],[2008,71.72],[2009,71.86]]},{"name":"Germany","region":"Europe & Central Asia","income":[[1800,1695.68],[1820,1945.75],[1821,1959.18],[1822,1972.7],[1823,1986.32],[1824,2000.03],[1825,2013.83],[1826,2027.73],[1827,2041.73],[1828,2055.82],[1829,2070.01],[1830,2084.3],[1831,2091.83],[1832,2099.4],[1833,2106.99],[1834,2114.61],[1835,2122.26],[1836,2129.93],[1837,2137.64],[1838,2145.37],[1839,2153.13],[1840,2160.91],[1841,2168.73],[1842,2176.57],[1843,2184.44],[1844,2192.34],[1845,2200.27],[1846,2208.23],[1847,2216.21],[1848,2224.23],[1849,2232.27],[1850,2240.35],[1851,2209.1],[1852,2237.39],[1853,2218],[1854,2264.94],[1855,2229.04],[1856,2403.11],[1857,2502.1],[1858,2470.35],[1859,2456.18],[1860,2572.49],[1861,2483.9],[1862,2581.56],[1863,2744.35],[1864,2793.09],[1865,2776.92],[1866,2779.13],[1867,2770.95],[1868,2920.7],[1869,2919.02],[1870,2885.95],[1871,2850.62],[1872,3030.79],[1873,3136.39],[1874,3333],[1875,3314.78],[1876,3249.37],[1877,3189.68],[1878,3300.1],[1879,3183.46],[1880,3124.99],[1881,3178.15],[1882,3208.28],[1883,3363.31],[1884,3418.47],[1885,3477.8],[1886,3470.18],[1887,3570.4],[1888,3673.25],[1889,3733.56],[1890,3809.81],[1891,3760.75],[1892,3874.94],[1893,4025.82],[1894,4076.25],[1895,4215.1],[1896,4299.15],[1897,4354.02],[1898,4468.91],[1899,4558.78],[1900,4683.8],[1901,4505.8],[1902,4540.54],[1903,4720.51],[1904,4838.51],[1905,4870.98],[1906,4946.45],[1907,5091.98],[1908,5106.79],[1909,5138.79],[1910,5253.25],[1911,5348.6],[1912,5529.51],[1913,5724.59],[1914,4800.75],[1915,4549.24],[1916,4604.93],[1917,4632.51],[1918,4681.28],[1919,4058.48],[1920,4386.95],[1921,4829.84],[1922,5227.11],[1923,4314.74],[1924,5019.72],[1925,5542.04],[1926,5656.53],[1927,6184.52],[1928,6418.17],[1929,6357.62],[1930,6235.14],[1931,5730.09],[1932,5275.27],[1933,5579.88],[1934,6054.45],[1935,6464.97],[1936,6984.27],[1937,7351.76],[1938,7836.14],[1939,8483.68],[1940,8477.82],[1941,8962.15],[1942,9007.31],[1943,9242.26],[1944,9546.85],[1945,7083.98],[1946,3478.75],[1947,3822.81],[1948,4446.78],[1949,5150.97],[1950,6090.03],[1951,6599.92],[1952,7144.11],[1953,7697.25],[1954,8233.48],[1955,9096.83],[1956,9692.61],[1957,10187.83],[1958,10571.59],[1959,11261.93],[1960,12091.34],[1961,12478.83],[1962,12902.46],[1963,13158.88],[1964,13844.37],[1965,14414.59],[1966,14731.37],[1967,14745.63],[1968,15479.67],[1969,16383.41],[1970,17009.19],[1971,17382.08],[1972,18016.18],[1973,18778.23],[1974,18929.76],[1975,18894.57],[1976,19903.97],[1977,20512.92],[1978,21114.59],[1979,21958.81],[1980,22148.27],[1981,22202.51],[1982,22031.53],[1983,22485.38],[1984,23198.33],[1985,23757.88],[1986,24274.56],[1987,24639.19],[1988,25359.06],[1989,25983.63],[1990,24996.14],[1991,26127.06],[1992,26505.3],[1993,26119.46],[1994,26720.64],[1995,27145.96],[1996,27336.47],[1997,27788.88],[1998,28291.6],[1999,28842.66],[2000,29726.88],[2001,30061.4],[2002,30035.8],[2003,29952.94],[2004,30260.66],[2005,30496],[2006,31511.65],[2007,32342.82],[2008,32785.53],[2009,31191.15]],"population":[[1820,24905000],[1821,25260000],[1822,25620000],[1823,25969000],[1824,26307000],[1825,26650000],[1826,26964000],[1827,27249000],[1828,27540000],[1829,27807000],[1830,28045000],[1831,28283000],[1832,28535000],[1833,28801000],[1834,29071000],[1835,29390000],[1836,29702000],[1837,30013000],[1838,30365000],[1839,30746000],[1840,31126000],[1841,31475000],[1842,31787000],[1843,32086000],[1844,32394000],[1845,32743000],[1846,33059000],[1847,33231000],[1848,33289000],[1849,33452000],[1850,33746000],[1851,34055000],[1852,34290000],[1853,34422000],[1854,34531000],[1855,34586000],[1856,34715000],[1857,34979000],[1858,35278000],[1859,35633000],[1860,36049000],[1861,36435000],[1862,36788000],[1863,37184000],[1864,37602000],[1865,37955000],[1866,38193000],[1867,38440000],[1868,38637000],[1869,38914000],[1870,39231000],[1871,39456000],[1872,39691000],[1873,40017000],[1874,40450000],[1875,40897000],[1876,41491000],[1877,42034000],[1878,42546000],[1879,43052000],[1880,43500000],[1881,43827000],[1882,44112000],[1883,44404000],[1884,44777000],[1885,45084000],[1886,45505000],[1887,46001000],[1888,46538000],[1889,47083000],[1890,47607000],[1891,48129000],[1892,48633000],[1893,49123000],[1894,49703000],[1895,50363000],[1896,51111000],[1897,51921000],[1898,52753000],[1899,53592000],[1900,54388000],[1901,55214000],[1902,56104000],[1903,56963000],[1904,57806000],[1905,58644000],[1906,59481000],[1907,60341000],[1908,61187000],[1909,62038000],[1910,62884000],[1911,63852000],[1912,64457000],[1913,65058000],[1914,66096000],[1915,66230000],[1916,66076000],[1917,65763000],[1918,65237000],[1919,60547000],[1920,60894000],[1921,61573000],[1922,61900000],[1923,62307000],[1924,62697000],[1925,63166000],[1926,63630000],[1927,64023000],[1928,64393000],[1929,64739000],[1930,65084000],[1931,65423000],[1932,65716000],[1933,66027000],[1934,66409000],[1935,66871000],[1936,67349000],[1937,67831000],[1938,68558000],[1939,69286000],[1940,69835000],[1941,70244000],[1942,70834000],[1943,70411000],[1944,69865000],[1945,67000000],[1946,64678000],[1947,66094000],[1948,67295000],[1949,67991000],[1950,68374572],[1951,68875884],[1952,69145952],[1953,69550236],[1954,69868115],[1955,70195612],[1956,70602518],[1957,71019069],[1958,71488167],[1959,72013853],[1960,72480869],[1961,73123148],[1962,73739117],[1963,74340260],[1964,74954262],[1965,75638851],[1966,76206173],[1967,76368453],[1968,76584401],[1969,77143888],[1970,77783164],[1971,78354709],[1972,78717088],[1973,78950220],[1974,78966137],[1975,78682325],[1976,78298957],[1977,78160773],[1978,78066074],[1979,78081292],[1980,78297904],[1981,78401830],[1982,78335266],[1983,78121655],[1984,77855422],[1985,77684907],[1986,77713485],[1987,77718298],[1988,78030572],[1989,78644914],[1990,79380394],[1991,79984244],[1992,80597764],[1993,81132272],[1994,81414164],[1995,81653702],[1996,81890667],[1997,82011073],[1998,82023672],[1999,82074778],[2000,82187909],[2001,82280551],[2002,82350671],[2003,82398326],[2004,82424609],[2005,82431390],[2006,82422299],[2007,82400996],[2008,82369548]],"lifeExpectancy":[[1800,38.37],[1875,38.37],[1885,39.44],[1895,42.38],[1905,45.45],[1911,49],[1915,40.52],[1925,57.42],[1935,61.5],[1939,62.6],[1940,62.26],[1941,62.19],[1942,59.64],[1943,57.76],[1944,52.66],[1945,46.13],[1946,60.51],[1950,66.78],[1951,66.96],[1952,67.33],[1953,67.69],[1954,68.03],[1955,68.36],[1956,68.68],[1957,68.98],[1958,69.27],[1959,69.54],[1960,69.79],[1961,70.01],[1962,70.21],[1963,70.38],[1964,70.52],[1965,70.62],[1966,70.7],[1967,70.74],[1968,70.77],[1969,70.79],[1970,70.83],[1971,70.9],[1972,71.01],[1973,71.18],[1974,71.4],[1975,71.67],[1976,71.97],[1977,72.29],[1978,72.6],[1979,72.9],[1980,73.18],[1981,73.43],[1982,73.67],[1983,73.9],[1984,74.11],[1985,74.32],[1986,74.54],[1987,74.77],[1988,75],[1989,75.25],[1990,75.39],[1991,75.61],[1992,76.07],[1993,76.15],[1994,76.47],[1995,76.66],[1996,76.9],[1997,77.35],[1998,77.7],[1999,77.94],[2000,78.21],[2001,78.58],[2002,78.67],[2003,78.75],[2004,79.34],[2005,79.48],[2006,79.81],[2007,79.98],[2008,80.06],[2009,80.08]]},{"name":"Greece","region":"Europe & Central Asia","income":[[1800,934.41],[1801,935.9],[1802,937.38],[1803,938.87],[1804,940.36],[1805,941.85],[1806,943.34],[1807,944.84],[1808,946.33],[1809,947.84],[1810,949.34],[1811,950.84],[1812,952.35],[1813,953.86],[1814,955.38],[1815,956.89],[1816,958.41],[1817,959.93],[1818,961.45],[1819,962.98],[1820,964.5],[1821,972.3],[1822,980.15],[1823,988.07],[1824,996.05],[1825,1004.1],[1826,1012.21],[1827,1020.39],[1828,1028.64],[1829,1036.95],[1830,1045.33],[1831,1053.77],[1832,1062.29],[1833,1070.87],[1834,1079.52],[1835,1088.24],[1836,1097.04],[1837,1105.9],[1838,1114.84],[1839,1123.84],[1840,1132.92],[1841,1142.08],[1842,1151.31],[1843,1160.61],[1844,1169.99],[1845,1179.44],[1846,1188.97],[1847,1198.57],[1848,1208.26],[1849,1218.02],[1850,1227.86],[1851,1232.5],[1852,1237.16],[1853,1241.83],[1854,1246.52],[1855,1251.23],[1856,1255.96],[1857,1260.71],[1858,1265.47],[1859,1270.25],[1860,1275.05],[1861,1279.87],[1862,1284.7],[1863,1289.56],[1864,1294.43],[1865,1299.32],[1866,1304.23],[1867,1309.15],[1868,1314.1],[1869,1319.07],[1870,1324.05],[1871,1343.5],[1872,1363.25],[1873,1383.28],[1874,1403.6],[1875,1424.23],[1876,1445.15],[1877,1466.39],[1878,1487.94],[1879,1509.8],[1880,1531.98],[1881,1554.5],[1882,1577.34],[1883,1600.51],[1884,1624.03],[1885,1647.9],[1886,1672.11],[1887,1696.68],[1888,1721.61],[1889,1746.91],[1890,1772.58],[1891,1797.03],[1892,1821.83],[1893,1846.97],[1894,1872.45],[1895,1898.29],[1896,1924.48],[1897,1951.04],[1898,1977.96],[1899,2005.25],[1900,2032.92],[1901,2058.71],[1902,2084.84],[1903,2111.29],[1904,2138.08],[1905,2165.21],[1906,2192.68],[1907,2220.5],[1908,2248.67],[1909,2277.21],[1910,2306.1],[1911,2335.36],[1912,2364.99],[1913,2395],[1914,2455.06],[1915,2516.63],[1916,2579.74],[1917,2644.43],[1918,2710.74],[1919,2778.72],[1920,2848.4],[1921,2919.83],[1922,2993.27],[1923,3034.8],[1924,3144.67],[1925,3276.03],[1926,3342.01],[1927,3409.21],[1928,3435.92],[1929,3606.72],[1930,3482.77],[1931,3296.69],[1932,3539.75],[1933,3709.49],[1934,3751.22],[1935,3852.51],[1936,3819.78],[1937,4313.84],[1938,4176.55],[1939,4121.41],[1940,3478.46],[1941,2936.62],[1942,2477.95],[1943,2085.53],[1944,1756.5],[1945,1477.82],[1946,2188.35],[1947,2786.57],[1948,2847.04],[1949,2962.29],[1950,3040.41],[1951,3278.15],[1952,3269.31],[1953,3682.62],[1954,3766.01],[1955,4019.81],[1956,4333.64],[1957,4585.5],[1958,4759.42],[1959,4890.42],[1960,5067.26],[1961,5473.18],[1962,5653.18],[1963,6213.79],[1964,6709.76],[1965,7316.29],[1966,7717.14],[1967,8056.35],[1968,8581.63],[1969,9410.71],[1970,10150.88],[1971,10842.06],[1972,12129.8],[1973,12566.7],[1974,12082.49],[1975,12712.2],[1976,13362.2],[1977,13630.27],[1978,14376.56],[1979,14743.85],[1980,14877.19],[1981,14774],[1982,14767.21],[1983,14766.5],[1984,15123.24],[1985,15560.95],[1986,15791.5],[1987,15704.89],[1988,16414.35],[1989,16988.41],[1990,16851.57],[1991,17193.36],[1992,17213.67],[1993,16868.79],[1994,17153.8],[1995,17492.91],[1996,17894.05],[1997,18531.3],[1998,19146.38],[1999,19803.27],[2000,20675.21],[2001,21585.57],[2002,22416.45],[2003,23532.36],[2004,24587.16],[2005,25520],[2006,26618.65],[2007,27746.49],[2008,28242.04],[2009,27626.11]],"population":[[1820,2312000],[1821,2333000],[1822,2355000],[1823,2376000],[1824,2398000],[1825,2420000],[1826,2443000],[1827,2465000],[1828,2488000],[1829,2511000],[1830,2534000],[1831,2557000],[1832,2581000],[1833,2605000],[1834,2629000],[1835,2653000],[1836,2677000],[1837,2702000],[1838,2727000],[1839,2752000],[1840,2777000],[1841,2803000],[1842,2829000],[1843,2855000],[1844,2881000],[1845,2908000],[1846,2934000],[1847,2961000],[1848,2989000],[1849,3016000],[1850,3044000],[1851,3072000],[1852,3100000],[1853,3129000],[1854,3158000],[1855,3187000],[1856,3216000],[1857,3246000],[1858,3273000],[1859,3306000],[1860,3336000],[1861,3367000],[1862,3398000],[1863,3430000],[1864,3461000],[1865,3493000],[1866,3525000],[1867,3558000],[1868,3591000],[1869,3621000],[1870,3657000],[1871,3694000],[1872,3732000],[1873,3770000],[1874,3809000],[1875,3848000],[1876,3887000],[1877,3927000],[1878,3967000],[1879,4008000],[1880,4049000],[1881,4090000],[1882,4132000],[1883,4174000],[1884,4217000],[1885,4260000],[1886,4303000],[1887,4347000],[1888,4392000],[1889,4437000],[1890,4482000],[1891,4528000],[1892,4574000],[1893,4621000],[1894,4668000],[1895,4716000],[1896,4764000],[1897,4813000],[1898,4862000],[1899,4912000],[1900,4962000],[1901,4997000],[1902,5032000],[1903,5067000],[1904,5102000],[1905,5138000],[1906,5174000],[1907,5210000],[1908,5246000],[1909,5283000],[1910,5320000],[1911,5355000],[1912,5390000],[1913,5425000],[1914,5463000],[1915,5502000],[1916,5541000],[1917,5580000],[1918,5620000],[1919,5660000],[1920,5700000],[1921,5837000],[1922,5890000],[1923,6010000],[1924,6000000],[1925,5958000],[1926,6042000],[1927,6127000],[1928,6205000],[1929,6275000],[1930,6351000],[1931,6440000],[1932,6516000],[1933,6591000],[1934,6688000],[1935,6793000],[1936,6886000],[1937,6973000],[1938,7061000],[1939,7156000],[1940,7280000],[1941,7362000],[1942,7339000],[1943,7297000],[1944,7284000],[1945,7322000],[1946,7418000],[1947,7529000],[1948,7749000],[1949,7856000],[1950,7566028],[1951,7646402],[1952,7733250],[1953,7817095],[1954,7893412],[1955,7965538],[1956,8031013],[1957,8096218],[1958,8173129],[1959,8258162],[1960,8327405],[1961,8398050],[1962,8448233],[1963,8479625],[1964,8510429],[1965,8550333],[1966,8613651],[1967,8716441],[1968,8740765],[1969,8772764],[1970,8792806],[1971,8831036],[1972,8888628],[1973,8929086],[1974,8962023],[1975,9046542],[1976,9167190],[1977,9308479],[1978,9429959],[1979,9548258],[1980,9642505],[1981,9729350],[1982,9786480],[1983,9840526],[1984,9887169],[1985,9923253],[1986,9951370],[1987,9974490],[1988,9982723],[1989,10030765],[1990,10129603],[1991,10250880],[1992,10325429],[1993,10382995],[1994,10429826],[1995,10457554],[1996,10479420],[1997,10502372],[1998,10520068],[1999,10536749],[2000,10559110],[2001,10581515],[2002,10603863],[2003,10625945],[2004,10647529],[2005,10668354],[2006,10688058],[2007,10706290],[2008,10722816]],"lifeExpectancy":[[1800,36.6],[1877,36.6],[1882,37.1],[1887,37.7],[1892,38.5],[1897,39.4],[1902,40.4],[1907,41.2],[1920,44.65],[1922,45.2],[1927,48.2],[1928,46.17],[1929,49.97],[1932,50.5],[1937,52.8],[1940,54.34],[1950,64.97],[1951,65.2],[1952,65.65],[1953,66.09],[1954,66.51],[1955,66.92],[1956,67.31],[1957,67.68],[1958,68.04],[1959,68.39],[1960,68.73],[1961,69.05],[1962,69.37],[1963,69.68],[1964,69.98],[1965,70.28],[1966,70.57],[1967,70.86],[1968,71.14],[1969,71.41],[1970,71.68],[1971,71.95],[1972,72.21],[1973,72.47],[1974,72.73],[1975,72.99],[1976,73.27],[1977,73.55],[1978,73.84],[1979,74.15],[1980,74.46],[1981,74.77],[1982,75.09],[1983,75.41],[1984,75.72],[1985,76.02],[1986,76.3],[1987,76.56],[1988,76.79],[1989,77],[1990,77.15],[1991,77.26],[1992,77.31],[1993,77.31],[1994,77.28],[1995,77.23],[1996,77.2],[1997,77.2],[1998,77.26],[1999,77.37],[2000,77.53],[2001,77.74],[2002,77.97],[2003,78.21],[2004,78.44],[2005,78.67],[2006,78.88],[2007,79.09],[2008,79.3],[2009,79.5]]},{"name":"Hungary","region":"Europe & Central Asia","income":[[1800,1390.67],[1820,1419.84],[1870,2080.32],[1890,2806.25],[1900,3206.12],[1910,3812.26],[1913,3998.03],[1920,3256.68],[1924,3643.92],[1925,4343.45],[1926,4120.45],[1927,4263.81],[1928,4602.36],[1929,4718.3],[1930,4580.82],[1931,4322.77],[1932,4178.09],[1933,4523.85],[1934,4515.95],[1935,4709.54],[1936,4989.63],[1937,4846.07],[1938,5060.54],[1939,5408.1],[1940,5005.28],[1941,5004.94],[1942,5227.43],[1946,3279.36],[1947,3379.93],[1948,4192.74],[1949,4486.51],[1950,4726.19],[1951,5135.95],[1952,5263.67],[1953,5308.49],[1954,5431.86],[1955,5850.99],[1956,5537.72],[1957,6040.18],[1958,6416.73],[1959,6639.87],[1960,6954.29],[1961,7272.79],[1962,7550.36],[1963,7942.53],[1964,8362.48],[1965,8403.48],[1966,8854.42],[1967,9326.64],[1968,9403.18],[1969,9647.24],[1970,9581.97],[1971,9982.61],[1972,10168.66],[1973,10663.67],[1974,10892.94],[1975,11062.46],[1976,11035.57],[1977,11674.84],[1978,11917.24],[1979,11912.91],[1980,12018.55],[1981,12102.6],[1982,12545.99],[1983,12435.83],[1984,12786.88],[1985,12495.2],[1986,12767.16],[1987,12986.48],[1988,13399.3],[1989,13155.25],[1990,12308.91],[1991,10851.83],[1992,10535.63],[1993,10494.88],[1994,10821.26],[1995,11000.41],[1996,11169.79],[1997,11712.78],[1998,12319.41],[1999,12874.42],[2000,13592.35],[2001,14185.52],[2002,14843.94],[2003,15506.2],[2004,16291.2],[2005,17014],[2006,17725.9],[2007,17916.21],[2008,18068.58],[2009,16982.8]],"population":[[1820,4146000],[1850,5161000],[1870,5917000],[1890,6622000],[1900,7127000],[1910,7644000],[1913,7840000],[1920,7950000],[1921,8029000],[1922,8103000],[1923,8173000],[1924,8232000],[1925,8299000],[1926,8383000],[1927,8454000],[1928,8520000],[1929,8583000],[1930,8649000],[1931,8723000],[1932,8785000],[1933,8848000],[1934,8919000],[1935,8985000],[1936,9046000],[1937,9107000],[1938,9167000],[1939,9227000],[1940,9287000],[1941,9344000],[1942,9396000],[1943,9442000],[1944,9497000],[1945,9024000],[1946,9042000],[1947,9079000],[1948,9158000],[1949,9250000],[1950,9338000],[1951,9423000],[1952,9504000],[1953,9595000],[1954,9706000],[1955,9825000],[1956,9911000],[1957,9839000],[1958,9882000],[1959,9937000],[1960,9983512],[1961,10029000],[1962,10063000],[1963,10091000],[1964,10124000],[1965,10152934],[1966,10184561],[1967,10223422],[1968,10263542],[1969,10302814],[1970,10337004],[1971,10364869],[1972,10394091],[1973,10425984],[1974,10471272],[1975,10531820],[1976,10588729],[1977,10637171],[1978,10673300],[1979,10698234],[1980,10711122],[1981,10711848],[1982,10705535],[1983,10689463],[1984,10668095],[1985,10648713],[1986,10630563],[1987,10612740],[1988,10442500],[1989,10397959],[1990,10371878],[1991,10364737],[1992,10348684],[1993,10329012],[1994,10312714],[1995,10295874],[1996,10273591],[1997,10244684],[1998,10211127],[1999,10172673],[2000,10137449],[2001,10109467],[2002,10083313],[2003,10057745],[2004,10032375],[2005,10006835],[2006,9981334],[2007,9956108],[2008,9930915]],"lifeExpectancy":[[1800,36],[1890,36],[1900,37.34],[1910,39.76],[1920,42.06],[1930,50.21],[1941,56.56],[1949,61.29],[1950,62.07],[1951,62.46],[1952,64.03],[1953,63.87],[1954,65.43],[1955,66.88],[1956,66.04],[1957,66.41],[1958,67.42],[1959,67.32],[1960,68.09],[1961,69.02],[1962,67.96],[1963,68.98],[1964,69.48],[1965,69.17],[1966,69.93],[1967,69.5],[1968,69.33],[1969,69.4],[1970,69.24],[1971,69.13],[1972,69.76],[1973,69.63],[1974,69.35],[1975,69.4],[1976,69.69],[1977,69.95],[1978,69.49],[1979,69.7],[1980,69.11],[1981,69.17],[1982,69.39],[1983,68.95],[1984,68.99],[1985,68.93],[1986,69.14],[1987,69.61],[1988,70],[1989,69.44],[1990,69.41],[1991,69.46],[1992,69.21],[1993,69.25],[1994,69.68],[1995,70.08],[1996,70.67],[1997,71.07],[1998,71],[1999,71.14],[2000,71.86],[2001,72.49],[2002,72.61],[2003,72.63],[2004,73.04],[2005,72.99],[2006,73.45],[2007,73.45],[2008,73.48],[2009,73.67]]},{"name":"Iceland","region":"Europe & Central Asia","income":[[1800,801.9],[1820,828.93],[1870,1416.21],[1871,1441.22],[1872,1436.14],[1873,1501.2],[1874,1546.62],[1875,1539.8],[1876,1514.68],[1877,1546.88],[1878,1604.6],[1879,1698.15],[1880,1799.25],[1881,1802.69],[1882,1609.07],[1883,1547.32],[1884,1565.79],[1885,1599.16],[1886,1604.51],[1887,1577.48],[1888,1632.08],[1889,1701.73],[1890,1773.61],[1891,1816.24],[1892,1932.36],[1893,2057.61],[1894,2080.31],[1895,2035.37],[1896,2075.54],[1897,2062],[1898,2000.08],[1899,1997.73],[1900,2073.92],[1901,2163.93],[1902,2223.26],[1903,2222.88],[1904,2225.98],[1905,2377.91],[1906,2430.86],[1907,2524.6],[1908,2504.78],[1909,2476.25],[1910,2651.74],[1911,2763.78],[1912,2783.22],[1913,2908.62],[1914,2843.71],[1915,2789.84],[1916,2459.7],[1917,2406.44],[1918,2264.74],[1919,2622.11],[1920,2210.37],[1921,2429.41],[1922,2725.28],[1923,2576.98],[1924,2745.48],[1925,2739.43],[1926,2947.87],[1927,3236.57],[1928,3359.91],[1929,3552.27],[1930,3926.26],[1931,3864.34],[1932,3688.39],[1933,4066.56],[1934,4094.87],[1935,3943.75],[1936,3934.71],[1937,4083.18],[1938,4083.27],[1939,4538.18],[1940,4773.73],[1941,5411.37],[1942,6238.02],[1943,6574.81],[1944,7112.1],[1945,7562.67],[1946,7759.22],[1947,8431.86],[1948,8438.73],[1949,8116.16],[1950,7750.29],[1951,7468.81],[1952,7267.69],[1953,8211.29],[1954,8800.72],[1955,9458.67],[1956,9489.02],[1957,9244],[1958,9789.87],[1959,9768.93],[1960,9890.07],[1961,9724.49],[1962,10350.16],[1963,11221.63],[1964,12133.87],[1965,12794.88],[1966,13701.27],[1967,13319.9],[1968,12441.44],[1969,12659.11],[1970,13532.84],[1971,15128.83],[1972,15798.06],[1973,16670.02],[1974,17375.59],[1975,17297.44],[1976,18179.25],[1977,19654.96],[1978,20649.68],[1979,21453.78],[1980,22434.86],[1981,23121.41],[1982,23269.61],[1983,22499.9],[1984,23215.83],[1985,23821.71],[1986,25107.72],[1987,26923.21],[1988,26435.22],[1989,26317.46],[1990,26372.88],[1991,26332.62],[1992,25144.39],[1993,25030.86],[1994,25941.54],[1995,25840.49],[1996,27027.25],[1997,28061.1],[1998,29256.7],[1999,30042.94],[2000,31092.03],[2001,31830.54],[2002,31163.2],[2003,31937.01],[2004,34279.18],[2005,35630],[2006,36326.1],[2007,37787.48],[2008,37782.95],[2009,34989.73]],"population":[[1800,61428],[1820,61428],[1950,142938],[1951,145604],[1952,147962],[1953,151036],[1954,154563],[1955,158044],[1956,161358],[1957,165110],[1958,168771],[1959,172314],[1960,175860],[1961,178905],[1962,182053],[1963,185481],[1964,188847],[1965,192288],[1966,195610],[1967,198676],[1968,201245],[1969,202920],[1970,204104],[1971,206092],[1972,209275],[1973,212364],[1974,215324],[1975,218031],[1976,220133],[1977,221823],[1978,223587],[1979,225749],[1980,228161],[1981,230803],[1982,233997],[1983,237041],[1984,239498],[1985,241403],[1986,242999],[1987,244676],[1988,249885],[1989,252746],[1990,254719],[1991,256831],[1992,259012],[1993,261270],[1994,266075],[1995,267527],[1996,269000],[1997,271192],[1998,274000],[1999,277280],[2000,281043],[2001,284812],[2002,288030],[2003,291064],[2004,293966],[2005,296737],[2006,299388],[2007,301931],[2008,304367]],"lifeExpectancy":[[1800,32.4],[1838,32.4],[1839,27.95],[1840,31.97],[1841,40.22],[1842,40.13],[1843,25.39],[1844,42.9],[1845,41.35],[1846,18.31],[1847,32.94],[1848,41.39],[1849,37.14],[1850,36.61],[1851,30.01],[1852,42.1],[1853,48.6],[1854,43.14],[1855,38.15],[1856,42.34],[1857,39.49],[1858,34.84],[1859,29.67],[1860,19.76],[1861,27.09],[1862,26.96],[1863,35.11],[1864,34.81],[1865,34.21],[1866,27.2],[1867,37.54],[1868,34.64],[1869,28.03],[1870,38.37],[1871,35.02],[1872,25.15],[1873,36.61],[1874,39.62],[1875,36.54],[1876,40.25],[1877,44.64],[1878,41.61],[1879,39.52],[1880,42.32],[1881,35.82],[1882,17.74],[1883,30.27],[1884,42.19],[1885,45.46],[1886,44.97],[1887,40.6],[1888,46.8],[1889,52.47],[1890,36.58],[1891,47.49],[1892,52.73],[1893,52.58],[1894,44.79],[1895,52.52],[1896,53.22],[1897,48.52],[1898,44.2],[1899,49.79],[1900,46.64],[1901,52.98],[1902,50.52],[1903,48.84],[1904,52.66],[1905,49.51],[1906,53.58],[1907,49.74],[1908,45.79],[1909,52.36],[1910,52.67],[1911,55.47],[1912,56],[1913,58.95],[1914,51.92],[1915,53.66],[1916,54.53],[1917,59.02],[1918,51.07],[1919,58.49],[1920,54.58],[1921,54.21],[1922,56.95],[1923,57.67],[1924,54],[1925,58.23],[1926,60.79],[1927,58.12],[1928,61.81],[1929,60.55],[1930,60.23],[1931,60.83],[1932,62.16],[1933,63.02],[1934,63.37],[1935,59.49],[1936,62.75],[1937,63.52],[1938,65.09],[1939,65.99],[1940,65.79],[1941,63.18],[1942,64.12],[1943,65.22],[1944,66.8],[1945,67.53],[1946,68.56],[1947,69.39],[1948,70.17],[1949,71.44],[1950,71.01],[1951,71.05],[1952,72.49],[1953,72.31],[1954,73.36],[1955,73.3],[1956,72.98],[1957,73.47],[1958,73.43],[1959,72.66],[1960,74.09],[1961,73.47],[1962,73.68],[1963,72.98],[1964,73.57],[1965,73.84],[1966,73.23],[1967,73.73],[1968,73.94],[1969,73.71],[1970,73.81],[1971,73.55],[1972,74.46],[1973,74.31],[1974,74.37],[1975,75.35],[1976,76.71],[1977,76.11],[1978,76.42],[1979,76.63],[1980,76.66],[1981,76.35],[1982,76.99],[1983,76.63],[1984,77.43],[1985,77.56],[1986,78.09],[1987,77.23],[1988,77.08],[1989,78.15],[1990,77.98],[1991,77.94],[1992,78.77],[1993,78.98],[1994,79.24],[1995,78.04],[1996,78.84],[1997,78.95],[1998,79.67],[1999,79.46],[2000,79.72],[2001,80.64],[2002,80.5],[2003,81.06],[2004,80.95],[2005,81.43],[2006,81.12],[2007,81.31],[2008,81.85],[2009,81.95]]},{"name":"Ireland","region":"Europe & Central Asia","income":[[1800,1213.16],[1820,1255.19],[1821,1273],[1822,1291.06],[1823,1309.38],[1824,1327.97],[1825,1346.81],[1826,1365.92],[1827,1385.3],[1828,1404.96],[1829,1424.9],[1830,1445.12],[1831,1465.63],[1832,1486.42],[1833,1507.52],[1834,1528.91],[1835,1550.6],[1836,1572.61],[1837,1594.92],[1838,1617.56],[1839,1640.51],[1840,1663.79],[1841,1687.4],[1842,1711.34],[1843,1735.63],[1844,1760.26],[1845,1472.74],[1846,1232.18],[1847,1400],[1848,1232],[1849,1200],[1850,1550],[1851,1800],[1852,1970.3],[1853,1998.25],[1854,2026.61],[1855,2055.37],[1856,2084.54],[1857,2114.12],[1858,2144.12],[1859,2174.54],[1860,2205.4],[1861,2236.69],[1862,2268.43],[1863,2300.62],[1864,2333.27],[1865,2366.38],[1866,2399.96],[1867,2434.01],[1868,2468.55],[1869,2503.58],[1870,2539.11],[1871,2564.79],[1872,2590.73],[1873,2616.93],[1874,2643.4],[1875,2670.13],[1876,2697.13],[1877,2724.41],[1878,2751.97],[1879,2779.8],[1880,2807.91],[1881,2836.31],[1882,2864.99],[1883,2893.97],[1884,2923.24],[1885,2952.8],[1886,2982.66],[1887,3012.83],[1888,3043.3],[1889,3074.08],[1890,3105.17],[1891,3136.57],[1892,3168.29],[1893,3200.34],[1894,3232.7],[1895,3265.4],[1896,3298.42],[1897,3331.78],[1898,3365.48],[1899,3399.51],[1900,3433.9],[1901,3468.62],[1902,3503.7],[1903,3539.14],[1904,3574.93],[1905,3611.09],[1906,3647.61],[1907,3684.5],[1908,3721.76],[1909,3759.4],[1910,3797.42],[1911,3835.83],[1912,3874.62],[1913,3913.81],[1914,3876.19],[1915,3838.93],[1916,3802.03],[1917,3765.48],[1918,3729.28],[1919,3693.44],[1920,3657.94],[1921,3622.77],[1922,3716.68],[1923,3682.89],[1924,3674.88],[1925,3680.34],[1926,3678.42],[1927,3795.01],[1928,3915.26],[1929,4039.53],[1930,4144.23],[1931,4250.85],[1932,4126.9],[1933,4005.44],[1934,4122.34],[1935,4242.7],[1936,4366.06],[1937,4229.22],[1938,4366.34],[1939,4365.92],[1940,4365.8],[1941,4365.89],[1942,4365.68],[1943,4365.62],[1944,4365.67],[1945,4318.47],[1946,4365.83],[1947,4423.12],[1948,4621.03],[1949,4869.55],[1950,4939.18],[1951,5069.59],[1952,5210.28],[1953,5359.59],[1954,5427.05],[1955,5607.71],[1956,5574.54],[1957,5599.08],[1958,5535.12],[1959,5776.53],[1960,6125.35],[1961,6449],[1962,6631.6],[1963,6896.75],[1964,7131.74],[1965,7225.83],[1966,7267.29],[1967,7655.57],[1968,8253.11],[1969,8710.47],[1970,8867.96],[1971,9088.5],[1972,9530.77],[1973,9822.55],[1974,10073.82],[1975,10465.52],[1976,10445.81],[1977,11150.98],[1978,11800.94],[1979,11967.79],[1980,12217.02],[1981,12467.88],[1982,12618.32],[1983,12501.69],[1984,12953.44],[1985,13311.61],[1986,13252.76],[1987,13872.87],[1988,14639.6],[1989,15562.98],[1990,16904.61],[1991,17120.66],[1992,17558.82],[1993,17927.85],[1994,18869.09],[1995,20581.98],[1996,22144.69],[1997,24521.95],[1998,26127.25],[1999,28496.8],[2000,30827.98],[2001,32335.28],[2002,34077.05],[2003,35191.11],[2004,36303.8],[2005,38058],[2006,39093.97],[2007,40501.4],[2008,38533.88],[2009,35692.95]],"population":[[1820,5052603],[1821,5123045],[1822,5170718],[1823,5219102],[1824,5267487],[1825,5316582],[1826,5366390],[1827,5416197],[1828,5466716],[1829,5517947],[1830,5569177],[1831,5621119],[1832,5655984],[1833,5690849],[1834,5725715],[1835,5760580],[1836,5796156],[1837,5831733],[1838,5868021],[1839,5904310],[1840,5940598],[1841,5976886],[1842,5992540],[1843,6006059],[1844,6033097],[1845,6045905],[1846,6040924],[1847,5838137],[1848,5436120],[1849,5162891],[1850,4893931],[1851,4634933],[1852,4508991],[1853,4410800],[1854,4328262],[1855,4279877],[1856,4249993],[1857,4211570],[1858,4191647],[1859,4171013],[1860,4141840],[1861,4118359],[1862,4109821],[1863,4068552],[1864,4013764],[1865,3981033],[1866,3929803],[1867,3904187],[1868,3889245],[1869,3877149],[1870,3855803],[1871,3840861],[1872,3823072],[1873,3791053],[1874,3770419],[1875,3756188],[1876,3755477],[1877,3761169],[1878,3758323],[1879,3746938],[1880,3702112],[1881,3661554],[1882,3629535],[1883,3574747],[1884,3539882],[1885,3514267],[1886,3490786],[1887,3455921],[1888,3416075],[1889,3384767],[1890,3357018],[1891,3329979],[1892,3297249],[1893,3278037],[1894,3265230],[1895,3244595],[1896,3231788],[1897,3223249],[1898,3214711],[1899,3203326],[1900,3179846],[1901,3164192],[1902,3155654],[1903,3143557],[1904,3136442],[1905,3130038],[1906,3129327],[1907,3122211],[1908,3120077],[1909,3121500],[1910,3120077],[1911,3117231],[1912,3107981],[1913,3092327],[1914,3083789],[1915,3043943],[1916,3040385],[1917,3040385],[1918,3045366],[1919,3096596],[1920,3103000],[1921,3096000],[1922,3002000],[1923,3014000],[1924,3005000],[1925,2985000],[1926,2971000],[1927,2957000],[1928,2944000],[1929,2937000],[1930,2927000],[1931,2933000],[1932,2949000],[1933,2962000],[1934,2971000],[1935,2971000],[1936,2967000],[1937,2948000],[1938,2937000],[1939,2934000],[1940,2958000],[1941,2993000],[1942,2963000],[1943,2946000],[1944,2944000],[1945,2952000],[1946,2957000],[1947,2974000],[1948,2985000],[1949,2981000],[1950,2963018],[1951,2959311],[1952,2952156],[1953,2947311],[1954,2936769],[1955,2916133],[1956,2895253],[1957,2878220],[1958,2851522],[1959,2843041],[1960,2832000],[1961,2818300],[1962,2830000],[1963,2850000],[1964,2864000],[1965,2876000],[1966,2884000],[1967,2900100],[1968,2912500],[1969,2925600],[1970,2950100],[1971,2978300],[1972,3024400],[1973,3073200],[1974,3124200],[1975,3177300],[1976,3227800],[1977,3271900],[1978,3314000],[1979,3368200],[1980,3401000],[1981,3443400],[1982,3480000],[1983,3504000],[1984,3529000],[1985,3540000],[1986,3540500],[1987,3539900],[1988,3529600],[1989,3513200],[1990,3508200],[1991,3530771],[1992,3557761],[1993,3578349],[1994,3595542],[1995,3613890],[1996,3636179],[1997,3667233],[1998,3707555],[1999,3750141],[2000,3791690],[2001,3835025],[2002,3879155],[2003,3924023],[2004,3969558],[2005,4015676],[2006,4062235],[2007,4109086],[2008,4156119]],"lifeExpectancy":[[1800,37.7],[1845,37.7],[1846,25],[1847,30],[1848,20.55],[1849,20],[1850,35],[1851,37.7],[1859,37.7],[1901,49.4],[1911,53.8],[1926,57.6],[1936,58.9],[1941,60],[1946,61.4],[1950,65.61],[1951,64.78],[1952,67.2],[1953,67.96],[1954,68.07],[1955,68.06],[1956,69.01],[1957,69.06],[1958,69.36],[1959,69.49],[1960,70.23],[1961,69.69],[1962,69.99],[1963,70.24],[1964,70.49],[1965,70.69],[1966,70.2],[1967,71.24],[1968,70.93],[1969,70.85],[1970,70.89],[1971,71.68],[1972,71.02],[1973,71.24],[1974,71.18],[1975,71.76],[1976,71.86],[1977,72],[1978,71.98],[1979,72.25],[1980,72.6],[1981,72.96],[1982,73.23],[1983,73.26],[1984,73.71],[1985,73.65],[1986,73.72],[1987,74.52],[1988,74.55],[1989,74.58],[1990,74.98],[1991,75.14],[1992,75.54],[1993,75.4],[1994,75.91],[1995,75.58],[1996,75.94],[1997,76.08],[1998,76.3],[1999,76.2],[2000,76.66],[2001,77.24],[2002,77.73],[2003,78.24],[2004,78.64],[2005,79.4],[2006,79.73],[2007,79.66],[2008,79.94],[2009,80.16]]},{"name":"Italy","region":"Europe & Central Asia","income":[[1800,1339.84],[1801,1322.44],[1802,1365.94],[1803,1405.09],[1804,1465.99],[1805,1418.14],[1806,1452.94],[1807,1426.84],[1808,1509.5],[1809,1513.85],[1810,1396.39],[1811,1352.89],[1812,1378.99],[1813,1418.14],[1814,1435.54],[1815,1374.64],[1816,1352.89],[1817,1365.94],[1818,1465.99],[1819,1457.29],[1820,1452.94],[1821,1431.19],[1822,1448.59],[1823,1461.64],[1824,1496.45],[1825,1479.05],[1826,1518.2],[1827,1496.45],[1828,1479.05],[1829,1470.35],[1830,1452.94],[1831,1500.8],[1832,1518.2],[1833,1522.55],[1834,1535.6],[1835,1579.1],[1836,1431.19],[1837,1392.04],[1838,1418.14],[1839,1405.09],[1840,1448.59],[1841,1479.05],[1842,1483.4],[1843,1409.44],[1844,1409.44],[1845,1422.49],[1846,1409.44],[1847,1448.59],[1848,1444.24],[1849,1435.54],[1850,1357.24],[1851,1361.59],[1852,1339.84],[1853,1309.39],[1854,1226.74],[1855,1239.79],[1856,1244.14],[1857,1331.14],[1858,1383.34],[1859,1339.84],[1860,1335.49],[1861,1448.59],[1862,1492.1],[1863,1522.55],[1864,1496.45],[1865,1574.75],[1866,1465.99],[1867,1479.05],[1868,1487.75],[1869,1526.9],[1870,1600.85],[1871,1592.15],[1872,1566.05],[1873,1566.05],[1874,1674.8],[1875,1640],[1876,1579.1],[1877,1600.85],[1878,1683.5],[1879,1679.15],[1880,1722.65],[1881,1770.5],[1882,1809.66],[1883,1831.41],[1884,1774.85],[1885,1827.06],[1886,1914.06],[1887,1940.16],[1888,1918.41],[1889,1848.81],[1890,1896.66],[1891,1944.51],[1892,1931.46],[1893,1979.31],[1894,1988.01],[1895,2009.76],[1896,2031.51],[1897,2044.56],[1898,2053.26],[1899,2079.36],[1900,2127.22],[1901,2166.37],[1902,2214.22],[1903,2270.77],[1904,2340.37],[1905,2414.32],[1906,2479.58],[1907,2557.88],[1908,2592.68],[1909,2636.18],[1910,2640.53],[1911,2670.98],[1912,2762.33],[1913,2871.09],[1914,3133.99],[1915,3155.61],[1916,3517.13],[1917,3756.73],[1918,4142.93],[1919,3599.69],[1920,3229.38],[1921,3268.57],[1922,3419.44],[1923,3438.41],[1924,3409.86],[1925,3564.46],[1926,3560.69],[1927,3578.97],[1928,3782.3],[1929,3881.82],[1930,3664.52],[1931,3696.84],[1932,3832.8],[1933,3798.85],[1934,3826.45],[1935,4125.84],[1936,4218.03],[1937,4388.13],[1938,4396.7],[1939,4653.39],[1940,4495.44],[1941,4384.39],[1942,4377.87],[1943,4124.63],[1944,3499.45],[1945,2730.28],[1946,3417.92],[1947,3892.09],[1948,4108.64],[1949,4219.07],[1950,4461.07],[1951,4719.64],[1952,4931.4],[1953,5222.08],[1954,5436.14],[1955,5733.71],[1956,5958.25],[1957,6248.66],[1958,6518.37],[1959,6885.77],[1960,7314.83],[1961,7820.21],[1962,8243.58],[1963,8636.91],[1964,8821.6],[1965,9011.54],[1966,9503.61],[1967,10022.4],[1968,10694.07],[1969,11274.4],[1970,11788.23],[1971,11939.22],[1972,12269.27],[1973,13133.75],[1974,13614.98],[1975,13160.79],[1976,14021.93],[1977,14255.98],[1978,14831.4],[1979,15712.14],[1980,16201.88],[1981,16362.8],[1982,16537.48],[1983,16717.44],[1984,17530.69],[1985,18078.95],[1986,18479.37],[1987,19207.23],[1988,20293.85],[1989,21166.48],[1990,21561.42],[1991,21755.4],[1992,22013.64],[1993,21826.22],[1994,22471.23],[1995,23680.31],[1996,23897.55],[1997,24675.02],[1998,25409.99],[1999,26128.82],[2000,27160.47],[2001,27779.73],[2002,27968.1],[2003,27839.64],[2004,27887.57],[2005,27750],[2006,28141.34],[2007,28342.66],[2008,27753.8],[2009,26160.59]],"population":[[1820,20176000],[1821,20306000],[1822,20437000],[1823,20568000],[1824,20701000],[1825,20834000],[1826,20968000],[1827,21103000],[1828,21239000],[1829,21376000],[1830,21513000],[1831,21652000],[1832,21791000],[1833,21932000],[1834,22073000],[1835,22215000],[1836,22358000],[1837,22502000],[1838,22647000],[1839,22793000],[1840,22939000],[1841,23087000],[1842,23236000],[1843,23385000],[1844,23536000],[1845,23687000],[1846,23840000],[1847,23993000],[1848,24148000],[1849,24303000],[1850,24460000],[1851,24617000],[1852,24776000],[1853,24935000],[1854,25096000],[1855,25257000],[1856,25420000],[1857,25584000],[1858,25748000],[1859,25914000],[1860,26081000],[1861,26249000],[1862,26418000],[1863,26610000],[1864,26814000],[1865,27023000],[1866,27256000],[1867,27411000],[1868,27501000],[1869,27681000],[1870,27888000],[1871,28063000],[1872,28233000],[1873,28387000],[1874,28505000],[1875,28630000],[1876,28837000],[1877,29067000],[1878,29252000],[1879,29425000],[1880,29534000],[1881,29672000],[1882,29898000],[1883,30113000],[1884,30366000],[1885,30644000],[1886,30857000],[1887,31049000],[1888,31243000],[1889,31468000],[1890,31702000],[1891,31892000],[1892,32091000],[1893,32303000],[1894,32513000],[1895,32689000],[1896,32863000],[1897,33078000],[1898,33285000],[1899,33487000],[1900,33672000],[1901,33877000],[1902,34166000],[1903,34436000],[1904,34715000],[1905,35011000],[1906,35297000],[1907,35594000],[1908,35899000],[1909,36213000],[1910,36572000],[1911,36917000],[1912,37150000],[1913,37248000],[1914,37526000],[1915,37982000],[1916,38142000],[1917,37981000],[1918,37520000],[1919,37250000],[1920,37398000],[1921,37691000],[1922,38086000],[1923,38460000],[1924,38810000],[1925,39165000],[1926,39502000],[1927,39848000],[1928,40186000],[1929,40469000],[1930,40791000],[1931,41132000],[1932,41431000],[1933,41753000],[1934,42093000],[1935,42429000],[1936,42750000],[1937,43068000],[1938,43419000],[1939,43865000],[1940,44341000],[1941,44734000],[1942,45004000],[1943,45177000],[1944,45290000],[1945,45442000],[1946,45725000],[1947,46040000],[1948,46381000],[1949,46733000],[1950,47105000],[1951,47418000],[1952,47666000],[1953,47957000],[1954,48299000],[1955,48633000],[1956,48921000],[1957,49182000],[1958,49476000],[1959,49832000],[1960,50197600],[1961,50523200],[1962,50843200],[1963,51198300],[1964,51600200],[1965,51987100],[1966,52331600],[1967,52667100],[1968,52986600],[1969,53317000],[1970,53661100],[1971,54005500],[1972,54365564],[1973,54796843],[1974,55226259],[1975,55571894],[1976,55838536],[1977,56059245],[1978,56240143],[1979,56367710],[1980,56451247],[1981,56502489],[1982,56535636],[1983,56630129],[1984,56696963],[1985,56731215],[1986,56733833],[1987,56729703],[1988,56734027],[1989,56737529],[1990,56742886],[1991,56747462],[1992,56840847],[1993,57026746],[1994,57179460],[1995,57274531],[1996,57367032],[1997,57479469],[1998,57550318],[1999,57603634],[2000,57719337],[2001,57844924],[2002,57926999],[2003,57998353],[2004,58057477],[2005,58103033],[2006,58133509],[2007,58147733],[2008,58145321]],"lifeExpectancy":[[1800,29.01],[1872,29.69],[1873,31.6],[1874,31.75],[1875,31.31],[1876,33.6],[1877,34.88],[1878,34.32],[1879,33.95],[1880,32.74],[1881,34.2],[1882,34.29],[1883,35.18],[1884,36.6],[1885,36.83],[1886,35.1],[1887,35.97],[1888,36.92],[1889,39.05],[1890,38.5],[1891,38.46],[1892,38.84],[1893,39.79],[1894,39.91],[1895,39.61],[1896,40.7],[1897,43.29],[1898,42.33],[1899,43.67],[1900,41.66],[1901,43.52],[1902,42.99],[1903,43.15],[1904,44.43],[1905,43.94],[1906,45.09],[1907,45.45],[1908,43.19],[1909,44.67],[1910,46.75],[1911,44.77],[1912,48.98],[1913,48.46],[1914,49.89],[1915,42.34],[1916,39.27],[1917,37.69],[1918,25.62],[1919,42.1],[1920,45.51],[1921,49.25],[1922,50.01],[1923,51.45],[1924,51.51],[1925,51.31],[1926,50.96],[1927,52.58],[1928,52.67],[1929,52.29],[1930,55.2],[1931,54.78],[1932,54.77],[1933,56.29],[1934,56.86],[1935,56.22],[1936,56.75],[1937,55.49],[1938,56.13],[1939,57.64],[1940,56.95],[1941,54.62],[1942,52.45],[1943,49.19],[1944,52.34],[1945,54.78],[1946,58.97],[1947,61.18],[1948,63.45],[1949,64.11],[1950,65.77],[1951,65.31],[1952,65.94],[1953,66.58],[1954,67.9],[1955,68.25],[1956,67.64],[1957,67.81],[1958,68.87],[1959,69.32],[1960,69.21],[1961,69.85],[1962,69.24],[1963,69.35],[1964,70.4],[1965,70.27],[1966,71.02],[1967,71.06],[1968,70.88],[1969,70.9],[1970,71.66],[1971,71.91],[1972,72.19],[1973,72.13],[1974,72.85],[1975,72.76],[1976,73.11],[1977,73.48],[1978,73.83],[1979,74.16],[1980,74.12],[1981,74.51],[1982,74.98],[1983,74.8],[1984,75.56],[1985,75.67],[1986,76],[1987,76.42],[1988,76.6],[1989,77],[1990,77.06],[1991,77.07],[1992,77.44],[1993,77.72],[1994,77.93],[1995,78.19],[1996,78.52],[1997,78.82],[1998,78.92],[1999,79.32],[2000,79.73],[2001,80.01],[2002,80.25],[2003,80.33],[2004,81.19],[2005,81.18],[2006,81.59],[2007,81.11],[2008,81.24],[2009,81.34]]},{"name":"Kazakhstan","region":"Europe & Central Asia","income":[[1800,585.03],[1820,597.35],[1913,1331.55],[1950,2609.22],[1973,7244.19],[1990,7085.5],[1991,6265.36],[1992,5919.91],[1993,5404.83],[1994,4802.48],[1995,4492.99],[1996,4567.93],[1997,4709.06],[1998,4691.52],[1999,4870.09],[2000,5366.02],[2001,6082.3],[2002,6667.3],[2003,7272.72],[2004,7930.09],[2005,8699],[2006,9437.71],[2007,10185.05],[2008,10500.47],[2009,10612.29]],"population":[[1800,2041282],[1820,2041282],[1950,6693230],[1951,6936060],[1952,7123394],[1953,7260866],[1954,7516649],[1955,7976879],[1956,8413793],[1957,8709753],[1958,9062534],[1959,9499911],[1960,9982014],[1961,10466809],[1962,10945885],[1963,11311646],[1964,11601936],[1965,11902456],[1966,12179771],[1967,12451717],[1968,12691968],[1969,12900122],[1970,13106377],[1971,13324719],[1972,13541694],[1973,13754298],[1974,13971543],[1975,14157075],[1976,14304436],[1977,14454828],[1978,14623619],[1979,14803694],[1980,14966718],[1981,15136447],[1982,15303467],[1983,15466787],[1984,15630279],[1985,15789549],[1986,15946119],[1987,16109358],[1988,16206749],[1989,16265063],[1990,16398131],[1991,16504750],[1992,16542063],[1993,16451625],[1994,16182154],[1995,15878488],[1996,15696091],[1997,15484518],[1998,15247098],[1999,15084623],[2000,15032140],[2001,15052250],[2002,15077224],[2003,15107581],[2004,15143704],[2005,15185844],[2006,15233244],[2007,15284929],[2008,15340533]],"lifeExpectancy":[[1800,26.2],[1863,26.2],[1868,23.58],[1873,23.8],[1897,28.6],[1900,28.1],[1910,30.6],[1926,36.87],[1939,44.47],[1950,54.16],[1951,54.38],[1952,54.81],[1953,55.25],[1954,55.68],[1955,56.11],[1956,56.54],[1957,56.97],[1958,57.4],[1959,57.84],[1960,58.27],[1961,58.71],[1962,59.15],[1963,59.59],[1964,60.04],[1965,60.47],[1966,60.9],[1967,61.31],[1968,61.69],[1969,62.06],[1970,62.4],[1971,62.7],[1972,62.97],[1973,63.21],[1974,63.44],[1975,63.66],[1976,63.88],[1977,64.12],[1978,64.37],[1979,64.65],[1980,64.96],[1981,65.32],[1982,65.71],[1983,66.12],[1984,66.52],[1985,66.87],[1986,67.12],[1987,67.24],[1988,67.22],[1989,67.05],[1990,66.73],[1991,66.27],[1992,65.71],[1993,65.09],[1994,64.49],[1995,63.95],[1996,63.54],[1997,63.3],[1998,63.24],[1999,63.33],[2000,63.56],[2001,63.87],[2002,64.18],[2003,64.45],[2004,64.64],[2005,64.77],[2006,64.86],[2007,64.93],[2008,65.03],[2009,65.18]]},{"name":"Latvia","region":"Europe & Central Asia","income":[[1800,865.19],[1820,883.41],[1913,1969.19],[1965,4078.83],[1966,4110.99],[1967,4444.34],[1968,4596.58],[1969,4651.53],[1970,5470.69],[1971,5845.61],[1972,6095.31],[1973,6395.1],[1974,6651.16],[1975,7050.03],[1976,7350.82],[1977,7488.92],[1978,7635.77],[1979,8000.76],[1980,8278.29],[1981,8578.01],[1982,8728.46],[1983,9127.3],[1984,9596.89],[1985,9502.49],[1986,9893.28],[1987,10063.53],[1988,10512.99],[1989,11044.48],[1990,10217.78],[1991,8960.02],[1992,6151.51],[1993,5948.96],[1994,6169.9],[1995,6191.8],[1996,6488.44],[1997,7143.44],[1998,7604.97],[1999,8028.97],[2000,8649.22],[2001,9396.42],[2002,10094.47],[2003,10879.77],[2004,11888.05],[2005,13218],[2006,14911.56],[2007,16494.88],[2008,15816.36],[2009,13021.94]],"population":[[1800,590588],[1820,590588],[1950,1936498],[1951,1950888],[1952,1964319],[1953,1976212],[1954,1990651],[1955,2002111],[1956,2026333],[1957,2055709],[1958,2072119],[1959,2088934],[1960,2115183],[1961,2145744],[1962,2172829],[1963,2199396],[1964,2227495],[1965,2253604],[1966,2278721],[1967,2301371],[1968,2322031],[1969,2341871],[1970,2361159],[1971,2381641],[1972,2401244],[1973,2421355],[1974,2442473],[1975,2461606],[1976,2476760],[1977,2491407],[1978,2504508],[1979,2514167],[1980,2524543],[1981,2536976],[1982,2552229],[1983,2569826],[1984,2587996],[1985,2606405],[1986,2626695],[1987,2648965],[1988,2664068],[1989,2667309],[1990,2663590],[1991,2651308],[1992,2615869],[1993,2565708],[1994,2523532],[1995,2488008],[1996,2460277],[1997,2435967],[1998,2413173],[1999,2393657],[2000,2376178],[2001,2358232],[2002,2340205],[2003,2322943],[2004,2306306],[2005,2290237],[2006,2274735],[2007,2259810],[2008,2245423]],"lifeExpectancy":[[1800,33],[1860,33],[1896,44.95],[1924,53.7],[1935,58.08],[1950,64.53],[1951,64.93],[1952,65.7],[1953,66.42],[1954,67.08],[1955,67.69],[1956,68.24],[1957,68.72],[1958,69.16],[1959,69.54],[1960,70.3],[1961,70.54],[1962,69.88],[1963,70.29],[1964,71.52],[1965,71.2],[1966,71.16],[1967,70.82],[1968,70.46],[1969,70.2],[1970,70.22],[1971,70.57],[1972,70.25],[1973,70.2],[1974,70.11],[1975,69.28],[1976,69.41],[1977,69.45],[1978,69.35],[1979,68.87],[1980,69.19],[1981,69.13],[1982,69.71],[1983,69.47],[1984,69.51],[1985,69.63],[1986,71.01],[1987,71.05],[1988,70.99],[1989,70.46],[1990,69.51],[1991,69.24],[1992,68.57],[1993,66.78],[1994,65.53],[1995,66.33],[1996,68.92],[1997,69.55],[1998,69.19],[1999,69.98],[2000,70.57],[2001,70.32],[2002,70.67],[2003,71.17],[2004,71.5],[2005,71.24],[2006,71.14],[2007,71.2],[2008,72.52],[2009,72.77]]},{"name":"Lithuania","region":"Europe & Central Asia","income":[[1800,988.79],[1820,1009.61],[1913,2250.5],[1950,4409.94],[1973,11523.46],[1990,13148.26],[1991,12374.36],[1992,9743.51],[1993,8190.02],[1994,7406.2],[1995,7804.17],[1996,8182.69],[1997,8764.9],[1998,9412.97],[1999,9259.81],[2000,9631.65],[2001,10272.37],[2002,11008.68],[2003,12120.35],[2004,13049.48],[2005,14085],[2006,15280.33],[2007,16875.86],[2008,17432.25],[2009,14928.78]],"population":[[1800,778655],[1820,778655],[1950,2553159],[1951,2561579],[1952,2583984],[1953,2593918],[1954,2597435],[1955,2614336],[1956,2641167],[1957,2651630],[1958,2672229],[1959,2717677],[1960,2764864],[1961,2810271],[1962,2850220],[1963,2886180],[1964,2922673],[1965,2959173],[1966,2996683],[1967,3033728],[1968,3068801],[1969,3101819],[1970,3137562],[1971,3177533],[1972,3213271],[1973,3245551],[1974,3276362],[1975,3305195],[1976,3333542],[1977,3361419],[1978,3386988],[1979,3410869],[1980,3435289],[1981,3462341],[1982,3491974],[1983,3523380],[1984,3555054],[1985,3587032],[1986,3619593],[1987,3653339],[1988,3673950],[1989,3681250],[1990,3694836],[1991,3702136],[1992,3700278],[1993,3689004],[1994,3679636],[1995,3673577],[1996,3668316],[1997,3664372],[1998,3661168],[1999,3658454],[2000,3654387],[2001,3645747],[2002,3633232],[2003,3620094],[2004,3607899],[2005,3596617],[2006,3585906],[2007,3575439],[2008,3565205]],"lifeExpectancy":[[1800,28.9],[1870,28.9],[1900,41.7],[1925,50.5],[1950,63.56],[1951,63.87],[1952,64.49],[1953,65.11],[1954,65.73],[1955,66.34],[1956,66.95],[1957,67.55],[1958,68.14],[1959,67.68],[1960,70.28],[1961,70.47],[1962,69.4],[1963,70.58],[1964,71.94],[1965,71.69],[1966,71.85],[1967,71.92],[1968,71.61],[1969,71.22],[1970,71.08],[1971,72.02],[1972,71.26],[1973,71.61],[1974,71.54],[1975,71.15],[1976,71.29],[1977,71.04],[1978,70.83],[1979,70.7],[1980,70.68],[1981,70.66],[1982,71.06],[1983,70.98],[1984,70.49],[1985,70.66],[1986,72.33],[1987,72.14],[1988,71.98],[1989,71.66],[1990,71.37],[1991,70.55],[1992,70.4],[1993,69.01],[1994,68.58],[1995,69.02],[1996,70.15],[1997,70.99],[1998,71.32],[1999,71.71],[2000,72.18],[2001,71.79],[2002,71.98],[2003,72.24],[2004,72.23],[2005,71.7],[2006,71.47],[2007,71.39],[2008,71.84],[2009,71.93]]},{"name":"Luxembourg","region":"Europe & Central Asia","income":[[1800,1145.57],[1820,1184.19],[1913,3505.89],[1950,14554.96],[1951,13543.17],[1952,14326.14],[1953,14733.28],[1954,14468.25],[1955,15026.48],[1956,15697.47],[1957,16545.86],[1958,16587.41],[1959,16545.58],[1960,17086.72],[1961,17621.05],[1962,17713.7],[1963,17788.6],[1964,19273.35],[1965,19349.16],[1966,19340.04],[1967,19163],[1968,19989.65],[1969,22105.34],[1970,22298.67],[1971,22667.93],[1972,23883.2],[1973,25579.14],[1974,26441.81],[1975,24454.52],[1976,24917.29],[1977,25282.33],[1978,26202.01],[1979,26887.08],[1980,27021.65],[1981,26826.66],[1982,27078.42],[1983,27876.96],[1984,29606.07],[1985,30435.47],[1986,33355.98],[1987,34518.87],[1988,37373.59],[1989,40736.66],[1990,42467.64],[1991,45750.52],[1992,45854.36],[1993,47055.53],[1994,48284.01],[1995,48165.26],[1996,49005.59],[1997,52622.9],[1998,55788.96],[1999,59349.52],[2000,63924.16],[2001,63932.84],[2002,64421.03],[2003,65308.34],[2004,67283.43],[2005,70014],[2006,72742.03],[2007,76273.6],[2008,74985.91],[2009,70857.46]],"population":[[1800,127030],[1820,127030],[1950,295587],[1951,297425],[1952,299263],[1953,301101],[1954,302939],[1955,304777],[1956,306615],[1957,308453],[1958,310291],[1959,312129],[1960,313969],[1961,316845],[1962,320750],[1963,324100],[1964,327750],[1965,331500],[1966,333895],[1967,335012],[1968,335867],[1969,337500],[1970,339174],[1971,342400],[1972,346600],[1973,350450],[1974,355050],[1975,358950],[1976,360750],[1977,361450],[1978,362100],[1979,363000],[1980,364400],[1981,365400],[1982,365718],[1983,365885],[1984,366272],[1985,367169],[1986,369019],[1987,371660],[1988,375624],[1989,377621],[1990,382966],[1991,387152],[1992,392552],[1993,398084],[1994,403756],[1995,409704],[1996,415566],[1997,421014],[1998,426495],[1999,432527],[2000,438777],[2001,444779],[2002,450786],[2003,456764],[2004,462690],[2005,468571],[2006,474413],[2007,480222],[2008,486006]],"lifeExpectancy":[[1800,36.9],[1879,36.9],[1901,47.98],[1902,48.06],[1903,46.91],[1904,44.83],[1905,46.21],[1906,46.59],[1907,49],[1908,46.46],[1909,47.79],[1910,49.66],[1911,46.38],[1912,48.88],[1913,50.24],[1914,50.07],[1915,51.47],[1916,50.12],[1917,48.05],[1918,42.33],[1919,44.68],[1920,54.62],[1921,56.21],[1922,55.27],[1923,54.68],[1924,56.76],[1925,54.79],[1926,53.41],[1927,55.86],[1928,55.35],[1929,52.7],[1930,56.8],[1931,57.59],[1932,56.66],[1933,58.32],[1934,59.9],[1935,59.1],[1936,61.2],[1937,61.06],[1938,59.2],[1939,60.35],[1940,61.95],[1941,59.99],[1942,58.33],[1943,54.32],[1944,47.84],[1945,49.4],[1946,61.61],[1947,63.06],[1948,64.49],[1949,64.84],[1950,65.25],[1951,65.42],[1952,65.76],[1953,66.09],[1954,66.42],[1955,66.73],[1956,67.04],[1957,67.33],[1958,67.62],[1959,67.9],[1960,69.07],[1961,69.57],[1962,68.67],[1963,68.89],[1964,69.07],[1965,69.4],[1966,69.31],[1967,69.69],[1968,70.28],[1969,69.84],[1970,69.58],[1971,69.47],[1972,70.71],[1973,70.47],[1974,70.55],[1975,70.5],[1976,70.45],[1977,71.75],[1978,71.71],[1979,72.4],[1980,72.57],[1981,72.38],[1982,72.47],[1983,73.35],[1984,73.11],[1985,73.68],[1986,74.61],[1987,74.15],[1988,74.75],[1989,74.68],[1990,75.39],[1991,75.47],[1992,75.16],[1993,75.74],[1994,76.36],[1995,76.47],[1996,76.49],[1997,76.81],[1998,77],[1999,77.67],[2000,77.82],[2001,77.95],[2002,78.08],[2003,77.96],[2004,79.26],[2005,79.56],[2006,79.44],[2007,79.36],[2008,79.56],[2009,79.75]]},{"name":"Macedonia, FYR","region":"Europe & Central Asia","income":[[1800,800.76],[1820,817.56],[1870,788.24],[1890,1109.35],[1900,1186.95],[1910,1390.81],[1913,1390.85],[1920,1357.01],[1921,1370.39],[1922,1390.56],[1923,1442.26],[1924,1523.97],[1925,1576.27],[1926,1662.47],[1927,1612.32],[1928,1729.42],[1929,1795.11],[1930,1734.96],[1931,1659.06],[1932,1484],[1933,1509.15],[1934,1543.86],[1935,1499.75],[1936,1671.3],[1937,1675.75],[1938,1784.95],[1939,1857.76],[1947,1731.03],[1948,2037.63],[1949,2208.57],[1950,2040.95],[1951,2093.81],[1952,1905.93],[1953,2161.7],[1954,2252.77],[1955,2365.11],[1956,2292.05],[1957,2650.77],[1958,2737],[1959,3044.67],[1960,3206.91],[1961,3318.1],[1962,3347.13],[1963,3659.85],[1964,3972.98],[1965,4040.6],[1966,4217.55],[1967,4252.92],[1968,4306.22],[1969,4750.19],[1970,4940.59],[1971,5462.13],[1972,5599.5],[1973,5738.05],[1974,6420.76],[1975,6364.32],[1976,6499.5],[1977,6907.88],[1978,7225.93],[1979,7656.7],[1980,7978.72],[1981,8072],[1982,8078.87],[1983,8102.68],[1984,8262.47],[1985,8285.66],[1986,8581.89],[1987,8445.96],[1988,8290.43],[1989,8149.6],[1990,7526.79],[1991,7497.53],[1992,6964.03],[1993,6409.96],[1994,6266.98],[1995,6166.63],[1996,6208.04],[1997,6266.31],[1998,6446.95],[1999,6697.62],[2000,6975.62],[2001,6637.34],[2002,6675.89],[2003,6847.63],[2004,7113.23],[2005,7393],[2006,7658.59],[2007,8086.19],[2008,8449.03],[2009,8364.79]],"population":[[1800,391865],[1820,391865],[1950,1224627],[1951,1255619],[1952,1271611],[1953,1299452],[1954,1325223],[1955,1340031],[1956,1339977],[1957,1344846],[1958,1344772],[1959,1353539],[1960,1366198],[1961,1381753],[1962,1401167],[1963,1422470],[1964,1444676],[1965,1469729],[1966,1489836],[1967,1511816],[1968,1532751],[1969,1553615],[1970,1574407],[1971,1596091],[1972,1617701],[1973,1639236],[1974,1661657],[1975,1684000],[1976,1706445],[1977,1727797],[1978,1747113],[1979,1768203],[1980,1792000],[1981,1808103],[1982,1823791],[1983,1831444],[1984,1837295],[1985,1844740],[1986,1850679],[1987,1856378],[1988,1858920],[1989,1863007],[1990,1861361],[1991,1867710],[1992,1889358],[1993,1917563],[1994,1935034],[1995,1954048],[1996,1971102],[1997,1984860],[1998,1995474],[1999,2004985],[2000,2014512],[2001,2023912],[2002,2030445],[2003,2035145],[2004,2040085],[2005,2045262],[2006,2050554],[2007,2055915],[2008,2061315]],"lifeExpectancy":[[1950,53.09],[1951,53.58],[1952,54.54],[1953,55.45],[1954,56.32],[1955,57.15],[1956,57.94],[1957,58.68],[1958,59.39],[1959,60.07],[1960,60.72],[1961,61.34],[1962,61.95],[1963,62.55],[1964,63.14],[1965,63.72],[1966,64.28],[1967,64.83],[1968,65.35],[1969,65.86],[1970,66.35],[1971,66.83],[1972,67.32],[1973,67.81],[1974,68.28],[1975,68.71],[1976,69.07],[1977,69.34],[1978,69.51],[1979,69.61],[1980,69.64],[1981,69.66],[1982,69.69],[1983,69.78],[1984,69.92],[1985,70.13],[1986,70.37],[1987,70.64],[1988,70.9],[1989,71.14],[1990,71.36],[1991,71.55],[1992,71.73],[1993,71.89],[1994,72.05],[1995,72.2],[1996,72.35],[1997,72.51],[1998,72.67],[1999,72.83],[2000,73.01],[2001,73.18],[2002,73.35],[2003,73.51],[2004,73.67],[2005,73.82],[2006,73.97],[2007,74.11],[2008,74.25],[2009,74.4]]},{"name":"Malta","region":"Europe & Central Asia","income":[[1800,515.5],[1820,532.89],[1950,1525.8],[1960,2300.59],[1961,2326.46],[1962,2250.88],[1963,2255.34],[1964,2301.61],[1965,2452.02],[1966,2704.07],[1967,2878.91],[1968,3158.66],[1969,3350.19],[1970,3765.12],[1971,3885.88],[1972,4129.49],[1973,4531.31],[1974,4952.55],[1975,5853.62],[1976,6726.43],[1977,7348.86],[1978,7939.8],[1979,8586.64],[1980,9104.22],[1981,9401.68],[1982,9683.25],[1983,9751.66],[1984,10018.26],[1985,10476.97],[1986,10774.4],[1987,11105.43],[1988,11937.83],[1989,12805.72],[1990,13494.44],[1991,14216.34],[1992,14745.52],[1993,15256.63],[1994,15975.12],[1995,16779.82],[1996,17357.5],[1997,18048.17],[1998,18581.03],[1999,19172.83],[2000,20276.2],[2001,19797.46],[2002,20162.83],[2003,19966.69],[2004,19874],[2005,20410],[2006,21003.11],[2007,21666.88],[2008,21934.71],[2009,21327.85]],"population":[[1800,134072],[1820,134072],[1950,311973],[1951,312646],[1952,316619],[1953,317248],[1954,319787],[1955,314369],[1956,314066],[1957,318779],[1958,321940],[1959,324842],[1960,328517],[1961,328854],[1962,329011],[1963,328116],[1964,323591],[1965,319164],[1966,317482],[1967,318573],[1968,319254],[1969,322749],[1970,325569],[1971,325468],[1972,319430],[1973,321838],[1974,323524],[1975,327842],[1976,329354],[1977,332066],[1978,339786],[1979,346876],[1980,364001],[1981,363652],[1982,360222],[1983,355773],[1984,351379],[1985,347039],[1986,346625],[1987,349047],[1988,351951],[1989,355323],[1990,359107],[1991,362579],[1992,365897],[1993,370008],[1994,373606],[1995,376893],[1996,379962],[1997,382953],[1998,385608],[1999,387799],[2000,389947],[2001,391873],[2002,393515],[2003,395178],[2004,396851],[2005,398534],[2006,400214],[2007,401880],[2008,403532]],"lifeExpectancy":[[1950,64.7],[1951,65.04],[1952,65.7],[1953,66.29],[1954,66.81],[1955,67.27],[1956,67.66],[1957,67.99],[1958,68.26],[1959,68.48],[1960,68.64],[1961,68.77],[1962,68.88],[1963,68.96],[1964,69.05],[1965,69.15],[1966,69.26],[1967,69.4],[1968,69.57],[1969,69.76],[1970,69.98],[1971,70.23],[1972,70.5],[1973,70.79],[1974,71.09],[1975,71.39],[1976,71.69],[1977,71.99],[1978,72.29],[1979,72.58],[1980,72.86],[1981,73.14],[1982,73.43],[1983,73.72],[1984,74.01],[1985,74.31],[1986,74.6],[1987,74.89],[1988,75.16],[1989,75.43],[1990,75.68],[1991,75.93],[1992,76.16],[1993,76.39],[1994,76.61],[1995,76.83],[1996,77.07],[1997,77.31],[1998,77.55],[1999,77.81],[2000,78.06],[2001,78.32],[2002,78.57],[2003,78.81],[2004,79.04],[2005,79.25],[2006,79.44],[2007,79.61],[2008,79.77],[2009,79.91]]},{"name":"Moldova","region":"Europe & Central Asia","income":[[1800,617.12],[1820,630.11],[1913,1404.57],[1950,2752.3],[1973,4267.57],[1990,4903.83],[1991,4018.45],[1992,2839.94],[1993,2798.54],[1994,1932.28],[1995,1906.77],[1996,1797.92],[1997,1830.29],[1998,1713.62],[1999,1656.77],[2000,1692.09],[2001,1794.94],[2002,1933.65],[2003,2053.17],[2004,2201.64],[2005,2362],[2006,2482.25],[2007,2562.96],[2008,2769.37],[2009,2593.42]],"population":[[1800,712558],[1820,712558],[1950,2336432],[1951,2422094],[1952,2466740],[1953,2505504],[1954,2565909],[1955,2622424],[1956,2682168],[1957,2758940],[1958,2838489],[1959,2919316],[1960,2998981],[1961,3068962],[1962,3136438],[1963,3204914],[1964,3271001],[1965,3333549],[1966,3394160],[1967,3452263],[1968,3505944],[1969,3549420],[1970,3594517],[1971,3648754],[1972,3703001],[1973,3752827],[1974,3800643],[1975,3846519],[1976,3885894],[1977,3920281],[1978,3947422],[1979,3969989],[1980,3996278],[1981,4026204],[1982,4055086],[1983,4082711],[1984,4113243],[1985,4148172],[1986,4183283],[1987,4216682],[1988,4289659],[1989,4359496],[1990,4397798],[1991,4427569],[1992,4448083],[1993,4459725],[1994,4463208],[1995,4459595],[1996,4450539],[1997,4441779],[1998,4435827],[1999,4432040],[2000,4430654],[2001,4431570],[2002,4434547],[2003,4439502],[2004,4446455],[2005,4455421],[2006,4466706],[2007,4480560],[2008,4496774]],"lifeExpectancy":[[1950,57.46],[1951,57.71],[1952,58.18],[1953,58.64],[1954,59.08],[1955,59.51],[1956,59.91],[1957,60.3],[1958,60.68],[1959,61.05],[1960,61.42],[1961,61.79],[1962,62.18],[1963,62.57],[1964,62.96],[1965,63.35],[1966,63.7],[1967,64.02],[1968,64.28],[1969,64.49],[1970,64.65],[1971,64.75],[1972,64.81],[1973,64.84],[1974,64.85],[1975,64.84],[1976,64.81],[1977,64.75],[1978,64.69],[1979,64.63],[1980,64.62],[1981,64.7],[1982,64.89],[1983,65.2],[1984,65.6],[1985,66.05],[1986,66.52],[1987,66.93],[1988,67.26],[1989,67.47],[1990,67.56],[1991,67.51],[1992,67.38],[1993,67.2],[1994,66.99],[1995,66.79],[1996,66.64],[1997,66.55],[1998,66.54],[1999,66.61],[2000,66.76],[2001,66.97],[2002,67.21],[2003,67.45],[2004,67.7],[2005,67.92],[2006,68.13],[2007,68.33],[2008,68.53],[2009,68.72]]},{"name":"Montenegro","region":"Europe & Central Asia","income":[[1800,1112.36],[1820,1135.69],[1870,1094.96],[1890,1541.03],[1900,1648.83],[1910,1932.02],[1913,1932.07],[1920,1885.06],[1921,1903.65],[1922,1931.67],[1923,2003.48],[1924,2116.99],[1925,2189.64],[1926,2309.38],[1927,2239.71],[1928,2402.38],[1929,2493.64],[1930,2410.08],[1931,2304.64],[1932,2061.47],[1933,2096.4],[1934,2144.62],[1935,2083.35],[1936,2321.65],[1937,2327.82],[1938,2479.52],[1939,2580.67],[1947,2404.62],[1948,2830.52],[1949,3067.99],[1950,2835.13],[1951,2908.57],[1952,2647.59],[1953,3002.87],[1954,3129.38],[1955,3285.44],[1956,3183.95],[1957,3682.26],[1958,3802.04],[1959,4229.43],[1960,4454.8],[1961,4609.27],[1962,4649.59],[1963,5084.01],[1964,5518.98],[1965,5612.9],[1966,5858.72],[1967,5907.85],[1968,5981.88],[1969,6598.61],[1970,6863.11],[1971,7587.59],[1972,7778.41],[1973,7970.89],[1974,8919.26],[1975,8840.85],[1976,9028.63],[1977,9595.93],[1978,10037.73],[1979,10636.13],[1980,11083.46],[1981,11213.04],[1982,11222.59],[1983,11255.65],[1984,11477.63],[1985,11509.84],[1986,11921.35],[1987,11732.51],[1988,11516.46],[1989,11320.83],[1990,10455.67],[1991,9245.92],[1992,7003.34],[1993,4393.42],[1994,4398.21],[1995,4947.29],[1996,6193.74],[1997,6465.61],[1998,6637.47],[1999,6013.14],[2000,6185.69],[2001,6311.82],[2002,6557.19],[2003,6892.3],[2004,7374.97],[2005,7833],[2006,10315.88],[2007,11428.36],[2008,12257.79]],"population":[[1800,126582],[1820,126582],[1950,395587],[1951,405216],[1952,413834],[1953,419454],[1954,425065],[1955,431658],[1956,437249],[1957,442829],[1958,448399],[1959,454949],[1960,461487],[1961,468013],[1962,474528],[1963,480046],[1964,486538],[1965,491051],[1966,496539],[1967,501035],[1968,505522],[1969,510001],[1970,514472],[1971,519914],[1972,527678],[1973,534461],[1974,542221],[1975,549000],[1976,554552],[1977,560073],[1978,565561],[1979,571018],[1980,560000],[1981,560090],[1982,562548],[1983,565705],[1984,558389],[1985,560562],[1986,564558],[1987,569473],[1988,574401],[1989,578981],[1990,583202],[1991,590872],[1992,621621],[1993,635875],[1994,653213],[1995,670608],[1996,683946],[1997,692651],[1998,701246],[1999,720412],[2000,732302],[2001,726462],[2002,720230],[2003,713614],[2004,706577],[2005,699259],[2006,691871],[2007,684736],[2008,678177],[2009,672180]],"lifeExpectancy":[[1800,35.4],[1920,35.4],[1950,58.22],[1951,58.47],[1952,58.95],[1953,59.42],[1954,59.88],[1955,60.33],[1956,60.77],[1957,61.2],[1958,61.62],[1959,62.06],[1960,62.51],[1961,63],[1962,63.52],[1963,64.1],[1964,64.72],[1965,65.38],[1966,66.09],[1967,66.82],[1968,67.56],[1969,68.29],[1970,69],[1971,69.69],[1972,70.34],[1973,70.96],[1974,71.54],[1975,72.05],[1976,72.5],[1977,72.89],[1978,73.23],[1979,73.51],[1980,73.74],[1981,73.93],[1982,74.09],[1983,74.23],[1984,74.37],[1985,74.52],[1986,74.69],[1987,74.89],[1988,75.11],[1989,75.34],[1990,75.56],[1991,75.75],[1992,75.9],[1993,75.97],[1994,75.98],[1995,75.91],[1996,75.77],[1997,75.58],[1998,75.36],[1999,75.13],[2000,74.89],[2001,74.66],[2002,74.44],[2003,74.25],[2004,74.09],[2005,74],[2006,73.98],[2007,74.03],[2008,74.15],[2009,74.34]]},{"name":"Netherlands","region":"Europe & Central Asia","income":[[1800,2412.43],[1801,2410.19],[1802,2407.94],[1803,2405.7],[1804,2403.46],[1805,2401.22],[1806,2398.98],[1807,2396.75],[1808,2140.32],[1809,2115.41],[1810,2430.6],[1811,2463.51],[1812,2148.66],[1813,1937.55],[1814,1872.82],[1815,2485.36],[1816,2369.94],[1817,2397.3],[1818,2439.55],[1819,2329.64],[1820,2501.29],[1821,2446.72],[1822,2465.54],[1823,2584.47],[1824,2562.02],[1825,2492.15],[1826,2527.58],[1827,2672.71],[1828,2726.07],[1829,2726.1],[1830,2484.29],[1831,2665.82],[1832,2786.45],[1833,2719.09],[1834,2738.8],[1835,2726.17],[1836,2812.27],[1837,2874.01],[1838,2899.55],[1839,2893.62],[1840,2916.68],[1841,2940.77],[1842,2863.66],[1843,2808.67],[1844,2830.48],[1845,2805.03],[1846,2805.07],[1847,2819.16],[1848,2860.82],[1849,2941.02],[1850,2991.96],[1851,3030.22],[1852,2990.41],[1853,2917.71],[1854,3091.87],[1855,3002.04],[1856,3117.88],[1857,3057.96],[1858,2968.78],[1859,2857.73],[1860,2990.17],[1861,2902.77],[1862,3012.98],[1863,3064.49],[1864,3181.52],[1865,3182.08],[1866,3296.34],[1867,3177.69],[1868,3192],[1869,3290.79],[1870,3390.1],[1871,3358.03],[1872,3384.07],[1873,3442.73],[1874,3302.9],[1875,3481.91],[1876,3479],[1877,3509.16],[1878,3487.48],[1879,3305.83],[1880,3485.25],[1881,3494.5],[1882,3531.33],[1883,3739.93],[1884,3751.79],[1885,3777.75],[1886,3779.03],[1887,3816.41],[1888,3809.49],[1889,3884.11],[1890,3672.78],[1891,3628.37],[1892,3685.88],[1893,3593.38],[1894,3745.99],[1895,3708.29],[1896,3801.33],[1897,3832.52],[1898,3827.14],[1899,3818.28],[1900,3713.31],[1901,3826.9],[1902,3917.61],[1903,3843.64],[1904,3828.61],[1905,3951.5],[1906,3963.17],[1907,3826.46],[1908,3838.51],[1909,3979.81],[1910,4088.22],[1911,4188.72],[1912,4263.1],[1913,4422.05],[1914,4314.78],[1915,4098.55],[1916,4042.31],[1917,3588.65],[1918,3331.55],[1919,3716.74],[1920,4230.58],[1921,4958.89],[1922,5218.13],[1923,5261.95],[1924,5563.92],[1925,5681.74],[1926,6000.34],[1927,6211.6],[1928,6408.23],[1929,6457.97],[1930,6309.26],[1931,6009.03],[1932,5868.27],[1933,5827.76],[1934,5713.9],[1935,5822.82],[1936,6105.71],[1937,6414.44],[1938,6177.32],[1939,6641.98],[1940,5796.49],[1941,5449.65],[1942,4950.39],[1943,4813.35],[1944,3201.78],[1945,3255.32],[1946,5458.49],[1947,6215.75],[1948,6792.51],[1949,7196.12],[1950,7407.85],[1951,7498.82],[1952,7564.17],[1953,8144.21],[1954,8638.54],[1955,9170.54],[1956,9494.99],[1957,9690.89],[1958,9482.82],[1959,9823.19],[1960,10620.98],[1961,10822.2],[1962,11167.47],[1963,11420.64],[1964,12287.88],[1965,12809.27],[1966,13041.3],[1967,13626.76],[1968,14442.49],[1969,15304.9],[1970,16036.47],[1971,16602.54],[1972,16935.57],[1973,17681.37],[1974,18324.6],[1975,18255.08],[1976,18992.14],[1977,19415.07],[1978,19842.47],[1979,20126.43],[1980,20372.21],[1981,20194.33],[1982,19900.97],[1983,20247.92],[1984,20861.01],[1985,21393.33],[1986,22007.79],[1987,22345.03],[1988,23032.6],[1989,23982.73],[1990,24902.12],[1991,25383.24],[1992,25713.88],[1993,25958.69],[1994,26648.08],[1995,27423.96],[1996,28344.59],[1997,29491.94],[1998,30566.5],[1999,31895.29],[2000,33000.17],[2001,33482.67],[2002,33406.92],[2003,33454.56],[2004,34181.87],[2005,34724],[2006,35845.52],[2007,36535.43],[2008,37069.42],[2009,36074.53]],"population":[[1820,2333000],[1821,2365000],[1822,2400000],[1823,2435000],[1824,2474000],[1825,2514000],[1826,2543000],[1827,2561000],[1828,2585000],[1829,2610000],[1830,2633000],[1831,2653000],[1832,2665000],[1833,2683000],[1834,2707000],[1835,2732000],[1836,2762000],[1837,2791000],[1838,2821000],[1839,2853000],[1840,2886000],[1841,2921000],[1842,2952000],[1843,2981000],[1844,3014000],[1845,3047000],[1846,3069000],[1847,3071000],[1848,3069000],[1849,3076000],[1850,3098000],[1851,3133000],[1852,3167000],[1853,3194000],[1854,3218000],[1855,3235000],[1856,3253000],[1857,3277000],[1858,3294000],[1859,3304000],[1860,3318000],[1861,3340000],[1862,3366000],[1863,3397000],[1864,3431000],[1865,3460000],[1866,3484000],[1867,3510000],[1868,3543000],[1869,3575000],[1870,3610000],[1871,3636000],[1872,3662000],[1873,3670000],[1874,3745000],[1875,3788000],[1876,3832000],[1877,3883000],[1878,3834000],[1879,3986000],[1880,4043000],[1881,4079000],[1882,4130000],[1883,4180000],[1884,4226000],[1885,4276000],[1886,4326000],[1887,4378000],[1888,4432000],[1889,4485000],[1890,4535000],[1891,4585000],[1892,4632000],[1893,4684000],[1894,4743000],[1895,4803000],[1896,4866000],[1897,4935000],[1898,5003000],[1899,5070000],[1900,5142000],[1901,5221000],[1902,5305000],[1903,5389000],[1904,5470000],[1905,5551000],[1906,5632000],[1907,5710000],[1908,5786000],[1909,5862000],[1910,5922000],[1911,5984000],[1912,6068000],[1913,6164000],[1914,6277000],[1915,6395000],[1916,6516000],[1917,6654000],[1918,6752000],[1919,6805000],[1920,6848000],[1921,6921000],[1922,7032000],[1923,7150000],[1924,7264000],[1925,7366000],[1926,7471000],[1927,7576000],[1928,7679000],[1929,7782000],[1930,7884000],[1931,7999000],[1932,8123000],[1933,8237000],[1934,8341000],[1935,8434000],[1936,8516000],[1937,8599000],[1938,8685000],[1939,8782000],[1940,8879000],[1941,8966000],[1942,9042000],[1943,9103000],[1944,9175000],[1945,9262000],[1946,9424000],[1947,9630000],[1948,9800000],[1949,9956000],[1950,10113527],[1951,10264311],[1952,10381988],[1953,10493184],[1954,10615380],[1955,10750842],[1956,10889351],[1957,11026383],[1958,11186875],[1959,11347639],[1960,11486000],[1961,11638713],[1962,11805689],[1963,11965966],[1964,12127120],[1965,12292000],[1966,12454800],[1967,12596822],[1968,12724680],[1969,12873000],[1970,13032335],[1971,13193776],[1972,13329874],[1973,13438404],[1974,13540584],[1975,13653438],[1976,13769913],[1977,13852989],[1978,13936754],[1979,14030002],[1980,14143901],[1981,14246049],[1982,14310401],[1983,14362381],[1984,14420022],[1985,14491380],[1986,14571875],[1987,14665278],[1988,14761339],[1989,14848907],[1990,14951510],[1991,15066220],[1992,15174244],[1993,15274942],[1994,15382198],[1995,15459054],[1996,15527809],[1997,15604464],[1998,15699259],[1999,15801947],[2000,15907853],[2001,16017445],[2002,16122830],[2003,16223248],[2004,16318199],[2005,16407491],[2006,16491461],[2007,16570613],[2008,16645313]],"lifeExpectancy":[[1800,39.86],[1850,39.86],[1851,40],[1852,38.66],[1853,38.63],[1854,38.63],[1855,34.53],[1856,38.39],[1857,35.46],[1858,34.66],[1859,30.86],[1860,36.91],[1861,36.44],[1862,38.28],[1863,38.33],[1864,37.56],[1865,36.37],[1866,33.64],[1867,39.31],[1868,37.75],[1869,40.47],[1870,37.34],[1871,32.94],[1872,36.49],[1873,39.2],[1874,41.3],[1875,38.24],[1876,40.35],[1877,42.03],[1878,41.1],[1879,41.96],[1880,40.39],[1881,42.87],[1882,43.79],[1883,42.35],[1884,41.34],[1885,43.3],[1886,41.98],[1887,44.99],[1888,44.22],[1889,44.35],[1890,44.4],[1891,44.25],[1892,43.95],[1893,45.8],[1894,46.93],[1895,46.64],[1896,48.56],[1897,49.36],[1898,49.03],[1899,49.35],[1900,48.4],[1901,48.72],[1902,50.61],[1903,51.51],[1904,50.9],[1905,52.11],[1906,52.78],[1907,53.54],[1908,52.76],[1909,54.96],[1910,55.14],[1911,53.17],[1912,57.21],[1913,57.37],[1914,57.2],[1915,57.22],[1916,56.16],[1917,55.67],[1918,47.61],[1919,54.98],[1920,57.84],[1921,59.77],[1922,59.84],[1923,62.06],[1924,62.97],[1925,63.18],[1926,63.04],[1927,62.65],[1928,63.74],[1929,62.19],[1930,64.73],[1931,64.35],[1932,65.44],[1933,66.08],[1934,66.62],[1935,66.54],[1936,66.76],[1937,66.98],[1938,67.4],[1939,67.73],[1940,65.4],[1941,65.33],[1942,65.84],[1943,64.43],[1944,61.26],[1945,55.45],[1946,67.58],[1947,69.53],[1948,71.05],[1949,70.28],[1950,71.45],[1951,71.51],[1952,72.13],[1953,71.71],[1954,72.4],[1955,72.52],[1956,72.54],[1957,72.99],[1958,73.15],[1959,73.19],[1960,73.37],[1961,73.56],[1962,73.23],[1963,73.35],[1964,73.73],[1965,73.6],[1966,73.55],[1967,73.82],[1968,73.63],[1969,73.54],[1970,73.6],[1971,73.84],[1972,73.75],[1973,74.2],[1974,74.59],[1975,74.52],[1976,74.65],[1977,75.24],[1978,75.15],[1979,75.63],[1980,75.76],[1981,75.97],[1982,76.05],[1983,76.25],[1984,76.32],[1985,76.38],[1986,76.36],[1987,76.83],[1988,77.03],[1989,76.87],[1990,77.05],[1991,77.21],[1992,77.42],[1993,77.11],[1994,77.6],[1995,77.64],[1996,77.65],[1997,78.03],[1998,78.12],[1999,78.07],[2000,78.24],[2001,78.45],[2002,78.53],[2003,78.79],[2004,79.38],[2005,79.65],[2006,80],[2007,79.82],[2008,80.02],[2009,80.19]]},{"name":"Norway","region":"Europe & Central Asia","income":[[1800,950],[1820,978],[1821,984],[1822,990],[1823,996],[1824,1002],[1825,1008],[1826,1014],[1827,1020],[1828,1026],[1829,1032],[1830,1038],[1831,957],[1832,971],[1833,1080],[1834,1130],[1835,1107],[1836,1077],[1837,1080],[1838,1085],[1839,1086],[1840,1185],[1841,1208],[1842,1216],[1843,1190],[1844,1213],[1845,1267],[1846,1291],[1847,1242],[1848,1175],[1849,1206],[1850,1236],[1851,1313],[1852,1301],[1853,1362],[1854,1401],[1855,1472],[1856,1444],[1857,1365],[1858,1416],[1859,1446],[1860,1498],[1861,1457],[1862,1584],[1863,1589],[1864,1649],[1865,1720],[1866,1737],[1867,1774],[1868,1767],[1869,1834],[1870,1826],[1871,1851],[1872,1964],[1873,2001],[1874,2062],[1875,2103],[1876,2136],[1877,2129],[1878,2031],[1879,2026],[1880,2077],[1881,2096],[1882,2099],[1883,2096],[1884,2127],[1885,2134],[1886,2134],[1887,2152],[1888,2249],[1889,2332],[1890,2385],[1891,2393],[1892,2428],[1893,2482],[1894,2479],[1895,2482],[1896,2523],[1897,2624],[1898,2612],[1899,2661],[1900,2668],[1901,2709],[1902,2732],[1903,2705],[1904,2704],[1905,2716],[1906,2822],[1907,2937],[1908,3014],[1909,3058],[1910,3168],[1911,3274],[1912,3410],[1913,3566],[1914,3610],[1915,3737],[1916,3852],[1917,3468],[1918,3300],[1919,3836],[1920,4045],[1921,3615],[1922,3970],[1923,4058],[1924,4041],[1925,4269],[1926,4316],[1927,4469],[1928,4658],[1929,5089],[1930,5460],[1931,5012],[1932,5238],[1933,5350],[1934,5518],[1935,5774],[1936,6144],[1937,6396],[1938,6514],[1939,6800],[1940,6195],[1941,6322],[1942,6049],[1943,5895],[1944,5546],[1945,6164],[1946,6728],[1947,7563],[1948,8013],[1949,8158],[1950,8490],[1951,8884],[1952,9126],[1953,9413],[1954,9809],[1955,9948],[1956,10400],[1957,10636],[1958,10562],[1959,10936],[1960,11481],[1961,12127],[1962,12393],[1963,12794],[1964,13355],[1965,13982],[1966,14421],[1967,15220],[1968,15456],[1969,16050],[1970,16289],[1971,17044],[1972,17810],[1973,18501],[1974,19194],[1975,20125],[1976,21246],[1977,22101],[1978,22828],[1979,23815],[1980,24961],[1981,25164],[1982,25172],[1983,26036],[1984,27549],[1985,28950],[1986,29947],[1987,30478],[1988,30359],[1989,30581],[1990,31162],[1991,32200],[1992,33135],[1993,33900],[1994,35547],[1995,36975],[1996,38795],[1997,40659],[1998,41358],[1999,42008],[2000,43174],[2001,43888],[2002,44429],[2003,44767],[2004,46387],[2005,47551],[2006,48218],[2007,49013],[2008,49221],[2009,47915]],"population":[[1820,970000],[1821,984000],[1822,998000],[1823,1013000],[1824,1028000],[1825,1044000],[1826,1062000],[1827,1079000],[1828,1093000],[1829,1108000],[1830,1124000],[1831,1137000],[1832,1150000],[1833,1163000],[1834,1174000],[1835,1188000],[1836,1202000],[1837,1214000],[1838,1224000],[1839,1233000],[1840,1241000],[1841,1254000],[1842,1271000],[1843,1286000],[1844,1302000],[1845,1319000],[1846,1337000],[1847,1351000],[1848,1363000],[1849,1377000],[1850,1392000],[1851,1409000],[1852,1425000],[1853,1440000],[1854,1457000],[1855,1479000],[1856,1501000],[1857,1521000],[1858,1543000],[1859,1570000],[1860,1596000],[1861,1614000],[1862,1627000],[1863,1646000],[1864,1668000],[1865,1690000],[1866,1707000],[1867,1716000],[1868,1724000],[1869,1729000],[1870,1735000],[1871,1745000],[1872,1755000],[1873,1767000],[1874,1783000],[1875,1803000],[1876,1829000],[1877,1852000],[1878,1877000],[1879,1902000],[1880,1919000],[1881,1923000],[1882,1920000],[1883,1919000],[1884,1929000],[1885,1944000],[1886,1958000],[1887,1970000],[1888,1977000],[1889,1984000],[1890,1997000],[1891,2013000],[1892,2026000],[1893,2038000],[1894,2057000],[1895,2083000],[1896,2112000],[1897,2142000],[1898,2174000],[1899,2204000],[1900,2230000],[1901,2255000],[1902,2275000],[1903,2288000],[1904,2297000],[1905,2309000],[1906,2319000],[1907,2329000],[1908,2346000],[1909,2367000],[1910,2384000],[1911,2401000],[1912,2423000],[1913,2447000],[1914,2472000],[1915,2498000],[1916,2522000],[1917,2551000],[1918,2578000],[1919,2603000],[1920,2635000],[1921,2668000],[1922,2695000],[1923,2713000],[1924,2729000],[1925,2747000],[1926,2763000],[1927,2775000],[1928,2785000],[1929,2795000],[1930,2807000],[1931,2824000],[1932,2842000],[1933,2858000],[1934,2874000],[1935,2889000],[1936,2904000],[1937,2919000],[1938,2936000],[1939,2954000],[1940,2973000],[1941,2990000],[1942,3009000],[1943,3032000],[1944,3060000],[1945,3091000],[1946,3127000],[1947,3165000],[1948,3201000],[1949,3234000],[1950,3265126],[1951,3295871],[1952,3327728],[1953,3360888],[1954,3394246],[1955,3427409],[1956,3459992],[1957,3491938],[1958,3522993],[1959,3552851],[1960,3581239],[1961,3609800],[1962,3638919],[1963,3666540],[1964,3694339],[1965,3723153],[1966,3753628],[1967,3786019],[1968,3818983],[1969,3850977],[1970,3877386],[1971,3903039],[1972,3933004],[1973,3960613],[1974,3985258],[1975,4007313],[1976,4026152],[1977,4043205],[1978,4058671],[1979,4072517],[1980,4085620],[1981,4099702],[1982,4114787],[1983,4128432],[1984,4140095],[1985,4152419],[1986,4166596],[1987,4186147],[1988,4208729],[1989,4226142],[1990,4242006],[1991,4261733],[1992,4286357],[1993,4311964],[1994,4336638],[1995,4359101],[1996,4381277],[1997,4405672],[1998,4432718],[1999,4463377],[2000,4492400],[2001,4515195],[2002,4535591],[2003,4555400],[2004,4574560],[2005,4593041],[2006,4610820],[2007,4627926],[2008,4644457]],"lifeExpectancy":[[1800,38.8],[1815,38.8],[1846,48.05],[1847,44.77],[1848,45.02],[1849,48.05],[1850,49.53],[1851,49.74],[1852,48.46],[1853,47.92],[1854,51.65],[1855,50.44],[1856,50.37],[1857,50.22],[1858,51.59],[1859,49.93],[1860,50],[1861,45.81],[1862,44.7],[1863,46.71],[1864,48.78],[1865,50.42],[1866,49.92],[1867,47.87],[1868,47.16],[1869,49.25],[1870,50.86],[1871,49.69],[1872,50.02],[1873,49.67],[1874,47.77],[1875,47.64],[1876,46.83],[1877,49.77],[1878,51.79],[1879,53.18],[1880,51.91],[1881,50.47],[1882,47.4],[1883,49.64],[1884,50.8],[1885,51.06],[1886,51.72],[1887,51.69],[1888,50.38],[1889,49.06],[1890,48.6],[1891,49.79],[1892,49.68],[1893,51.41],[1894,50.62],[1895,52.8],[1896,53.84],[1897,53.73],[1898,53.96],[1899,51.62],[1900,53.47],[1901,54.59],[1902,56.49],[1903,54.98],[1904,56.09],[1905,55.1],[1906,56.91],[1907,56.49],[1908,56.31],[1909,57.47],[1910,57.99],[1911,58.04],[1912,57.75],[1913,58.32],[1914,57.82],[1915,58.17],[1916,57.25],[1917,57.75],[1918,50.3],[1919,56.82],[1920,58.89],[1921,61.61],[1922,60.79],[1923,61.81],[1924,62.12],[1925,62.52],[1926,63.26],[1927,62.87],[1928,63.4],[1929,62.47],[1930,64.11],[1931,64.14],[1932,64.61],[1933,65.49],[1934,66.22],[1935,65.84],[1936,65.84],[1937,66.04],[1938,67.09],[1939,67.36],[1940,65.89],[1941,65.77],[1942,65.68],[1943,66.12],[1944,65.8],[1945,68.19],[1946,69.51],[1947,70.01],[1948,71.13],[1949,71.53],[1950,71.6],[1951,72.54],[1952,72.67],[1953,73.15],[1954,73.23],[1955,73.44],[1956,73.49],[1957,73.44],[1958,73.43],[1959,73.56],[1960,73.58],[1961,73.59],[1962,73.47],[1963,73.11],[1964,73.61],[1965,73.73],[1966,74.01],[1967,74.08],[1968,73.96],[1969,73.67],[1970,74.08],[1971,74.18],[1972,74.34],[1973,74.43],[1974,74.75],[1975,74.8],[1976,75.03],[1977,75.37],[1978,75.4],[1979,75.39],[1980,75.65],[1981,75.84],[1982,75.97],[1983,76.03],[1984,76.19],[1985,75.9],[1986,76.04],[1987,75.89],[1988,75.99],[1989,76.33],[1990,76.41],[1991,76.93],[1992,77.32],[1993,77.28],[1994,77.86],[1995,77.89],[1996,78.31],[1997,78.32],[1998,78.49],[1999,78.47],[2000,78.76],[2001,78.98],[2002,79.05],[2003,79.61],[2004,80.06],[2005,80.29],[2006,80.55],[2007,80.61],[2008,80.67],[2009,80.85]]},{"name":"Poland","region":"Europe & Central Asia","income":[[1800,1198.39],[1820,1290.47],[1821,1294.57],[1822,1298.67],[1823,1302.79],[1824,1306.92],[1825,1311.07],[1826,1315.22],[1827,1319.4],[1828,1323.58],[1829,1327.78],[1830,1331.99],[1831,1336.21],[1832,1340.45],[1833,1344.7],[1834,1348.97],[1835,1353.24],[1836,1357.54],[1837,1361.84],[1838,1366.16],[1839,1370.49],[1840,1374.84],[1841,1379.2],[1842,1383.57],[1843,1387.96],[1844,1392.36],[1845,1396.78],[1846,1401.21],[1847,1405.65],[1848,1410.11],[1849,1414.58],[1850,1419.07],[1851,1423.57],[1852,1428.09],[1853,1432.61],[1854,1437.16],[1855,1441.72],[1856,1446.29],[1857,1450.88],[1858,1455.48],[1859,1460.09],[1860,1464.72],[1861,1469.37],[1862,1474.03],[1863,1478.7],[1864,1483.39],[1865,1488.1],[1866,1492.82],[1867,1497.55],[1868,1502.3],[1869,1507.07],[1870,1511.84],[1871,1535.12],[1872,1558.75],[1873,1582.74],[1874,1607.11],[1875,1631.85],[1876,1656.97],[1877,1682.47],[1878,1708.37],[1879,1734.67],[1880,1761.37],[1881,1788.49],[1882,1816.02],[1883,1843.97],[1884,1872.36],[1885,1901.18],[1886,1930.45],[1887,1960.16],[1888,1990.34],[1889,2020.98],[1890,2052.09],[1891,2089.19],[1892,2126.96],[1893,2165.42],[1894,2204.57],[1895,2244.43],[1896,2285.01],[1897,2326.32],[1898,2368.38],[1899,2411.2],[1900,2454.79],[1901,2478.36],[1902,2502.15],[1903,2526.17],[1904,2550.42],[1905,2574.9],[1906,2599.62],[1907,2624.58],[1908,2649.77],[1909,2675.21],[1910,2700.89],[1911,2726.76],[1912,2752.88],[1913,2779.24],[1914,2813.64],[1915,2848.47],[1916,2883.73],[1917,2919.43],[1918,2955.56],[1919,2992.15],[1920,3029.19],[1921,3066.68],[1922,3104.64],[1923,3143.07],[1924,3181.98],[1925,3221.37],[1926,3261.24],[1927,3301.61],[1928,3342.48],[1929,3383.85],[1930,3187.21],[1931,2914.14],[1932,2649.16],[1933,2540.64],[1934,2546.64],[1935,2551.83],[1936,2596.46],[1937,3061.3],[1938,3487.75],[1939,3750.1],[1940,3174.55],[1941,2892.29],[1942,2543.47],[1943,2391.53],[1944,1536.58],[1945,1588.31],[1946,2706.91],[1947,3132.14],[1948,3477.09],[1949,3741.25],[1950,3910.56],[1951,4011.8],[1952,4029.33],[1953,4183.46],[1954,4338.68],[1955,4464.95],[1956,4576.69],[1957,4734.25],[1958,4885.49],[1959,4948.3],[1960,5137.59],[1961,5475.68],[1962,5338.75],[1963,5597.46],[1964,5788.41],[1965,6052.03],[1966,6378.94],[1967,6557.15],[1968,6900.04],[1969,6778.28],[1970,7076.39],[1971,7522.54],[1972,8006.51],[1973,8533.52],[1974,8950.74],[1975,9281.98],[1976,9421.88],[1977,9508.14],[1978,9766.19],[1979,9496.48],[1980,9173.32],[1981,8606.55],[1982,8451.53],[1983,8786.11],[1984,9030.45],[1985,9046.3],[1986,9263.85],[1987,9082.35],[1988,9252.06],[1989,9083.71],[1990,8172.11],[1991,7572.21],[1992,7738.88],[1993,8007.93],[1994,8414.16],[1995,8986.89],[1996,9518.9],[1997,10159.58],[1998,10716.13],[1999,11208.8],[2000,11680.79],[2001,11825.87],[2002,12002.24],[2003,12472.53],[2004,13146.01],[2005,13573],[2006,14427.4],[2007,15414.7],[2008,16185.04],[2009,16465.8]],"population":[[1820,10426000],[1850,13000000],[1870,16865000],[1890,22854000],[1900,24750000],[1910,26644000],[1913,26710000],[1920,23968000],[1921,24330000],[1922,24935000],[1923,25569000],[1924,25992000],[1925,26425000],[1926,26815000],[1927,27148000],[1928,27509000],[1929,27856000],[1930,28204000],[1931,28615000],[1932,29022000],[1933,29421000],[1934,29771000],[1935,30129000],[1936,30471000],[1937,30791000],[1938,31062000],[1939,31365000],[1940,30021000],[1946,23959000],[1947,23734000],[1948,23980000],[1949,24410000],[1950,24824000],[1951,25262265],[1952,25730551],[1953,26221264],[1954,26715134],[1955,27220668],[1956,27743876],[1957,28235346],[1958,28692576],[1959,29152334],[1960,29589842],[1961,29978949],[1962,30329617],[1963,30662122],[1964,30975520],[1965,31262358],[1966,31532016],[1967,31785378],[1968,32034813],[1969,32280848],[1970,32526000],[1971,32777810],[1972,33039545],[1973,33331131],[1974,33642890],[1975,33969240],[1976,34299428],[1977,34621254],[1978,34929072],[1979,35256645],[1980,35578016],[1981,35901961],[1982,36227381],[1983,36571418],[1984,36904134],[1985,37225792],[1986,37504275],[1987,37740710],[1988,37866840],[1989,37970155],[1990,38119408],[1991,38253222],[1992,38370697],[1993,38467746],[1994,38548296],[1995,38600642],[1996,38629842],[1997,38654957],[1998,38668756],[1999,38665539],[2000,38654164],[2001,38643641],[2002,38625976],[2003,38602853],[2004,38580445],[2005,38557984],[2006,38536869],[2007,38518241],[2008,38500696]],"lifeExpectancy":[[1800,35.9],[1885,35.9],[1931,49.8],[1950,59.05],[1951,59.65],[1952,60.83],[1953,61.92],[1954,62.93],[1955,63.85],[1956,64.69],[1957,65.45],[1958,65.92],[1959,65.53],[1960,67.86],[1961,67.98],[1962,67.64],[1963,68.57],[1964,68.8],[1965,69.5],[1966,69.91],[1967,69.61],[1968,70.25],[1969,69.74],[1970,69.87],[1971,69.67],[1972,70.85],[1973,70.85],[1974,71.36],[1975,70.77],[1976,70.77],[1977,70.67],[1978,70.6],[1979,70.93],[1980,70.28],[1981,71.26],[1982,71.32],[1983,71.16],[1984,70.9],[1985,70.64],[1986,70.93],[1987,70.98],[1988,71.35],[1989,71.1],[1990,70.75],[1991,70.45],[1992,70.99],[1993,71.51],[1994,71.82],[1995,72.05],[1996,72.39],[1997,72.75],[1998,73.13],[1999,73.18],[2000,73.91],[2001,74.33],[2002,74.67],[2003,74.85],[2004,75.02],[2005,75.15],[2006,75.35],[2007,75.52],[2008,75.68],[2009,75.84]]},{"name":"Portugal","region":"Europe & Central Asia","income":[[1800,1284.41],[1820,1310.25],[1821,1310.27],[1822,1310.3],[1823,1310.32],[1824,1310.35],[1825,1310.37],[1826,1310.39],[1827,1310.42],[1828,1310.44],[1829,1310.47],[1830,1310.49],[1831,1310.52],[1832,1310.54],[1833,1310.57],[1834,1310.59],[1835,1310.62],[1836,1310.64],[1837,1310.67],[1838,1310.69],[1839,1310.71],[1840,1310.74],[1841,1310.76],[1842,1310.79],[1843,1310.81],[1844,1310.84],[1845,1310.86],[1846,1310.89],[1847,1310.91],[1848,1310.94],[1849,1310.96],[1850,1310.99],[1851,1407],[1852,1380.51],[1853,1354.51],[1854,1329],[1855,1303.97],[1856,1295.41],[1857,1286.89],[1858,1278.44],[1859,1270.04],[1860,1261.69],[1861,1253.4],[1862,1256.42],[1863,1259.45],[1864,1262.48],[1865,1265.52],[1866,1305.74],[1867,1335.79],[1868,1341.93],[1869,1368.8],[1870,1384.18],[1871,1324.39],[1872,1354.78],[1873,1402.86],[1874,1371.88],[1875,1361.98],[1876,1322.42],[1877,1375.87],[1878,1368.62],[1879,1361.54],[1880,1344.78],[1881,1377.49],[1882,1408.72],[1883,1431.01],[1884,1467.5],[1885,1493.03],[1886,1561.66],[1887,1581.31],[1888,1586.51],[1889,1544.92],[1890,1601.16],[1891,1560.79],[1892,1543.11],[1893,1562.93],[1894,1531.75],[1895,1586.21],[1896,1596.93],[1897,1677.51],[1898,1723.95],[1899,1772.8],[1900,1848.6],[1901,1801.95],[1902,1796.87],[1903,1807.25],[1904,1815.6],[1905,1750.28],[1906,1746.93],[1907,1773.59],[1908,1730.83],[1909,1715.02],[1910,1743.15],[1911,1762.62],[1912,1783.8],[1913,1774.99],[1914,1785.2],[1915,1742.99],[1916,1751.32],[1917,1721.27],[1918,1632.1],[1919,1665.53],[1920,1745.03],[1921,1831.16],[1922,2029.87],[1923,2091.67],[1924,1989.26],[1925,2052.85],[1926,2014.55],[1927,2338.95],[1928,2087.28],[1929,2285.66],[1930,2229.87],[1931,2315.53],[1932,2331.73],[1933,2458.92],[1934,2532.48],[1935,2368.84],[1936,2161.78],[1937,2494.69],[1938,2480.53],[1939,2482.87],[1940,2292.84],[1941,2479.98],[1942,2425.1],[1943,2564.33],[1944,2686.88],[1945,2560.36],[1946,2736.83],[1947,2939.33],[1948,2904.91],[1949,2919.51],[1950,2961.89],[1951,3077.24],[1952,3068.32],[1953,3262.2],[1954,3397.69],[1955,3513.19],[1956,3639.99],[1957,3774.57],[1958,3793.66],[1959,3966.47],[1960,4196.15],[1961,4428.04],[1962,4727.95],[1963,4974.5],[1964,5278.68],[1965,5667.66],[1966,5911.27],[1967,6361.52],[1968,6918.3],[1969,7079.03],[1970,7769.41],[1971,8334.25],[1972,9022.25],[1973,10026.71],[1974,10005],[1975,9251.92],[1976,9673.53],[1977,10172.49],[1978,10419.96],[1979,10978.31],[1980,11419.72],[1981,11519.39],[1982,11753.84],[1983,11718.43],[1984,11482.99],[1985,11791.3],[1986,12266.89],[1987,13039.31],[1988,14008.38],[1989,14724.11],[1990,15369.31],[1991,16046.61],[1992,16207.27],[1993,15812.16],[1994,15869.43],[1995,16486.84],[1996,17027.45],[1997,17641.03],[1998,18368.52],[1999,18959.84],[2000,19609.73],[2001,19904.87],[2002,19970.91],[2003,19727.84],[2004,19942.44],[2005,20006],[2006,20202.27],[2007,20523.09],[2008,20496.24],[2009,19898.43]],"population":[[1820,3297000],[1821,3316000],[1822,3335000],[1823,3354000],[1824,3373000],[1825,3393000],[1826,3412000],[1827,3432000],[1828,3452000],[1829,3472000],[1830,3491000],[1831,3512000],[1832,3532000],[1833,3552000],[1834,3475000],[1835,3595000],[1836,3617000],[1837,3639000],[1838,3661000],[1839,3683000],[1840,3704000],[1841,3715000],[1842,3726000],[1843,3738000],[1844,3749000],[1845,3760000],[1846,3771000],[1847,3783000],[1848,3794000],[1849,3804000],[1850,3816000],[1851,3827000],[1852,3839000],[1853,3850000],[1854,3858000],[1855,3867000],[1856,3875000],[1857,3889000],[1858,3925000],[1859,3963000],[1860,4000000],[1861,4074000],[1862,4113000],[1863,4131000],[1864,4176000],[1865,4201000],[1866,4226000],[1867,4251000],[1868,4276000],[1869,4302000],[1870,4327000],[1871,4353000],[1872,4379000],[1873,4405000],[1874,4431000],[1875,4458000],[1876,4484000],[1877,4511000],[1878,4538000],[1879,4571000],[1880,4610000],[1881,4651000],[1882,4691000],[1883,4732000],[1884,4773000],[1885,4815000],[1886,4857000],[1887,4899000],[1888,4942000],[1889,4985000],[1890,5028000],[1891,5068000],[1892,5104000],[1893,5141000],[1894,5178000],[1895,5215000],[1896,5252000],[1897,5290000],[1898,5327000],[1899,5366000],[1900,5404000],[1901,5447000],[1902,5494000],[1903,5541000],[1904,5589000],[1905,5637000],[1906,5686000],[1907,5735000],[1908,5784000],[1909,5834000],[1910,5884000],[1911,5935000],[1912,5964000],[1913,5972000],[1914,5980000],[1915,5988000],[1916,5996000],[1917,6005000],[1918,6013000],[1919,6021000],[1920,6029000],[1921,6071000],[1922,6146000],[1923,6223000],[1924,6300000],[1925,6378000],[1926,6457000],[1927,6538000],[1928,6619000],[1929,6701000],[1930,6784000],[1931,6869000],[1932,6954000],[1933,7040000],[1934,7127000],[1935,7216000],[1936,7305000],[1937,7396000],[1938,7488000],[1939,7581000],[1940,7675000],[1941,7757000],[1942,7826000],[1943,7896000],[1944,7967000],[1945,8038000],[1946,8110000],[1947,8183000],[1948,8256000],[1949,8329000],[1950,8442750],[1951,8490250],[1952,8526050],[1953,8578950],[1954,8632100],[1955,8692600],[1956,8756000],[1957,8817650],[1958,8888550],[1959,8961550],[1960,9036700],[1961,9031200],[1962,9019800],[1963,9081600],[1964,9122500],[1965,9128850],[1966,9108800],[1967,9103000],[1968,9115050],[1969,9097200],[1970,9044200],[1971,8990450],[1972,8970450],[1973,8975950],[1974,9098300],[1975,9411090],[1976,9621970],[1977,9662600],[1978,9698780],[1979,9724560],[1980,9777800],[1981,9850079],[1982,9859650],[1983,9872243],[1984,9885387],[1985,9897192],[1986,9907411],[1987,9915289],[1988,9920611],[1989,9923147],[1990,9922689],[1991,9919009],[1992,9927680],[1993,9967832],[1994,10027688],[1995,10065543],[1996,10099918],[1997,10156415],[1998,10224828],[1999,10283381],[2000,10335597],[2001,10386753],[2002,10433867],[2003,10479955],[2004,10524145],[2005,10566212],[2006,10605870],[2007,10642836],[2008,10676910]],"lifeExpectancy":[[1800,35.6],[1925,35.6],[1940,51.43],[1941,47.95],[1942,49.87],[1943,51.05],[1944,52.42],[1945,53.81],[1946,53.69],[1947,56.03],[1948,56.76],[1949,55.38],[1950,58.53],[1951,58.72],[1952,59.82],[1953,61.12],[1954,62.26],[1955,61.43],[1956,61.24],[1957,61.51],[1958,63.81],[1959,62.99],[1960,64.25],[1961,62.87],[1962,64.39],[1963,65.02],[1964,65.24],[1965,66.19],[1966,65.7],[1967,66.6],[1968,66.91],[1969,66.52],[1970,67.17],[1971,66.94],[1972,69.26],[1973,68.66],[1974,69.21],[1975,68.93],[1976,69.16],[1977,70.41],[1978,70.87],[1979,71.68],[1980,71.75],[1981,71.94],[1982,72.77],[1983,72.69],[1984,72.98],[1985,73.26],[1986,73.66],[1987,74.05],[1988,74.07],[1989,74.63],[1990,74.25],[1991,74.19],[1992,74.86],[1993,74.77],[1994,75.76],[1995,75.58],[1996,75.53],[1997,75.97],[1998,76.18],[1999,76.36],[2000,76.84],[2001,77.11],[2002,77.29],[2003,77.49],[2004,78.32],[2005,78.2],[2006,78.94],[2007,79.12],[2008,78.77],[2009,78.94]]},{"name":"Romania","region":"Europe & Central Asia","income":[[1800,1093.92],[1820,1116.86],[1870,2196.25],[1890,2939.27],[1900,3337.87],[1910,3915.9],[1913,4106.97],[1926,2966.42],[1927,2928.18],[1928,2888.6],[1929,2718.46],[1930,2875.09],[1931,2898.76],[1932,2699.76],[1933,2794.09],[1934,2788.24],[1935,2821.77],[1936,2816.99],[1937,2666.64],[1938,2929.59],[1948,1925.76],[1950,2788.13],[1951,2962.12],[1952,3144.61],[1953,3328.7],[1954,3529.11],[1955,3722.17],[1956,3829.44],[1957,3943.37],[1958,4065.81],[1959,4205.87],[1960,4349.19],[1961,4602.36],[1962,4735],[1963,5040.1],[1964,5326.92],[1965,5628.67],[1966,6234.45],[1967,6470.87],[1968,6461.5],[1969,6661.29],[1970,6729.78],[1971,7598.18],[1972,8011.41],[1973,8201.28],[1974,8579.08],[1975,8872.78],[1976,9239.34],[1977,9356.4],[1978,9584.18],[1979,9785.25],[1980,9755.08],[1981,9640.37],[1982,9605.31],[1983,9498.4],[1984,9855.45],[1985,9809.79],[1986,9942.75],[1987,9696.27],[1988,9637.16],[1989,9295.59],[1990,8281.62],[1991,7226.05],[1992,6598.41],[1993,6705.77],[1994,6976.44],[1995,7486.9],[1996,7801.29],[1997,7346.55],[1998,7008.4],[1999,6935.17],[2000,7089.83],[2001,7501.93],[2002,7885.36],[2003,8280.64],[2004,8994.49],[2005,9374],[2006,10151.92],[2007,10826.03],[2008,11662.14],[2009,10868.12]],"population":[[1820,6389000],[1850,8000000],[1870,9179000],[1890,10373000],[1900,11000000],[1910,11866000],[1913,12527000],[1920,12340000],[1921,12479000],[1922,12666000],[1923,12843000],[1924,13020000],[1925,13209000],[1926,13399000],[1927,13574000],[1928,13760000],[1929,13952000],[1930,14141000],[1931,14355000],[1932,14554000],[1933,14730000],[1934,14924000],[1935,15069000],[1936,15256000],[1937,15434000],[1938,15601000],[1939,15751000],[1940,15907000],[1941,15774000],[1942,15839000],[1943,15840000],[1944,15946000],[1945,15929000],[1946,15971000],[1947,15849000],[1948,15893000],[1949,16084000],[1950,16311000],[1951,16464000],[1952,16630000],[1953,16847000],[1954,17040000],[1955,17325000],[1956,17583000],[1957,17829327],[1958,18055948],[1959,18225830],[1960,18403414],[1961,18566932],[1962,18680721],[1963,18813131],[1964,18927081],[1965,19027367],[1966,19140783],[1967,19284814],[1968,19720984],[1969,20010178],[1970,20252541],[1971,20469658],[1972,20662648],[1973,20827525],[1974,21028841],[1975,21245103],[1976,21445698],[1977,21658597],[1978,21831875],[1979,22001388],[1980,22130036],[1981,22256551],[1982,22356726],[1983,22407281],[1984,22453788],[1985,22521195],[1986,22599678],[1987,22686371],[1988,22768897],[1989,22852123],[1990,22865945],[1991,22825559],[1992,22797027],[1993,22768538],[1994,22738680],[1995,22692830],[1996,22627562],[1997,22562458],[1998,22515824],[1999,22480527],[2000,22451921],[2001,22428044],[2002,22404337],[2003,22380273],[2004,22355551],[2005,22329977],[2006,22303552],[2007,22276056],[2008,22246862]],"lifeExpectancy":[[1800,35.7],[1920,35.7],[1932,42.01],[1950,59.86],[1951,60.15],[1952,60.74],[1953,61.34],[1954,61.96],[1955,62.6],[1956,63.25],[1957,63.9],[1958,64.54],[1959,65.14],[1960,65.68],[1961,66.13],[1962,66.46],[1963,66.67],[1964,66.78],[1965,66.83],[1966,66.9],[1967,67.03],[1968,67.26],[1969,67.59],[1970,68],[1971,68.43],[1972,68.83],[1973,69.15],[1974,69.37],[1975,69.5],[1976,69.55],[1977,69.56],[1978,69.57],[1979,69.58],[1980,69.6],[1981,69.62],[1982,69.64],[1983,69.65],[1984,69.64],[1985,69.62],[1986,69.59],[1987,69.54],[1988,69.5],[1989,69.45],[1990,69.4],[1991,69.37],[1992,69.34],[1993,69.33],[1994,69.35],[1995,69.4],[1996,69.51],[1997,69.68],[1998,69.9],[1999,70.17],[2000,70.48],[2001,70.81],[2002,71.14],[2003,71.47],[2004,71.77],[2005,72.04],[2006,72.29],[2007,72.53],[2008,72.76],[2009,72.99]]},{"name":"Serbia","region":"Europe & Central Asia","income":[[1800,1308.87],[1820,1336.32],[1870,1481.18],[1890,2084.6],[1900,2230.41],[1910,2613.49],[1913,2613.56],[1920,2549.97],[1921,2575.11],[1922,2613.02],[1923,2710.16],[1924,2863.71],[1925,2961.99],[1926,3123.97],[1927,3029.72],[1928,3249.77],[1929,3373.22],[1930,3260.19],[1931,3117.55],[1932,2788.6],[1933,2835.85],[1934,2901.09],[1935,2818.2],[1936,3140.56],[1937,3148.91],[1938,3354.11],[1939,3490.94],[1947,3252.79],[1948,3828.92],[1949,4150.15],[1950,3835.16],[1951,3934.49],[1952,3581.46],[1953,4062.06],[1954,4233.2],[1955,4444.31],[1956,4307.01],[1957,4981.09],[1958,5143.12],[1959,5721.27],[1960,6026.13],[1961,6235.08],[1962,6289.63],[1963,6877.27],[1964,7465.67],[1965,7592.72],[1966,7925.24],[1967,7991.71],[1968,8091.85],[1969,8926.12],[1970,9283.91],[1971,10263.93],[1972,10522.07],[1973,10782.43],[1974,12065.32],[1975,11959.25],[1976,12213.27],[1977,12980.67],[1978,13578.31],[1979,14387.78],[1980,14992.89],[1981,15168.18],[1982,15181.09],[1983,15225.82],[1984,15526.1],[1985,15569.67],[1986,16126.32],[1987,15870.88],[1988,15578.62],[1989,15313.99],[1990,14143.66],[1991,12990.68],[1992,9325.07],[1993,6478.91],[1994,6639.38],[1995,7012.19],[1996,7344.15],[1997,7914.32],[1998,8133.2],[1999,6302.01],[2000,6607.33],[2001,6939.82],[2002,7236.08],[2003,7436.24],[2004,8081.66],[2005,8609],[2006,9093.5],[2007,9760.87],[2008,10301.22],[2009,10005.22]],"population":[[1800,2147197],[1820,2147197],[1950,6710261],[1951,6794255],[1952,6860147],[1953,6950699],[1954,7045988],[1955,7145006],[1956,7207162],[1957,7271135],[1958,7331982],[1959,7405493],[1960,7470936],[1961,7542114],[1962,7616060],[1963,7689816],[1964,7756518],[1965,7830883],[1966,7906036],[1967,7971222],[1968,8039165],[1969,8104980],[1970,8166726],[1971,8236091],[1972,8313288],[1973,8383682],[1974,8461865],[1975,8542000],[1976,8614774],[1977,8686367],[1978,8752904],[1979,8817307],[1980,8955000],[1981,8973246],[1982,9032824],[1983,9087632],[1984,9096747],[1985,9150329],[1986,9201321],[1987,9230783],[1988,9270114],[1989,9310769],[1990,9347973],[1991,9617827],[1992,9826397],[1993,9926991],[1994,10031261],[1995,10192265],[1996,10311510],[1997,10336594],[1998,10302093],[1999,10170917],[2000,10117908],[2001,10131896],[2002,10111559],[2003,10109579],[2004,10119145],[2005,10129640],[2006,10140311],[2007,10150265],[2008,10159046],[2009,10166507]],"lifeExpectancy":[[1800,35.5],[1920,35.5],[1950,56.31],[1951,56.75],[1952,57.61],[1953,58.44],[1954,59.23],[1955,59.98],[1956,60.69],[1957,61.37],[1958,62.02],[1959,62.63],[1960,63.21],[1961,63.77],[1962,64.31],[1963,64.83],[1964,65.33],[1965,65.81],[1966,66.27],[1967,66.7],[1968,67.11],[1969,67.5],[1970,67.87],[1971,68.24],[1972,68.61],[1973,68.97],[1974,69.32],[1975,69.65],[1976,69.91],[1977,70.1],[1978,70.22],[1979,70.27],[1980,70.28],[1981,70.27],[1982,70.29],[1983,70.36],[1984,70.47],[1985,70.64],[1986,70.84],[1987,71.05],[1988,71.25],[1989,71.42],[1990,71.56],[1991,71.67],[1992,71.76],[1993,71.83],[1994,71.91],[1995,71.99],[1996,72.09],[1997,72.21],[1998,72.35],[1999,72.51],[2000,72.69],[2001,72.89],[2002,73.09],[2003,73.28],[2004,73.46],[2005,73.63],[2006,73.78],[2007,73.94],[2008,74.08],[2009,74.23]]},{"name":"Slovak Republic","region":"Europe & Central Asia","income":[[1800,1197.6],[1820,1197.6],[1850,1522.03],[1870,1641.83],[1890,2122.91],[1900,2438.9],[1910,2808.4],[1913,2955.87],[1920,2726.87],[1921,2940.51],[1922,2829.41],[1923,3033.56],[1924,3318.73],[1925,3675.88],[1926,3632.7],[1927,3881.4],[1928,4199.46],[1929,4291.43],[1930,4127.01],[1931,3961.86],[1932,3779.92],[1933,3599.45],[1934,3445.75],[1935,3399.29],[1936,3665.52],[1937,4064.56],[1948,4356.41],[1949,4597.55],[1950,4937.84],[1951,4970.41],[1952,5074.66],[1953,4999.31],[1954,5150.73],[1955,5532.03],[1956,5797.5],[1957,6093.26],[1958,6502.62],[1959,6742.24],[1960,7205.56],[1961,7424.43],[1962,7481.11],[1963,7292.14],[1964,7578.14],[1965,7804.18],[1966,8097.45],[1967,8412.9],[1968,8777.18],[1969,8962.51],[1970,9121.12],[1971,9391.97],[1972,9674.17],[1973,9932.09],[1974,10216.42],[1975,10437.16],[1976,10524.37],[1977,10922.66],[1978,10983.19],[1979,11008.51],[1980,11259.07],[1981,11160.97],[1982,11348.55],[1983,11492.08],[1984,11735.04],[1985,11802.32],[1986,11999.9],[1987,12037.27],[1988,12284.16],[1989,12367.44],[1990,12007.55],[1991,10215.84],[1992,9498.47],[1993,9636.52],[1994,10195.81],[1995,10759.84],[1996,11482.63],[1997,12126.23],[1998,12564.34],[1999,12600.77],[2000,12689.76],[2001,13098.91],[2002,13638.78],[2003,14207.56],[2004,14977.87],[2005,15881],[2006,17217.17],[2007,19012.69],[2008,20143.88],[2009,19186.01]],"population":[[1800,2140651],[1820,2140651],[1950,3463446],[1951,3508698],[1952,3558137],[1953,3598761],[1954,3661437],[1955,3726601],[1956,3787111],[1957,3844277],[1958,3899751],[1959,3946039],[1960,3994270],[1961,4191642],[1962,4237384],[1963,4281858],[1964,4326174],[1965,4369939],[1966,4408988],[1967,4442238],[1968,4471590],[1969,4477625],[1970,4523873],[1971,4556627],[1972,4593433],[1973,4637193],[1974,4682100],[1975,4729718],[1976,4778540],[1977,4827803],[1978,4876017],[1979,4922558],[1980,4965958],[1981,5013692],[1982,5048043],[1983,5081376],[1984,5114080],[1985,5144632],[1986,5172084],[1987,5199318],[1988,5223222],[1989,5244662],[1990,5262616],[1991,5281610],[1992,5302888],[1993,5323577],[1994,5345264],[1995,5361594],[1996,5373190],[1997,5383010],[1998,5390236],[1999,5395739],[2000,5400320],[2001,5404681],[2002,5410052],[2003,5416406],[2004,5423567],[2005,5431363],[2006,5439448],[2007,5447502],[2008,5455407]],"lifeExpectancy":[[1800,36.4],[1895,36.4],[1921,44.2],[1930,49.9],[1937,53.2],[1950,60.89],[1951,61.31],[1952,64.36],[1953,65.66],[1954,66.71],[1955,67.84],[1956,68.37],[1957,67.45],[1958,69.35],[1959,69.03],[1960,70.35],[1961,70.79],[1962,70.33],[1963,70.71],[1964,71.09],[1965,70.3],[1966,70.44],[1967,70.98],[1968,70.5],[1969,69.81],[1970,69.74],[1971,69.88],[1972,70.35],[1973,70.05],[1974,70.21],[1975,70.33],[1976,70.5],[1977,70.45],[1978,70.46],[1979,70.79],[1980,70.44],[1981,70.68],[1982,70.8],[1983,70.49],[1984,70.73],[1985,70.74],[1986,70.91],[1987,71.08],[1988,71.16],[1989,70.95],[1990,70.83],[1991,70.9],[1992,71.38],[1993,71.9],[1994,72.36],[1995,72.29],[1996,72.77],[1997,72.71],[1998,72.62],[1999,72.99],[2000,73.19],[2001,73.62],[2002,73.81],[2003,73.85],[2004,74.26],[2005,74.2],[2006,74.46],[2007,74.52],[2008,74.88],[2009,74.94]]},{"name":"Slovenia","region":"Europe & Central Asia","income":[[1800,1357.95],[1820,1386.44],[1870,1743.21],[1890,2453.37],[1900,2624.99],[1910,3075.84],[1913,3075.92],[1920,3001.07],[1921,3030.67],[1922,3075.28],[1923,3189.6],[1924,3370.32],[1925,3485.98],[1926,3676.61],[1927,3565.7],[1928,3824.67],[1929,3969.96],[1930,3836.93],[1931,3669.07],[1932,3281.92],[1933,3337.53],[1934,3414.31],[1935,3316.75],[1936,3696.15],[1937,3705.97],[1938,3947.48],[1939,4108.51],[1947,3828.23],[1948,4506.28],[1949,4884.33],[1950,4513.62],[1951,4630.53],[1952,4215.04],[1953,4780.67],[1954,4982.08],[1955,5230.53],[1956,5068.95],[1957,5862.28],[1958,6052.97],[1959,6733.39],[1960,7092.19],[1961,7338.11],[1962,7402.3],[1963,8093.9],[1964,8786.4],[1965,8935.92],[1966,9327.26],[1967,9405.49],[1968,9523.35],[1969,10505.21],[1970,10926.29],[1971,12079.69],[1972,12383.49],[1973,12689.91],[1974,14199.74],[1975,14074.92],[1976,14373.88],[1977,15277.03],[1978,15980.4],[1979,16933.07],[1980,17645.22],[1981,17851.52],[1982,17866.72],[1983,17919.36],[1984,18272.76],[1985,18324.04],[1986,18979.17],[1987,18678.53],[1988,18334.58],[1989,18023.13],[1990,16645.76],[1991,15100.59],[1992,14214.72],[1993,14560.02],[1994,15279.58],[1995,15857.28],[1996,16392.55],[1997,17161.11],[1998,17747.88],[1999,18663.4],[2000,19399.69],[2001,19966.89],[2002,20660.02],[2003,21203.46],[2004,22113.22],[2005,23004],[2006,24255.45],[2007,25914.73],[2008,26779.28],[2009,24778.21]],"population":[[1800,469664],[1820,469664],[1950,1467759],[1951,1483131],[1952,1489518],[1953,1497875],[1954,1509187],[1955,1517499],[1956,1524799],[1957,1533070],[1958,1540332],[1959,1548561],[1960,1557756],[1961,1571851],[1962,1582962],[1963,1595028],[1964,1606083],[1965,1620052],[1966,1632029],[1967,1646912],[1968,1657849],[1969,1666805],[1970,1675739],[1971,1685624],[1972,1694510],[1973,1703373],[1974,1713184],[1975,1722000],[1976,1734454],[1977,1746919],[1978,1759395],[1979,1772854],[1980,1833000],[1981,1839256],[1982,1861252],[1983,1878555],[1984,1896413],[1985,1914220],[1986,1932129],[1987,1945870],[1988,1961775],[1989,1976217],[1990,1991210],[1991,1999480],[1992,1999210],[1993,1999926],[1994,2001036],[1995,2002827],[1996,2007429],[1997,2011612],[1998,2010807],[1999,2009653],[2000,2010557],[2001,2011179],[2002,2011497],[2003,2011604],[2004,2011473],[2005,2011070],[2006,2010347],[2007,2009245],[2008,2007711]],"lifeExpectancy":[[1800,36.6],[1920,36.6],[1950,64.45],[1951,64.75],[1952,65.32],[1953,65.87],[1954,66.38],[1955,66.86],[1956,67.3],[1957,67.71],[1958,68.08],[1959,68.4],[1960,68.68],[1961,68.89],[1962,69.05],[1963,69.15],[1964,69.2],[1965,69.22],[1966,69.22],[1967,69.23],[1968,69.26],[1969,69.32],[1970,69.42],[1971,69.57],[1972,69.76],[1973,69.97],[1974,70.2],[1975,70.43],[1976,70.63],[1977,70.78],[1978,70.89],[1979,70.97],[1980,71.02],[1981,71.07],[1982,71.16],[1983,70.88],[1984,71.34],[1985,71.77],[1986,72.32],[1987,72.25],[1988,72.9],[1989,73.35],[1990,73.86],[1991,73.5],[1992,73.64],[1993,73.52],[1994,73.96],[1995,74.67],[1996,75.11],[1997,75.13],[1998,75.26],[1999,75.64],[2000,76.11],[2001,76.38],[2002,76.66],[2003,76.55],[2004,77.28],[2005,77.6],[2006,78.24],[2007,78.15],[2008,78.41],[2009,78.63]]},{"name":"Spain","region":"Europe & Central Asia","income":[[1800,1443.02],[1820,1510.35],[1821,1513.78],[1822,1517.21],[1823,1520.65],[1824,1524.09],[1825,1527.55],[1826,1531.01],[1827,1534.48],[1828,1537.96],[1829,1541.44],[1830,1544.93],[1831,1548.44],[1832,1551.94],[1833,1555.46],[1834,1558.99],[1835,1562.52],[1836,1566.06],[1837,1569.61],[1838,1573.17],[1839,1576.73],[1840,1580.31],[1841,1583.89],[1842,1587.48],[1843,1591.07],[1844,1594.68],[1845,1598.29],[1846,1601.92],[1847,1605.55],[1848,1609.18],[1849,1612.83],[1850,1616.49],[1851,1632.37],[1852,1697.44],[1853,1702.12],[1854,1723.99],[1855,1801.43],[1856,1743.21],[1857,1695.79],[1858,1727.9],[1859,1798.2],[1860,1852.46],[1861,1870.46],[1862,1876.68],[1863,1913.85],[1864,1908.72],[1865,1843.65],[1866,1933.43],[1867,1922.37],[1868,1722.31],[1869,1770.45],[1870,1808.9],[1871,1945.24],[1872,2207.57],[1873,2394.12],[1874,2186.23],[1875,2242.35],[1876,2276.7],[1877,2500.26],[1878,2424.55],[1879,2278.23],[1880,2466.65],[1881,2516.2],[1882,2535.07],[1883,2578.06],[1884,2571.04],[1885,2489.16],[1886,2422.5],[1887,2375.82],[1888,2459.86],[1889,2443.33],[1890,2433.81],[1891,2478.14],[1892,2652.1],[1893,2547.88],[1894,2564.95],[1895,2531.14],[1896,2319.09],[1897,2426.09],[1898,2601.44],[1899,2631.41],[1900,2676.85],[1901,2848.79],[1902,2747],[1903,2740.65],[1904,2712.76],[1905,2663.39],[1906,2774.32],[1907,2841.88],[1908,2932.93],[1909,2963.39],[1910,2839.94],[1911,3022.91],[1912,2980.16],[1913,3080.48],[1914,3017.63],[1915,3046.46],[1916,3166.83],[1917,3107.16],[1918,3064.66],[1919,3063.21],[1920,3262.65],[1921,3315.45],[1922,3422.14],[1923,3431.6],[1924,3493.17],[1925,3672.26],[1926,3621.9],[1927,3896.12],[1928,3872.19],[1929,4104.43],[1930,3926.82],[1931,3789.68],[1932,3835.49],[1933,3725.35],[1934,3830.02],[1935,3870.45],[1936,2980.4],[1937,2709.06],[1938,2682.76],[1939,2869.22],[1940,3117.62],[1941,3041.43],[1942,3186.35],[1943,3278.25],[1944,3403.92],[1945,3149.32],[1946,3265.09],[1947,3293.12],[1948,3275.47],[1949,3229.14],[1950,3280.32],[1951,3576.32],[1952,3834.03],[1953,3787.81],[1954,4039.52],[1955,4163.5],[1956,4462.54],[1957,4564.8],[1958,4720.21],[1959,4571.3],[1960,4603.07],[1961,5149.13],[1962,5693.84],[1963,6221.1],[1964,6765.93],[1965,7136.52],[1966,7582.37],[1967,7993.51],[1968,8374.24],[1969,9039.41],[1970,9469.63],[1971,9918.21],[1972,10638.75],[1973,11481.02],[1974,12212.46],[1975,12507.48],[1976,12886.57],[1977,13236.92],[1978,13521.55],[1979,13589.12],[1980,13790.56],[1981,13765.39],[1982,13926.17],[1983,14203.11],[1984,14342.73],[1985,14568.71],[1986,14982.65],[1987,15764.98],[1988,16553.14],[1989,17355.75],[1990,18064.92],[1991,18472.91],[1992,18603.06],[1993,18374.87],[1994,18782.73],[1995,19272.14],[1996,19709.87],[1997,20445.3],[1998,21333.94],[1999,22286.36],[2000,23410.16],[2001,24221.8],[2002,24835.47],[2003,25564.29],[2004,26357.05],[2005,27270],[2006,27898.65],[2007,28427.37],[2008,28159.21],[2009,26811.93]],"population":[[1820,12203000],[1821,12284000],[1822,12366000],[1823,12449000],[1824,12532000],[1825,12615000],[1826,12699000],[1827,12784000],[1828,12869000],[1829,12955000],[1830,13041000],[1831,13128000],[1832,13216000],[1833,13304000],[1834,13392000],[1835,13482000],[1836,13571000],[1837,13662000],[1838,13753000],[1839,13845000],[1840,13937000],[1841,14030000],[1842,14123000],[1843,14217000],[1844,14312000],[1845,14407000],[1846,14503000],[1847,14600000],[1848,14697000],[1849,14795000],[1850,14894000],[1851,14974000],[1852,15055000],[1853,15136000],[1854,15217000],[1855,15299000],[1856,15381000],[1857,15455000],[1858,15526000],[1859,15584000],[1860,15642000],[1861,15699000],[1862,15754000],[1863,15809000],[1864,15864000],[1865,15920000],[1866,15976000],[1867,16032000],[1868,16088000],[1869,16144000],[1870,16201000],[1871,16258000],[1872,16315000],[1873,16372000],[1874,16429000],[1875,16487000],[1876,16545000],[1877,16603000],[1878,16677000],[1879,16768000],[1880,16859000],[1881,16951000],[1882,17043000],[1883,17136000],[1884,17230000],[1885,17323000],[1886,17418000],[1887,17513000],[1888,17600000],[1889,17678000],[1890,17757000],[1891,17836000],[1892,17916000],[1893,17996000],[1894,18076000],[1895,18157000],[1896,18238000],[1897,18320000],[1898,18402000],[1899,18484000],[1900,18566000],[1901,18659000],[1902,18788000],[1903,18919000],[1904,19050000],[1905,19133000],[1906,19316000],[1907,19450000],[1908,19585000],[1909,19721000],[1910,19858000],[1911,19994000],[1912,20128000],[1913,20263000],[1914,20398000],[1915,20535000],[1916,20673000],[1917,20811000],[1918,20950000],[1919,21091000],[1920,21232000],[1921,21411000],[1922,21628000],[1923,21847000],[1924,22069000],[1925,22292000],[1926,22518000],[1927,22747000],[1928,22977000],[1929,23210000],[1930,23445000],[1931,23675000],[1932,23897000],[1933,24122000],[1934,24349000],[1935,24579000],[1936,24810000],[1937,25043000],[1938,25279000],[1939,25517000],[1940,25757000],[1941,25979000],[1942,26182000],[1943,26387000],[1944,26594000],[1945,26802000],[1946,27012000],[1947,27223000],[1948,27437000],[1949,27651000],[1950,28062963],[1951,28298010],[1952,28549870],[1953,28804128],[1954,29060413],[1955,29318745],[1956,29579142],[1957,29841614],[1958,30106188],[1959,30372877],[1960,30641187],[1961,30903894],[1962,31158061],[1963,31429834],[1964,31740862],[1965,32084511],[1966,32451975],[1967,32850275],[1968,33239301],[1969,33566084],[1970,33876479],[1971,34195056],[1972,34513161],[1973,34836716],[1974,35184287],[1975,35563535],[1976,35996780],[1977,36439000],[1978,36861034],[1979,37200014],[1980,37488360],[1981,37750800],[1982,37983310],[1983,38184166],[1984,38362861],[1985,38534853],[1986,38707556],[1987,38880702],[1988,39053881],[1989,39214523],[1990,39350769],[1991,39461418],[1992,39549438],[1993,39627587],[1994,39690971],[1995,39749715],[1996,39803829],[1997,39855442],[1998,39906235],[1999,39953263],[2000,40016081],[2001,40087104],[2002,40152517],[2003,40217413],[2004,40280780],[2005,40341462],[2006,40397842],[2007,40448191],[2008,40491051]],"lifeExpectancy":[[1800,29.5],[1882,29.5],[1892,32.1],[1900,34.8],[1908,41.45],[1909,41.06],[1910,40.92],[1911,39.8],[1912,43.53],[1913,42.56],[1914,42.84],[1915,43.05],[1916,43.98],[1917,42.63],[1918,30.29],[1919,41.12],[1920,39.31],[1921,42.03],[1922,44.21],[1923,44.75],[1924,46.3],[1925,46.95],[1926,47.76],[1927,48.49],[1928,48.67],[1929,49.49],[1930,49.34],[1931,49.25],[1932,51.2],[1933,51.6],[1934,52.24],[1935,52.72],[1936,50.9],[1937,47.22],[1938,47.53],[1939,47.09],[1940,48.39],[1941,47.16],[1942,52.48],[1943,54.85],[1944,56.25],[1945,57.84],[1946,57.57],[1947,59.33],[1948,61.27],[1949,61.02],[1950,61.87],[1951,61.52],[1952,64.94],[1953,65.81],[1954,67.01],[1955,66.78],[1956,66.82],[1957,66.66],[1958,68.85],[1959,68.77],[1960,69.27],[1961,69.66],[1962,69.69],[1963,69.85],[1964,70.58],[1965,70.99],[1966,71.25],[1967,71.44],[1968,71.73],[1969,71.26],[1970,72.24],[1971,71.85],[1972,73.06],[1973,72.84],[1974,73.22],[1975,73.55],[1976,73.87],[1977,74.39],[1978,74.58],[1979,75.12],[1980,75.6],[1981,75.74],[1982,76.3],[1983,76.08],[1984,76.46],[1985,76.42],[1986,76.67],[1987,76.9],[1988,76.91],[1989,76.98],[1990,76.99],[1991,77.12],[1992,77.57],[1993,77.7],[1994,78.05],[1995,78.12],[1996,78.26],[1997,78.77],[1998,78.85],[1999,78.86],[2000,79.34],[2001,79.69],[2002,79.78],[2003,79.72],[2004,80.28],[2005,80.28],[2006,80.94],[2007,80.75],[2008,80.94],[2009,81.11]]},{"name":"Sweden","region":"Europe & Central Asia","income":[[1800,1100],[1801,1105],[1802,1159],[1803,1141],[1804,1081],[1805,1140],[1806,1152],[1807,1117],[1808,1035],[1809,1037],[1810,1131],[1811,1209],[1812,1136],[1813,1168],[1814,1192],[1815,1216],[1816,1217],[1817,1176],[1818,1170],[1819,1157],[1820,1173],[1821,1196],[1822,1209],[1823,1211],[1824,1230],[1825,1253],[1826,1230],[1827,1204],[1828,1221],[1829,1231],[1830,1214],[1831,1246],[1832,1214],[1833,1259],[1834,1273],[1835,1276],[1836,1311],[1837,1293],[1838,1270],[1839,1295],[1840,1306],[1841,1296],[1842,1232],[1843,1271],[1844,1334],[1845,1341],[1846,1306],[1847,1343],[1848,1355],[1849,1388],[1850,1423],[1851,1412],[1852,1393],[1853,1410],[1854,1434],[1855,1537],[1856,1554],[1857,1596],[1858,1576],[1859,1631],[1860,1652],[1861,1597],[1862,1574],[1863,1642],[1864,1636],[1865,1674],[1866,1636],[1867,1672],[1868,1517],[1869,1621],[1870,1866],[1871,1921],[1872,1985],[1873,2043],[1874,2105],[1875,2016],[1876,2160],[1877,2107],[1878,1992],[1879,2084],[1880,2064],[1881,2100],[1882,2015],[1883,2193],[1884,2143],[1885,2167],[1886,2178],[1887,2090],[1888,2160],[1889,2176],[1890,2224],[1891,2346],[1892,2309],[1893,2377],[1894,2386],[1895,2498],[1896,2554],[1897,2675],[1898,2788],[1899,2903],[1900,2897],[1901,2930],[1902,2916],[1903,3097],[1904,3133],[1905,3100],[1906,3330],[1907,3588],[1908,3423],[1909,3474],[1910,3563],[1911,3667],[1912,3838],[1913,3994],[1914,4097],[1915,4185],[1916,4468],[1917,4154],[1918,3988],[1919,4111],[1920,4217],[1921,3854],[1922,4206],[1923,4352],[1924,4628],[1925,4639],[1926,4858],[1927,5046],[1928,5167],[1929,5457],[1930,5517],[1931,5416],[1932,5132],[1933,5329],[1934,5685],[1935,5976],[1936,6207],[1937,6359],[1938,6483],[1939,7001],[1940,6742],[1941,6729],[1942,6648],[1943,6851],[1944,7033],[1945,7196],[1946,7905],[1947,8415],[1948,8496],[1949,8643],[1950,9073],[1951,9255],[1952,9223],[1953,9518],[1954,9947],[1955,10143],[1956,10407],[1957,10640],[1958,10944],[1959,11384],[1960,11952],[1961,12476],[1962,13138],[1963,13733],[1964,14703],[1965,15287],[1966,15782],[1967,16140],[1968,16732],[1969,17523],[1970,18303],[1971,18205],[1972,18723],[1973,19399],[1974,19745],[1975,20049],[1976,20036],[1977,19652],[1978,20000],[1979,20715],[1980,21179],[1981,21266],[1982,21382],[1983,21910],[1984,22839],[1985,23321],[1986,23615],[1987,24223],[1988,24572],[1989,24941],[1990,25295],[1991,25001],[1992,24343],[1993,23670],[1994,24141],[1995,24724],[1996,24959],[1997,25567],[1998,26445],[1999,27572],[2000,28659],[2001,28866],[2002,29472],[2003,29941],[2004,31074],[2005,31995],[2006,33200],[2007,33800],[2008,33634],[2009,32021]],"population":[[1820,2585000],[1821,2611000],[1822,2646000],[1823,2689000],[1824,2727000],[1825,2771000],[1826,2805000],[1827,2828000],[1828,2847000],[1829,2863000],[1830,2888000],[1831,2901000],[1832,2923000],[1833,2959000],[1834,2983000],[1835,3025000],[1836,3059000],[1837,3076000],[1838,3090000],[1839,3106000],[1840,3139000],[1841,3173000],[1842,3207000],[1843,3237000],[1844,3275000],[1845,3317000],[1846,3343000],[1847,3362000],[1848,3397000],[1849,3441000],[1850,3483000],[1851,3517000],[1852,3540000],[1853,3563000],[1854,3608000],[1855,3641000],[1856,3673000],[1857,3688000],[1858,3734000],[1859,3788000],[1860,3860000],[1861,3917000],[1862,3966000],[1863,4023000],[1864,4070000],[1865,4114000],[1866,4161000],[1867,4196000],[1868,4173000],[1869,4159000],[1870,4169000],[1871,4186000],[1872,4227000],[1873,4274000],[1874,4320000],[1875,4362000],[1876,4407000],[1877,4457000],[1878,4508000],[1879,4555000],[1880,4572000],[1881,4569000],[1882,4576000],[1883,4591000],[1884,4624000],[1885,4664000],[1886,4700000],[1887,4726000],[1888,4742000],[1889,4761000],[1890,4780000],[1891,4794000],[1892,4805000],[1893,4816000],[1894,4849000],[1895,4896000],[1896,4941000],[1897,4986000],[1898,5036000],[1899,5080000],[1900,5117000],[1901,5156000],[1902,5187000],[1903,5210000],[1904,5241000],[1905,5278000],[1906,5316000],[1907,5357000],[1908,5404000],[1909,5453000],[1910,5449000],[1911,5542000],[1912,5583000],[1913,5621000],[1914,5659000],[1915,5696000],[1916,5735000],[1917,5779000],[1918,5807000],[1919,5830000],[1920,5876000],[1921,5929000],[1922,5971000],[1923,5997000],[1924,6021000],[1925,6045000],[1926,6064000],[1927,6081000],[1928,6097000],[1929,6113000],[1930,6131000],[1931,6152000],[1932,6176000],[1933,6201000],[1934,6222000],[1935,6242000],[1936,6259000],[1937,6276000],[1938,6298000],[1939,6326000],[1940,6356000],[1941,6389000],[1942,6432000],[1943,6491000],[1944,6560000],[1945,6636000],[1946,6719000],[1947,6803000],[1948,6884000],[1949,6956000],[1950,7014005],[1951,7072830],[1952,7124673],[1953,7171461],[1954,7213490],[1955,7262388],[1956,7314552],[1957,7363802],[1958,7409144],[1959,7446249],[1960,7480395],[1961,7519998],[1962,7561588],[1963,7604328],[1964,7661354],[1965,7733853],[1966,7807797],[1967,7867931],[1968,7912217],[1969,7968018],[1970,8042803],[1971,8098328],[1972,8122293],[1973,8136774],[1974,8160560],[1975,8192566],[1976,8222310],[1977,8251648],[1978,8275778],[1979,8293723],[1980,8310473],[1981,8320485],[1982,8325260],[1983,8329028],[1984,8342621],[1985,8356337],[1986,8384069],[1987,8421403],[1988,8469339],[1989,8526276],[1990,8600815],[1991,8668112],[1992,8718867],[1993,8769284],[1994,8831493],[1995,8877890],[1996,8892234],[1997,8897619],[1998,8902684],[1999,8909790],[2000,8923569],[2001,8939915],[2002,8954175],[2003,8970306],[2004,8986400],[2005,9001774],[2006,9016596],[2007,9031088],[2008,9045389]],"lifeExpectancy":[[1800,32.16],[1801,36.9],[1802,40.2],[1803,40.28],[1804,39.7],[1805,41.05],[1806,36.17],[1807,38.76],[1808,30.15],[1809,26.9],[1810,31.99],[1811,34.58],[1812,35.07],[1813,36.49],[1814,38.57],[1815,40.42],[1816,41.74],[1817,40.29],[1818,40.02],[1819,36.97],[1820,40.23],[1821,38.14],[1822,42.76],[1823,45.19],[1824,44.97],[1825,45.24],[1826,43.08],[1827,42.64],[1828,37.74],[1829,36.18],[1830,40.97],[1831,38.98],[1832,40.84],[1833,42.5],[1834,38.53],[1835,47.14],[1836,45.13],[1837,39.57],[1838,39.98],[1839,39.88],[1840,43.98],[1841,45.17],[1842,42.8],[1843,42.82],[1844,44.03],[1845,45.99],[1846,42.04],[1847,40.12],[1848,45.13],[1849,44.5],[1850,44.69],[1851,43.62],[1852,41.35],[1853,39.99],[1854,44.55],[1855,43.08],[1856,42.14],[1857,34.64],[1858,42],[1859,44.27],[1860,48.47],[1861,47.12],[1862,42.55],[1863,45.38],[1864,44.77],[1865,45.4],[1866,44.73],[1867,46.18],[1868,43.23],[1869,40.96],[1870,45.01],[1871,48.98],[1872,50.08],[1873,48.68],[1874,44.28],[1875,44.61],[1876,44.82],[1877,46.05],[1878,46.73],[1879,48.92],[1880,47.62],[1881,48.5],[1882,48.59],[1883,49.05],[1884,49.17],[1885,48.94],[1886,50.6],[1887,51.46],[1888,52.35],[1889,52.3],[1890,50.48],[1891,51.09],[1892,50.61],[1893,51.36],[1894,52.1],[1895,54.16],[1896,53.49],[1897,54.14],[1898,54.69],[1899,50.95],[1900,52.27],[1901,52.92],[1902,54.76],[1903,55.09],[1904,55.4],[1905,54.55],[1906,56.7],[1907,56.98],[1908,56.42],[1909,58.42],[1910,57.8],[1911,58.03],[1912,57.79],[1913,58.68],[1914,58.26],[1915,57.2],[1916,58.22],[1917,58.9],[1918,49.81],[1919,56.57],[1920,58.81],[1921,61.03],[1922,61.05],[1923,63],[1924,62],[1925,62.56],[1926,62.79],[1927,61.59],[1928,62.27],[1929,62.32],[1930,63.19],[1931,62.69],[1932,63.95],[1933,64.83],[1934,64.98],[1935,64.86],[1936,64.61],[1937,64.63],[1938,65.57],[1939,66.4],[1940,66.74],[1941,67.03],[1942,68.97],[1943,68.72],[1944,67.74],[1945,68.34],[1946,69.51],[1947,69.47],[1948,70.73],[1949,70.8],[1950,71.14],[1951,71.37],[1952,71.86],[1953,71.9],[1954,72.36],[1955,72.6],[1956,72.66],[1957,72.49],[1958,73.14],[1959,73.37],[1960,73.04],[1961,73.5],[1962,73.37],[1963,73.56],[1964,73.73],[1965,73.88],[1966,74.13],[1967,74.16],[1968,74.03],[1969,74.15],[1970,74.7],[1971,74.62],[1972,74.72],[1973,74.88],[1974,74.99],[1975,75],[1976,75.01],[1977,75.44],[1978,75.53],[1979,75.57],[1980,75.8],[1981,76.1],[1982,76.42],[1983,76.66],[1984,76.92],[1985,76.78],[1986,77.04],[1987,77.19],[1988,77.08],[1989,77.74],[1990,77.67],[1991,77.81],[1992,78.16],[1993,78.24],[1994,78.86],[1995,78.94],[1996,79.15],[1997,79.39],[1998,79.53],[1999,79.61],[2000,79.84],[2001,79.93],[2002,80.04],[2003,80.33],[2004,80.67],[2005,80.75],[2006,80.95],[2007,81.08],[2008,80.97],[2009,81.12]]},{"name":"Switzerland","region":"Europe & Central Asia","income":[[1800,1612.48],[1801,1615.2],[1802,1617.94],[1803,1620.67],[1804,1623.42],[1805,1626.16],[1806,1628.91],[1807,1631.67],[1808,1634.43],[1809,1637.19],[1810,1639.96],[1811,1642.74],[1812,1645.52],[1813,1648.3],[1814,1651.09],[1815,1653.88],[1816,1656.68],[1817,1659.48],[1818,1662.29],[1819,1665.1],[1820,1667.92],[1821,1685.32],[1822,1702.91],[1823,1720.68],[1824,1738.64],[1825,1756.78],[1826,1775.11],[1827,1793.63],[1828,1812.35],[1829,1831.26],[1830,1850.37],[1831,1869.68],[1832,1889.19],[1833,1908.9],[1834,1928.82],[1835,1948.95],[1836,1969.29],[1837,1989.84],[1838,2010.6],[1839,2031.58],[1840,2052.78],[1841,2074.21],[1842,2095.85],[1843,2117.72],[1844,2139.82],[1845,2162.15],[1846,2184.71],[1847,2207.51],[1848,2230.54],[1849,2253.82],[1850,2277.34],[1851,2317.03],[1852,2456.55],[1853,2365.44],[1854,2089.19],[1855,2426.6],[1856,2409.29],[1857,2600.59],[1858,3263.3],[1859,3085.16],[1860,2669.3],[1861,2843.62],[1862,3043.76],[1863,3025.86],[1864,2848.95],[1865,3074.86],[1866,3029.94],[1867,2649.21],[1868,3110.78],[1869,3383.55],[1870,3216.2],[1871,3404.86],[1872,3224.55],[1873,3293.34],[1874,3666.89],[1875,4047.59],[1876,3929.51],[1877,3523.54],[1878,3567.13],[1879,3534.6],[1880,3748.24],[1881,3795.81],[1882,3671.4],[1883,3666.4],[1884,4065.55],[1885,4368.15],[1886,4522.68],[1887,4485.18],[1888,4574.38],[1889,4561.95],[1890,4867.95],[1891,4569.92],[1892,4906.55],[1893,5039.99],[1894,4864.53],[1895,5336.39],[1896,5410.17],[1897,5622.86],[1898,5656.7],[1899,5867.33],[1900,5864.6],[1901,5729.43],[1902,5787.75],[1903,5603.22],[1904,5827.02],[1905,5987],[1906,6434.66],[1907,6414.69],[1908,6239.63],[1909,6486.51],[1910,6626.79],[1911,6697.87],[1912,6690.97],[1913,6526.72],[1914,6476.75],[1915,6563.87],[1916,6543.2],[1917,5820.1],[1918,5811.42],[1919,6211.34],[1920,6600.64],[1921,6438.49],[1922,7065.58],[1923,7457.2],[1924,7709.48],[1925,8243.02],[1926,8607.39],[1927,9014.16],[1928,9441.41],[1929,9687.66],[1930,9556.05],[1931,9092.53],[1932,8736.36],[1933,9128.37],[1934,9106.96],[1935,9037.66],[1936,9039.73],[1937,9442.14],[1938,9776.07],[1939,9731.54],[1940,9786.93],[1941,9657.3],[1942,9343.95],[1943,9182.31],[1944,9315.64],[1945,11860.83],[1946,12516.48],[1947,13847.18],[1948,13947.1],[1949,13397.73],[1950,13867.61],[1951,14816.9],[1952,14734.23],[1953,15055.83],[1954,15739.4],[1955,16626.49],[1956,17501.93],[1957,17909.49],[1958,17284.27],[1959,18161.49],[1960,19059.01],[1961,20041.22],[1962,20431.09],[1963,20977.27],[1964,21712.09],[1965,22190.77],[1966,22533.04],[1967,22966.14],[1968,23522.13],[1969,24527.55],[1970,25862.82],[1971,26593.27],[1972,27195.11],[1973,27851.76],[1974,28174.33],[1975,26353.03],[1976,26270.87],[1977,26982.29],[1978,27023.44],[1979,27617.12],[1980,28732.37],[1981,29003.27],[1982,28397.72],[1983,28396.89],[1984,29128.19],[1985,29967.6],[1986,30273.42],[1987,30281.7],[1988,30971.59],[1989,32031.33],[1990,32875.78],[1991,32207.74],[1992,31871.53],[1993,31515.65],[1994,31599.62],[1995,31530.77],[1996,31589.72],[1997,32135.32],[1998,33039.5],[1999,33349.65],[2000,34386.9],[2001,34569.38],[2002,34480.96],[2003,34183.28],[2004,34864.09],[2005,35520],[2006,36745.13],[2007,38007.34],[2008,38623.13],[2009,38003.92]],"population":[[1820,1986000],[1821,1998000],[1822,2008000],[1823,2020000],[1824,2031000],[1825,2042000],[1826,2054000],[1827,2065000],[1828,2077000],[1829,2088000],[1830,2100000],[1831,2112000],[1832,2123000],[1833,2135000],[1834,2147000],[1835,2159000],[1836,2171000],[1837,2183000],[1838,2195000],[1839,2208000],[1840,2220000],[1841,2235000],[1842,2251000],[1843,2266000],[1844,2282000],[1845,2298000],[1846,2314000],[1847,2330000],[1848,2346000],[1849,2363000],[1850,2379000],[1851,2399000],[1852,2406000],[1853,2412000],[1854,2427000],[1855,2442000],[1856,2457000],[1857,2471000],[1858,2484000],[1859,2497000],[1860,2510000],[1861,2524000],[1862,2538000],[1863,2552000],[1864,2566000],[1865,2579000],[1866,2593000],[1867,2607000],[1868,2623000],[1869,2639000],[1870,2655000],[1871,2680000],[1872,2697000],[1873,2715000],[1874,2733000],[1875,2750000],[1876,2768000],[1877,2786000],[1878,2803000],[1879,2821000],[1880,2839000],[1881,2853000],[1882,2863000],[1883,2874000],[1884,2885000],[1885,2896000],[1886,2907000],[1887,2918000],[1888,2929000],[1889,2940000],[1890,2951000],[1891,2965000],[1892,3002000],[1893,3040000],[1894,3077000],[1895,3114000],[1896,3151000],[1897,3188000],[1898,3226000],[1899,3263000],[1900,3300000],[1901,3341000],[1902,3384000],[1903,3428000],[1904,3472000],[1905,3461000],[1906,3560000],[1907,3604000],[1908,3647000],[1909,3691000],[1910,3735000],[1911,3776000],[1912,3819000],[1913,3864000],[1914,3897000],[1915,3883000],[1916,3883000],[1917,3888000],[1918,3880000],[1919,3869000],[1920,3877000],[1921,3876000],[1922,3874000],[1923,3883000],[1924,3896000],[1925,3910000],[1926,3932000],[1927,3956000],[1928,3988000],[1929,4022000],[1930,4051000],[1931,4080000],[1932,4102000],[1933,4122000],[1934,4140000],[1935,4155000],[1936,4168000],[1937,4180000],[1938,4192000],[1939,4206000],[1940,4226000],[1941,4254000],[1942,4286000],[1943,4323000],[1944,4364000],[1945,4412000],[1946,4467000],[1947,4524000],[1948,4582000],[1949,4640000],[1950,4694000],[1951,4749000],[1952,4815000],[1953,4878000],[1954,4929000],[1955,4980000],[1956,5045000],[1957,5126000],[1958,5199000],[1959,5259000],[1960,5362000],[1961,5512000],[1962,5666000],[1963,5789000],[1964,5887000],[1965,5943000],[1966,5996000],[1967,6063000],[1968,6132000],[1969,6212000],[1970,6267000],[1971,6343293],[1972,6401400],[1973,6441100],[1974,6460000],[1975,6403500],[1976,6333313],[1977,6316424],[1978,6332568],[1979,6350840],[1980,6385229],[1981,6425450],[1982,6468126],[1983,6501073],[1984,6529684],[1985,6563770],[1986,6603192],[1987,6649942],[1988,6704112],[1989,6763653],[1990,6836626],[1991,6920562],[1992,6995447],[1993,7058211],[1994,7114530],[1995,7157106],[1996,7181024],[1997,7193761],[1998,7207995],[1999,7232809],[2000,7266920],[2001,7311237],[2002,7361757],[2003,7408319],[2004,7450867],[2005,7489370],[2006,7523934],[2007,7554661],[2008,7581520]],"lifeExpectancy":[[1800,38],[1875,38],[1876,40.1],[1877,40.01],[1878,40.47],[1879,41.81],[1880,42.41],[1881,41.87],[1882,42.98],[1883,44.94],[1884,45],[1885,43.83],[1886,44.68],[1887,45.44],[1888,45.97],[1889,45.14],[1890,44.95],[1891,44.71],[1892,47.23],[1893,46.07],[1894,45.79],[1895,46.84],[1896,48.88],[1897,49.1],[1898,48.2],[1899,49.29],[1900,47.48],[1901,48.94],[1902,50.41],[1903,50.03],[1904,49.16],[1905,49.67],[1906,50.72],[1907,51.19],[1908,52.26],[1909,51.61],[1910,52.91],[1911,51.72],[1912,54.42],[1913,54.21],[1914,55.13],[1915,55.95],[1916,56.59],[1917,55.81],[1918,46.3],[1919,54.97],[1920,54.38],[1921,57.87],[1922,58.5],[1923,60.04],[1924,59.49],[1925,59.95],[1926,60.64],[1927,60.1],[1928,60.47],[1929,60.17],[1930,61.43],[1931,61.24],[1932,61.23],[1933,62.41],[1934,62.89],[1935,62.13],[1936,63.18],[1937,63.51],[1938,63.85],[1939,64.01],[1940,63.58],[1941,64.98],[1942,65.65],[1943,65.84],[1944,64.88],[1945,65.42],[1946,66.07],[1947,66.26],[1948,67.34],[1949,67.97],[1950,68.94],[1951,68.71],[1952,69.62],[1953,69.53],[1954,70],[1955,70.08],[1956,70.21],[1957,70.56],[1958,71.3],[1959,71.46],[1960,71.44],[1961,71.76],[1962,71.32],[1963,71.31],[1964,72.2],[1965,72.33],[1966,72.47],[1967,72.77],[1968,72.72],[1969,72.73],[1970,73.14],[1971,73.26],[1972,73.78],[1973,74.08],[1974,74.43],[1975,74.82],[1976,74.94],[1977,75.39],[1978,75.34],[1979,75.64],[1980,75.64],[1981,75.87],[1982,76.21],[1983,76.22],[1984,76.82],[1985,76.94],[1986,77.11],[1987,77.41],[1988,77.43],[1989,77.62],[1990,77.44],[1991,77.72],[1992,78.02],[1993,78.31],[1994,78.6],[1995,78.68],[1996,79.17],[1997,79.37],[1998,79.62],[1999,79.88],[2000,79.99],[2001,80.41],[2002,80.62],[2003,80.72],[2004,81.28],[2005,81.45],[2006,81.75],[2007,81.94],[2008,81.9],[2009,82.06]]},{"name":"Tajikistan","region":"Europe & Central Asia","income":[[1800,428.48],[1820,437.5],[1913,975.22],[1950,1910.98],[1973,4643.65],[1990,3377.86],[1991,3006.97],[1992,1992.23],[1993,1643.5],[1994,1273.6],[1995,1097.88],[1996,899.28],[1997,898.48],[1998,928.55],[1999,944.1],[2000,1001.5],[2001,1080.51],[2002,1158.35],[2003,1249.69],[2004,1353.05],[2005,1413],[2006,1502.86],[2007,1610.49],[2008,1727.33],[2009,1775.38]],"population":[[1800,466629],[1820,466629],[1950,1530047],[1951,1584833],[1952,1640949],[1953,1684446],[1954,1729862],[1955,1780850],[1956,1836703],[1957,1898639],[1958,1953527],[1959,2009483],[1960,2080556],[1961,2163433],[1962,2253472],[1963,2339558],[1964,2424081],[1965,2510619],[1966,2592754],[1967,2672279],[1968,2759277],[1969,2850066],[1970,2938516],[1971,3039443],[1972,3145141],[1973,3242778],[1974,3344985],[1975,3448869],[1976,3553782],[1977,3659375],[1978,3760973],[1979,3862932],[1980,3969126],[1981,4078516],[1982,4193811],[1983,4315817],[1984,4445727],[1985,4587499],[1986,4738036],[1987,4891199],[1988,5036494],[1989,5183469],[1990,5332472],[1991,5481045],[1992,5600694],[1993,5682454],[1994,5770963],[1995,5864473],[1996,5963936],[1997,6070759],[1998,6185515],[1999,6308673],[2000,6440732],[2001,6578681],[2002,6719567],[2003,6863752],[2004,7011556],[2005,7163506],[2006,7320815],[2007,7484274],[2008,7653394]],"lifeExpectancy":[[1950,52.31],[1951,52.52],[1952,52.94],[1953,53.35],[1954,53.77],[1955,54.18],[1956,54.59],[1957,55],[1958,55.4],[1959,55.81],[1960,56.23],[1961,56.64],[1962,57.06],[1963,57.48],[1964,57.9],[1965,58.31],[1966,58.72],[1967,59.11],[1968,59.48],[1969,59.83],[1970,60.16],[1971,60.46],[1972,60.73],[1973,60.98],[1974,61.21],[1975,61.43],[1976,61.63],[1977,61.82],[1978,62],[1979,62.18],[1980,62.36],[1981,62.56],[1982,62.78],[1983,62.99],[1984,63.2],[1985,63.37],[1986,63.46],[1987,63.45],[1988,63.34],[1989,63.15],[1990,62.9],[1991,62.64],[1992,62.42],[1993,62.28],[1994,62.24],[1995,62.3],[1996,62.46],[1997,62.68],[1998,62.94],[1999,63.22],[2000,63.54],[2001,63.89],[2002,64.28],[2003,64.71],[2004,65.16],[2005,65.61],[2006,66.04],[2007,66.43],[2008,66.78],[2009,67.07]]},{"name":"Turkey","region":"Europe & Central Asia","income":[[1800,869.92],[1820,901.21],[1821,905.71],[1822,910.24],[1823,914.79],[1824,919.36],[1825,923.95],[1826,928.56],[1827,933.2],[1828,937.86],[1829,942.55],[1830,947.26],[1831,951.99],[1832,956.75],[1833,961.52],[1834,966.33],[1835,971.16],[1836,976.01],[1837,980.88],[1838,985.78],[1839,990.71],[1840,995.66],[1841,1000.63],[1842,1005.63],[1843,1010.65],[1844,1015.7],[1845,1020.77],[1846,1025.87],[1847,1031],[1848,1036.15],[1849,1041.32],[1850,1046.53],[1851,1051.75],[1852,1057.01],[1853,1062.29],[1854,1067.59],[1855,1072.93],[1856,1078.29],[1857,1083.67],[1858,1089.09],[1859,1094.53],[1860,1100],[1861,1105.49],[1862,1111.01],[1863,1116.56],[1864,1122.14],[1865,1127.75],[1866,1133.38],[1867,1139.04],[1868,1144.73],[1869,1150.45],[1870,1156.2],[1871,1166.61],[1872,1177.11],[1873,1165.78],[1874,1154.56],[1875,1143.44],[1876,1132.44],[1877,1121.53],[1878,1110.74],[1879,1100.04],[1880,1109.95],[1881,1124.38],[1882,1139],[1883,1153.81],[1884,1168.81],[1885,1184.01],[1886,1199.41],[1887,1215],[1888,1230.8],[1889,1246.8],[1890,1263.01],[1891,1279.44],[1892,1296.07],[1893,1312.92],[1894,1329.99],[1895,1347.29],[1896,1364.81],[1897,1382.55],[1898,1400.53],[1899,1418.74],[1900,1437.19],[1901,1455.87],[1902,1474.8],[1903,1493.98],[1904,1513.4],[1905,1533.08],[1906,1553.01],[1907,1573.21],[1908,1593.66],[1909,1614.38],[1910,1635.38],[1911,1656.64],[1912,1678.18],[1913,1700],[1914,1606.12],[1915,1517.42],[1916,1433.62],[1917,1354.45],[1918,1279.65],[1919,1208.98],[1920,1142.22],[1921,1079.14],[1922,1019.54],[1923,963.24],[1924,1140.49],[1925,1257.11],[1926,1444.64],[1927,1299.53],[1928,1412.59],[1929,1606.65],[1930,1648.38],[1931,1712.44],[1932,1578.24],[1933,1751.5],[1934,1757.67],[1935,1759.11],[1936,2050.89],[1937,2075.18],[1938,2211.33],[1939,2318.35],[1940,2133.46],[1941,1913.46],[1942,1968.48],[1943,1761.75],[1944,1662.85],[1945,1418.05],[1946,1783.28],[1947,1833.7],[1948,2026.87],[1949,1873.5],[1950,1994.79],[1951,2185.5],[1952,2376.31],[1953,2563.65],[1954,2414.81],[1955,2527.02],[1956,2523.46],[1957,2630.53],[1958,2654.56],[1959,2680.81],[1960,2666.17],[1961,2625.62],[1962,2705.56],[1963,2880.23],[1964,2919.57],[1965,2918.4],[1966,3175.94],[1967,3234.14],[1968,3363.34],[1969,3449.46],[1970,3524.41],[1971,3744.17],[1972,3879.15],[1973,3938.36],[1974,4137.58],[1975,4381],[1976,4636.35],[1977,4714.84],[1978,4730.4],[1979,4577.55],[1980,4436.96],[1981,4502.89],[1982,4601.84],[1983,4645.47],[1984,4784.95],[1985,4901.1],[1986,5113.39],[1987,5424.52],[1988,5502.7],[1989,5438.47],[1990,5807.69],[1991,5733.32],[1992,5946.29],[1993,6290.02],[1994,5826.6],[1995,6125],[1996,6432.18],[1997,6791.42],[1998,6877],[1999,6442.52],[2000,6803.29],[2001,6192.75],[2002,6577.7],[2003,6856.14],[2004,7357.12],[2005,7786],[2006,8294.63],[2007,8585.97],[2008,8547.69],[2009,8040.78]],"population":[[1820,10074000],[1870,11793000],[1913,15000000],[1923,13877000],[1924,13968000],[1925,14059000],[1926,14151000],[1927,14250000],[1928,14476000],[1929,14705000],[1930,14928000],[1931,15174000],[1932,15414000],[1933,15658000],[1934,15906000],[1935,16158000],[1936,16434000],[1937,16725000],[1938,17016000],[1939,17517000],[1940,17821000],[1941,18011000],[1942,18203000],[1943,18396000],[1944,18592000],[1945,18790000],[1946,19235000],[1947,19690000],[1948,20156000],[1949,20634000],[1950,21121639],[1951,21669334],[1952,22235677],[1953,22830516],[1954,23463817],[1955,24144571],[1956,24877395],[1957,25670939],[1958,26505694],[1959,27355811],[1960,28217122],[1961,29029976],[1962,29788695],[1963,30509221],[1964,31227361],[1965,31950718],[1966,32677758],[1967,33411317],[1968,34164759],[1969,34952315],[1970,35758382],[1971,36579964],[1972,37492953],[1973,38503442],[1974,39512945],[1975,40529798],[1976,41485146],[1977,42404033],[1978,43316697],[1979,44222576],[1980,45120802],[1981,46222187],[1982,47328791],[1983,48440170],[1984,49554400],[1985,50669003],[1986,51780211],[1987,52881328],[1988,53966237],[1989,55031033],[1990,56084632],[1991,57135435],[1992,58179144],[1993,59212510],[1994,60220670],[1995,61188984],[1996,62127894],[1997,63047647],[1998,63945635],[1999,64819580],[2000,65666677],[2001,66493970],[2002,67308928],[2003,68109469],[2004,68893918],[2005,69660559],[2006,70413958],[2007,71158647],[2008,71892807]],"lifeExpectancy":[[1800,35],[1930,35],[1937,35.43],[1942,31.34],[1947,38.1],[1950,41.73],[1951,42.2],[1952,43.12],[1953,44.05],[1954,44.97],[1955,45.89],[1956,46.81],[1957,47.71],[1958,48.6],[1959,49.45],[1960,50.26],[1961,51.02],[1962,51.7],[1963,52.3],[1964,52.84],[1965,53.32],[1966,53.77],[1967,54.22],[1968,54.67],[1969,55.15],[1970,55.66],[1971,56.2],[1972,56.75],[1973,57.29],[1974,57.83],[1975,58.34],[1976,58.81],[1977,59.24],[1978,59.63],[1979,59.98],[1980,60.3],[1981,60.6],[1982,60.91],[1983,61.23],[1984,61.59],[1985,61.98],[1986,62.43],[1987,62.93],[1988,63.46],[1989,64.03],[1990,64.63],[1991,65.24],[1992,65.85],[1993,66.45],[1994,67.03],[1995,67.59],[1996,68.11],[1997,68.62],[1998,69.1],[1999,69.55],[2000,69.97],[2001,70.34],[2002,70.67],[2003,70.95],[2004,71.19],[2005,71.4],[2006,71.57],[2007,71.74],[2008,71.9],[2009,72.06]]},{"name":"Turkmenistan","region":"Europe & Central Asia","income":[[1800,513.35],[1820,524.16],[1913,1168.39],[1950,2289.5],[1973,6829.32],[1990,5132.08],[1991,4769.85],[1992,3961.89],[1993,3934.1],[1994,3184.62],[1995,2895.41],[1996,3028.61],[1997,2631.32],[1998,2764.27],[1999,3159.59],[2000,3289.74],[2001,3361.4],[2002,3359.35],[2003,3522.74],[2004,3967.58],[2005,4247],[2006,4656.65],[2007,5114.98],[2008,5563.05],[2009,5702.66]],"population":[[1800,367215],[1820,367215],[1950,1204075],[1951,1226498],[1952,1252749],[1953,1282640],[1954,1313402],[1955,1347774],[1956,1381525],[1957,1425659],[1958,1478072],[1959,1530083],[1960,1584820],[1961,1644416],[1962,1704534],[1963,1765175],[1964,1825383],[1965,1882148],[1966,1935923],[1967,1994131],[1968,2054487],[1969,2116408],[1970,2181272],[1971,2246710],[1972,2313102],[1973,2379578],[1974,2450654],[1975,2523906],[1976,2594288],[1977,2663744],[1978,2733933],[1979,2804142],[1980,2875133],[1981,2946676],[1982,3018436],[1983,3091431],[1984,3164611],[1985,3240472],[1986,3323673],[1987,3410704],[1988,3492186],[1989,3573704],[1990,3667588],[1991,3760644],[1992,3848424],[1993,3933744],[1994,4018832],[1995,4101998],[1996,4184336],[1997,4267070],[1998,4350224],[1999,4433925],[2000,4518268],[2001,4603244],[2002,4688963],[2003,4775544],[2004,4863169],[2005,4952081],[2006,5042920],[2007,5136262],[2008,5232077]],"lifeExpectancy":[[1950,50.5],[1951,50.71],[1952,51.13],[1953,51.55],[1954,51.97],[1955,52.39],[1956,52.81],[1957,53.22],[1958,53.63],[1959,54.05],[1960,54.47],[1961,54.89],[1962,55.31],[1963,55.74],[1964,56.16],[1965,56.58],[1966,56.99],[1967,57.38],[1968,57.76],[1969,58.11],[1970,58.43],[1971,58.73],[1972,58.99],[1973,59.23],[1974,59.45],[1975,59.66],[1976,59.89],[1977,60.12],[1978,60.38],[1979,60.66],[1980,60.96],[1981,61.27],[1982,61.57],[1983,61.87],[1984,62.14],[1985,62.37],[1986,62.55],[1987,62.67],[1988,62.73],[1989,62.76],[1990,62.76],[1991,62.75],[1992,62.78],[1993,62.83],[1994,62.94],[1995,63.08],[1996,63.25],[1997,63.44],[1998,63.61],[1999,63.78],[2000,63.92],[2001,64.03],[2002,64.13],[2003,64.21],[2004,64.28],[2005,64.37],[2006,64.49],[2007,64.63],[2008,64.83],[2009,65.06]]},{"name":"Ukraine","region":"Europe & Central Asia","income":[[1800,807.51],[1820,824.52],[1913,1837.91],[1950,3601.45],[1973,6636.82],[1990,8123.2],[1991,7400.99],[1992,6650.45],[1993,5704.11],[1994,4419.12],[1995,3909.54],[1996,3548.69],[1997,3472.48],[1998,3435.91],[1999,3460.32],[2000,3700.35],[2001,4082.19],[2002,4334.82],[2003,4781.15],[2004,5400.28],[2005,5583],[2006,6027.07],[2007,6541.78],[2008,6716.38],[2009,5730.86]],"population":[[1800,11215490],[1820,11215490],[1950,36774854],[1951,37435785],[1952,38006180],[1953,38541349],[1954,38993798],[1955,39368099],[1956,39940180],[1957,40655779],[1958,41359132],[1959,42006030],[1960,42644035],[1961,43195765],[1962,43697245],[1963,44255938],[1964,44785626],[1965,45234869],[1966,45673640],[1967,46111262],[1968,46510301],[1969,46871405],[1970,47235697],[1971,47637239],[1972,48026627],[1973,48367002],[1974,48676939],[1975,48973428],[1976,49233524],[1977,49453675],[1978,49642987],[1979,49835012],[1980,50046649],[1981,50235677],[1982,50397455],[1983,50573066],[1984,50769375],[1985,50944248],[1986,51095072],[1987,51218101],[1988,51422963],[1989,51501478],[1990,51622275],[1991,51730355],[1992,51869109],[1993,51887112],[1994,51637611],[1995,51247259],[1996,50812520],[1997,50369926],[1998,49938798],[1999,49487245],[2000,49007559],[2001,48510505],[2002,48058877],[2003,47668303],[2004,47309706],[2005,46996765],[2006,46710816],[2007,46435909],[2008,46170273]],"lifeExpectancy":[[1800,36.6],[1900,36.6],[1920,36.6],[1926,46.95],[1939,50],[1940,49.8],[1941,24.7],[1942,19.4],[1943,18.2],[1944,28.7],[1945,35.3],[1946,55.2],[1947,45.1],[1948,57.8],[1949,60.6],[1950,64.28],[1951,64.72],[1952,65.58],[1953,66.39],[1954,67.14],[1955,67.83],[1956,68.47],[1957,69.06],[1958,69.58],[1959,69.43],[1960,71.06],[1961,71.34],[1962,70.76],[1963,71.39],[1964,72.19],[1965,71.63],[1966,71.9],[1967,71.5],[1968,71.59],[1969,70.97],[1970,70.87],[1971,71.1],[1972,70.86],[1973,71.05],[1974,70.94],[1975,70.28],[1976,70.34],[1977,70.02],[1978,69.98],[1979,69.72],[1980,69.7],[1981,69.74],[1982,69.9],[1983,69.88],[1984,69.57],[1985,69.88],[1986,71.24],[1987,71.04],[1988,70.93],[1989,70.88],[1990,70.46],[1991,69.64],[1992,69],[1993,68.31],[1994,67.7],[1995,66.79],[1996,67.11],[1997,67.69],[1998,68.57],[1999,68.15],[2000,67.79],[2001,67.93],[2002,67.81],[2003,67.87],[2004,67.73],[2005,67.31],[2006,67.96],[2007,68.17],[2008,68.31],[2009,68.45]]},{"name":"United Kingdom","region":"Europe & Central Asia","income":[[1800,2716.87],[1801,2736.98],[1802,2740.53],[1803,2744.1],[1804,2747.66],[1805,2751.24],[1806,2754.81],[1807,2758.39],[1808,2761.98],[1809,2765.57],[1810,2769.16],[1811,2772.76],[1812,2776.37],[1813,2779.98],[1814,2783.59],[1815,2787.21],[1816,2790.83],[1817,2794.46],[1818,2798.1],[1819,2801.73],[1820,2805.38],[1821,2809.02],[1822,2812.67],[1823,2816.33],[1824,2819.99],[1825,2823.66],[1826,2827.33],[1827,2831],[1828,2834.68],[1829,2838.37],[1830,2842.06],[1831,2931.7],[1832,2862.16],[1833,2851.91],[1834,2926.94],[1835,3041.81],[1836,3111.03],[1837,3028.56],[1838,3150.67],[1839,3255.28],[1840,3119.72],[1841,3013.78],[1842,2908.86],[1843,2924.4],[1844,3060.08],[1845,3181.7],[1846,3351.5],[1847,3382.2],[1848,3460.12],[1849,3541.79],[1850,3523.8],[1851,3692.63],[1852,3723.87],[1853,3822.77],[1854,3879.19],[1855,3818.21],[1856,4039.63],[1857,4065.93],[1858,4029.36],[1859,4084.87],[1860,4128.82],[1861,4192.26],[1862,4171.61],[1863,4157.38],[1864,4221.29],[1865,4300.03],[1866,4316.17],[1867,4222.72],[1868,4304.55],[1869,4280.86],[1870,4490.23],[1871,4689.29],[1872,4671.41],[1873,4735.49],[1874,4766.1],[1875,4832.56],[1876,4827.62],[1877,4820.64],[1878,4788.69],[1879,4718.33],[1880,4893.99],[1881,5022.22],[1882,5127.23],[1883,5127.61],[1884,5097.13],[1885,5029.61],[1886,5066.69],[1887,5225.9],[1888,5417.24],[1889,5663.07],[1890,5641.99],[1891,5594.67],[1892,5413.33],[1893,5363.26],[1894,5670.28],[1895,5795.27],[1896,5979.45],[1897,6000.48],[1898,6231.6],[1899,6427.55],[1900,6321.8],[1901,6263.51],[1902,6368.9],[1903,6248.33],[1904,6231.91],[1905,6362.14],[1906,6517.81],[1907,6584.65],[1908,6261.81],[1909,6348.13],[1910,6489.23],[1911,6627.33],[1912,6701.7],[1913,6925.2],[1914,6933.69],[1915,7442.73],[1916,7578],[1917,7629.56],[1918,7683.46],[1919,6854.63],[1920,6400.75],[1921,6247.68],[1922,6526.04],[1923,6698.84],[1924,6925.75],[1925,7240.38],[1926,6947.11],[1927,7480.27],[1928,7539.42],[1929,7745.39],[1930,7657.49],[1931,7231.83],[1932,7245.67],[1933,7427.52],[1934,7892.03],[1935,8161.54],[1936,8493.92],[1937,8750.7],[1938,8819.43],[1939,8813.73],[1940,9649.17],[1941,10529.74],[1942,10750.98],[1943,10898.52],[1944,10422.38],[1945,9930.83],[1946,9493.42],[1947,9295.07],[1948,9493.84],[1949,9789.47],[1950,9766.5],[1951,10025.45],[1952,9979.51],[1953,10338.51],[1954,10723.3],[1955,11073.65],[1956,11158.95],[1957,11283.18],[1958,11211.11],[1959,11596.73],[1960,12167.33],[1961,12464.91],[1962,12477.18],[1963,12876.6],[1964,13465.99],[1965,13724.35],[1966,13912.63],[1967,14142.85],[1968,14651.01],[1969,14850.49],[1970,15154.18],[1971,15399.08],[1972,15895.12],[1973,16924.43],[1974,16690.27],[1975,16673.64],[1976,17050.63],[1977,17428.75],[1978,18053.95],[1979,18531.69],[1980,18199.83],[1981,17940.78],[1982,18232.42],[1983,18865.5],[1984,19309.67],[1985,19935.24],[1986,20747.69],[1987,21664.79],[1988,22673.28],[1989,23100.74],[1990,23123.53],[1991,22739.73],[1992,22705.09],[1993,23170.28],[1994,24118.67],[1995,24716.01],[1996,25328.77],[1997,26074.53],[1998,26773.33],[1999,27467.51],[2000,28644.71],[2001,28978.41],[2002,29479],[2003,30204.15],[2004,31097.52],[2005,31580],[2006,32293.8],[2007,32909.5],[2008,32875.34],[2009,31042.47]],"population":[[1820,16186397],[1821,16427955],[1822,16661282],[1823,16897898],[1824,17139513],[1825,17381418],[1826,17629610],[1827,17858803],[1828,18093284],[1829,18329053],[1830,18569823],[1831,18811881],[1832,19028016],[1833,19246151],[1834,19468285],[1835,19691420],[1836,19918844],[1837,20136267],[1838,20354979],[1839,20578690],[1840,20804402],[1841,21027114],[1842,21284460],[1843,21504941],[1844,21751903],[1845,21994095],[1846,22231076],[1847,22279863],[1848,22246880],[1849,22266109],[1850,22287069],[1851,22310067],[1852,22567009],[1853,22837200],[1854,23117738],[1855,23417123],[1856,23728007],[1857,23974430],[1858,24230353],[1859,24488987],[1860,24746160],[1861,25009641],[1862,25291179],[1863,25561448],[1864,25828236],[1865,26107967],[1866,26385197],[1867,26667813],[1868,26955755],[1869,27249851],[1870,27544197],[1871,27844139],[1872,28050928],[1873,28385947],[1874,28730581],[1875,29082812],[1876,29444523],[1877,29814831],[1878,30173677],[1879,30557062],[1880,30920888],[1881,31273446],[1882,31576465],[1883,31875253],[1884,32184118],[1885,32500733],[1886,32822214],[1887,33142079],[1888,33464925],[1889,33793233],[1890,34127982],[1891,34472021],[1892,34836751],[1893,35211963],[1894,35593770],[1895,35976405],[1896,36367212],[1897,36763751],[1898,37166289],[1899,37569674],[1900,37975154],[1901,38373808],[1902,38737346],[1903,39102443],[1904,39474558],[1905,39850962],[1906,40231673],[1907,40614789],[1908,41003923],[1909,41398500],[1910,41795923],[1911,42150769],[1912,42318019],[1913,42556673],[1914,42965211],[1915,43296057],[1916,43473615],[1917,43573615],[1918,43529634],[1919,43437404],[1920,43718000],[1921,44072000],[1922,44372000],[1923,44596000],[1924,44915000],[1925,45059000],[1926,45232000],[1927,45389000],[1928,45578000],[1929,45672000],[1930,45866000],[1931,46074000],[1932,46335000],[1933,46520000],[1934,46666000],[1935,46868000],[1936,47081000],[1937,47289000],[1938,47494000],[1939,47991000],[1940,48226000],[1941,48216000],[1942,48400000],[1943,48789000],[1944,49016000],[1945,49182000],[1946,49217000],[1947,49519000],[1948,50014000],[1949,50312000],[1950,50127000],[1951,50290000],[1952,50430000],[1953,50593000],[1954,50765000],[1955,50946000],[1956,51184000],[1957,51430000],[1958,51652000],[1959,51956000],[1960,52372000],[1961,52807000],[1962,53292000],[1963,53625000],[1964,53991000],[1965,54350000],[1966,54643000],[1967,54959000],[1968,55214000],[1969,55461000],[1970,55632000],[1971,55907000],[1972,56079000],[1973,56210000],[1974,56224000],[1975,56215000],[1976,56206000],[1977,56179000],[1978,56167000],[1979,56228000],[1980,56314000],[1981,56382597],[1982,56339704],[1983,56382623],[1984,56462228],[1985,56620240],[1986,56796260],[1987,56981620],[1988,57159603],[1989,57324472],[1990,57493307],[1991,57665646],[1992,57866349],[1993,58026920],[1994,58212518],[1995,58426014],[1996,58618663],[1997,58808266],[1998,59035652],[1999,59293320],[2000,59522468],[2001,59723243],[2002,59912431],[2003,60094648],[2004,60270708],[2005,60441457],[2006,60609153],[2007,60776238],[2008,60943912]],"lifeExpectancy":[[1800,40.02],[1803,40.02],[1808,40.58],[1813,41.25],[1818,40.84],[1823,40.47],[1828,41.43],[1833,40.89],[1838,40.56],[1841,41.7],[1842,41.35],[1843,41.86],[1844,41.55],[1845,42.56],[1846,39.96],[1847,38.33],[1848,39.5],[1849,37.38],[1850,42.8],[1851,41.42],[1852,40.93],[1853,40.56],[1854,39.34],[1855,41.03],[1856,43.25],[1857,41.88],[1858,40.04],[1859,40.84],[1860,43.01],[1861,42.38],[1862,42.52],[1863,40.4],[1864,39.97],[1865,40.65],[1866,40.41],[1867,42.62],[1868,42],[1869,41.67],[1870,40.95],[1871,41.31],[1872,42.9],[1873,43.78],[1874,42.13],[1875,41.85],[1876,43.69],[1877,44.7],[1878,43.01],[1879,44.27],[1880,43.78],[1881,46.11],[1882,44.87],[1883,45.09],[1884,44.79],[1885,45.76],[1886,45.33],[1887,45.65],[1888,46.81],[1889,46.34],[1890,44.75],[1891,44.29],[1892,45.51],[1893,44.87],[1894,48.34],[1895,45.73],[1896,47.41],[1897,47.23],[1898,46.98],[1899,46.13],[1900,46.32],[1901,47.91],[1902,49.08],[1903,50.43],[1904,49.11],[1905,50.86],[1906,50.58],[1907,51.44],[1908,51.84],[1909,52.52],[1910,53.99],[1911,51.54],[1912,54.55],[1913,53.83],[1914,51.99],[1915,48.2],[1916,47.73],[1917,45.57],[1918,40.43],[1919,54.12],[1920,56.6],[1921,58.35],[1922,57.13],[1923,59.4],[1924,58.17],[1925,58.51],[1926,59.66],[1927,59.04],[1928,59.99],[1929,57.71],[1930,60.89],[1931,60.11],[1932,60.63],[1933,60.67],[1934,61.4],[1935,62.05],[1936,61.85],[1937,61.88],[1938,63.3],[1939,63.69],[1940,60.97],[1941,61.37],[1942,63.99],[1943,64.01],[1944,64.85],[1945,65.85],[1946,66.47],[1947,66.44],[1948,68.5],[1949,68.19],[1950,68.7],[1951,68.3],[1952,69.6],[1953,69.87],[1954,70.24],[1955,70.21],[1956,70.48],[1957,70.6],[1958,70.78],[1959,70.88],[1960,71.1],[1961,70.85],[1962,70.92],[1963,70.83],[1964,71.62],[1965,71.61],[1966,71.53],[1967,72.16],[1968,71.79],[1969,71.75],[1970,72],[1971,72.32],[1972,72.1],[1973,72.31],[1974,72.51],[1975,72.78],[1976,72.76],[1977,73.25],[1978,73.18],[1979,73.29],[1980,73.72],[1981,74.06],[1982,74.19],[1983,74.44],[1984,74.83],[1985,74.68],[1986,74.95],[1987,75.3],[1988,75.41],[1989,75.55],[1990,75.89],[1991,76.06],[1992,76.46],[1993,76.32],[1994,76.88],[1995,76.78],[1996,77.05],[1997,77.31],[1998,77.45],[1999,77.56],[2000,78.04],[2001,78.31],[2002,78.43],[2003,78.52],[2004,79.1],[2005,79.3],[2006,79.53],[2007,79.34],[2008,79.5],[2009,79.64]]},{"name":"Uzbekistan","region":"Europe & Central Asia","income":[[1800,346.43],[1820,353.72],[1913,788.48],[1950,1545.05],[1973,2395.67],[1990,1993.43],[1991,1935.31],[1992,1682.5],[1993,1611.38],[1994,1499.51],[1995,1460.98],[1996,1461.98],[1997,1513.43],[1998,1554.93],[1999,1597.63],[2000,1635.22],[2001,1681.66],[2002,1724.3],[2003,1771.19],[2004,1876.6],[2005,1975],[2006,2091.38],[2007,2255.67],[2008,2424.23],[2009,2586.96]],"population":[[1800,1919159],[1820,1919159],[1950,6292797],[1951,6489850],[1952,6681196],[1953,6886387],[1954,7061494],[1955,7232067],[1956,7440744],[1957,7694366],[1958,7951857],[1959,8223106],[1960,8531032],[1961,8867714],[1962,9209650],[1963,9546588],[1964,9877755],[1965,10205805],[1966,10529599],[1967,10864030],[1968,11232040],[1969,11591490],[1970,11940155],[1971,12334057],[1972,12741848],[1973,13147733],[1974,13568700],[1975,13987696],[1976,14404009],[1977,14808950],[1978,15207113],[1979,15605490],[1980,16000074],[1981,16413399],[1982,16849973],[1983,17298283],[1984,17764159],[1985,18258445],[1986,18769226],[1987,19279732],[1988,19694266],[1989,20112207],[1990,20624073],[1991,21137143],[1992,21614451],[1993,22049313],[1994,22462266],[1995,22847085],[1996,23219707],[1997,23596577],[1998,23977448],[1999,24363320],[2000,24755519],[2001,25155064],[2002,25563441],[2003,25981647],[2004,26410416],[2005,26851195],[2006,27307134],[2007,27780059],[2008,28268440]],"lifeExpectancy":[[1950,54.96],[1951,55.17],[1952,55.59],[1953,56.01],[1954,56.43],[1955,56.85],[1956,57.27],[1957,57.68],[1958,58.1],[1959,58.51],[1960,58.93],[1961,59.35],[1962,59.78],[1963,60.21],[1964,60.63],[1965,61.06],[1966,61.47],[1967,61.86],[1968,62.24],[1969,62.6],[1970,62.92],[1971,63.22],[1972,63.48],[1973,63.72],[1974,63.94],[1975,64.16],[1976,64.38],[1977,64.62],[1978,64.87],[1979,65.15],[1980,65.45],[1981,65.77],[1982,66.1],[1983,66.42],[1984,66.72],[1985,66.96],[1986,67.11],[1987,67.17],[1988,67.13],[1989,67],[1990,66.82],[1991,66.63],[1992,66.47],[1993,66.37],[1994,66.35],[1995,66.4],[1996,66.51],[1997,66.64],[1998,66.77],[1999,66.89],[2000,66.99],[2001,67.07],[2002,67.15],[2003,67.22],[2004,67.3],[2005,67.39],[2006,67.5],[2007,67.63],[2008,67.79],[2009,67.97]]},{"name":"Australia","region":"East Asia & Pacific","income":[[1800,671.48],[1820,701.03],[1821,707.39],[1822,728.14],[1823,752.83],[1824,794.94],[1825,833.2],[1826,848.98],[1827,874.78],[1828,896.76],[1829,946.58],[1830,1148.37],[1831,1186.8],[1832,1213.29],[1833,1217.71],[1834,1280.8],[1835,1550.03],[1836,1523.08],[1837,1596.55],[1838,1576.69],[1839,1470.98],[1840,1859.37],[1841,1586.06],[1842,1446.58],[1843,1677.46],[1844,1906.61],[1845,1961.67],[1846,2168.18],[1847,2508.31],[1848,2870.4],[1849,2836.11],[1850,2673.32],[1851,3172.92],[1852,3721.01],[1853,4073.94],[1854,3567.47],[1855,3385.66],[1856,4131.49],[1857,3645.86],[1858,3109.08],[1859,4013.76],[1860,3917.42],[1861,3858.21],[1862,3707.76],[1863,3695.5],[1864,3919.09],[1865,3738.03],[1866,3848.34],[1867,4207.41],[1868,4272.09],[1869,4187.16],[1870,4430.13],[1871,4464.33],[1872,4809.35],[1873,5175.05],[1874,5190.17],[1875,5600.81],[1876,5423.58],[1877,5462.6],[1878,5789.2],[1879,5691.19],[1880,5800.02],[1881,6029.34],[1882,5498.49],[1883,6057.02],[1884,5824.66],[1885,5985.27],[1886,5859.64],[1887,6268.79],[1888,6095.56],[1889,6424.58],[1890,6033.2],[1891,6315.77],[1892,5407.56],[1893,5018.36],[1894,5096.43],[1895,4719.83],[1896,4987.33],[1897,4628.72],[1898,5266.6],[1899,5196.68],[1900,5431.85],[1901,5195.5],[1902,5173.65],[1903,5516.93],[1904,5812.66],[1905,5795.39],[1906,6100.47],[1907,6248.06],[1908,6351.85],[1909,6740.94],[1910,7051.19],[1911,6907.66],[1912,6900.48],[1913,6979.44],[1914,6803.41],[1915,6627.25],[1916,6602.49],[1917,6484.48],[1918,6227.92],[1919,6382.25],[1920,6449.93],[1921,6646.5],[1922,6853.4],[1923,7027.1],[1924,7332.16],[1925,7515.77],[1926,7542.12],[1927,7503.19],[1928,7378.65],[1929,7123.12],[1930,6372.4],[1931,5892.35],[1932,6176.78],[1933,6553.91],[1934,6848.22],[1935,7197.03],[1936,7465.37],[1937,7776.39],[1938,7966.79],[1939,7911.61],[1940,8345.5],[1941,9187.46],[1942,10158.18],[1943,10425.32],[1944,9964.06],[1945,9361.6],[1946,8925.84],[1947,9019.86],[1948,9430.04],[1949,9794.56],[1950,10031.12],[1951,10160.74],[1952,10039.6],[1953,10157.91],[1954,10544.09],[1955,10864.62],[1956,10974.13],[1957,10949.65],[1958,11240.96],[1959,11678.07],[1960,11897.96],[1961,11711.5],[1962,12217.23],[1963,12722.22],[1964,13329.9],[1965,13739.93],[1966,13860.96],[1967,14526.12],[1968,15088.56],[1969,15647.11],[1970,16273.14],[1971,16633.13],[1972,16788.63],[1973,17429.72],[1974,17574.58],[1975,17824.57],[1976,18351.07],[1977,18334.2],[1978,18635.04],[1979,19380.64],[1980,19505.55],[1981,19841.88],[1982,19477.01],[1983,19214.56],[1984,20295.25],[1985,21040.49],[1986,21168.81],[1987,21888.89],[1988,22508.19],[1989,23133.98],[1990,23151.89],[1991,22893.86],[1992,23424.77],[1993,24053.1],[1994,24780.17],[1995,25518.72],[1996,26151.13],[1997,26997.94],[1998,28169.15],[1999,28983.27],[2000,29241.51],[2001,30043.24],[2002,30687.75],[2003,31634.24],[2004,32098.51],[2005,32798],[2006,33119],[2007,34084.07],[2008,34239.63],[2009,34327.26]],"population":[[1820,334000],[1821,331000],[1822,329000],[1823,329000],[1824,332000],[1825,333000],[1826,330000],[1827,328000],[1828,326000],[1829,326000],[1830,330000],[1831,333000],[1832,338000],[1833,349000],[1834,354000],[1835,358000],[1836,367000],[1837,373000],[1838,388000],[1839,403000],[1840,420000],[1841,448000],[1842,465000],[1843,472000],[1844,482000],[1845,494000],[1846,505000],[1847,518000],[1848,538000],[1849,576000],[1850,605000],[1851,636000],[1852,710000],[1853,795000],[1854,887000],[1855,983000],[1856,1065000],[1857,1156000],[1858,1235000],[1859,1279000],[1860,1326000],[1861,1346000],[1862,1382000],[1863,1432000],[1864,1495000],[1865,1558000],[1866,1609000],[1867,1647000],[1868,1700000],[1869,1750000],[1870,1775000],[1871,1675000],[1872,1722000],[1873,1769000],[1874,1822000],[1875,1874000],[1876,1929000],[1877,1995000],[1878,2062000],[1879,2127000],[1880,2197000],[1881,2269000],[1882,2348000],[1883,2447000],[1884,2556000],[1885,2650000],[1886,2741000],[1887,2835000],[1888,2932000],[1889,3022000],[1890,3107000],[1891,3196000],[1892,3274000],[1893,3334000],[1894,3395000],[1895,3460000],[1896,3523000],[1897,3586000],[1898,3642000],[1899,3691000],[1900,3741000],[1901,3795000],[1902,3850000],[1903,3896000],[1904,3946000],[1905,4004000],[1906,4062000],[1907,4127000],[1908,4197000],[1909,4278000],[1910,4375000],[1911,4500000],[1912,4661000],[1913,4821000],[1914,4933000],[1915,4971000],[1916,4955000],[1917,4950000],[1918,5032000],[1919,5193000],[1920,5358000],[1921,5461000],[1922,5574000],[1923,5697000],[1924,5819000],[1925,5943000],[1926,6064000],[1927,6188000],[1928,6304000],[1929,6396000],[1930,6469000],[1931,6527000],[1932,6579000],[1933,6631000],[1934,6682000],[1935,6732000],[1936,6783000],[1937,6841000],[1938,6904000],[1939,6971000],[1940,7042000],[1941,7111000],[1942,7173000],[1943,7236000],[1944,7309000],[1945,7389000],[1946,7474000],[1947,7578000],[1948,7715000],[1949,7919000],[1950,8267337],[1951,8510600],[1952,8691212],[1953,8857924],[1954,9064017],[1955,9277087],[1956,9500606],[1957,9712569],[1958,9915267],[1959,10131729],[1960,10361273],[1961,10598814],[1962,10794968],[1963,11001483],[1964,11218304],[1965,11439384],[1966,11655083],[1967,11872264],[1968,12101660],[1969,12379384],[1970,12660160],[1971,12937200],[1972,13177000],[1973,13380400],[1974,13599100],[1975,13771400],[1976,13915500],[1977,14074100],[1978,14248600],[1979,14421900],[1980,14615900],[1981,14923260],[1982,15184200],[1983,15393500],[1984,15579400],[1985,15788300],[1986,16018350],[1987,16257249],[1988,16520206],[1989,16780235],[1990,17022133],[1991,17257526],[1992,17481977],[1993,17688687],[1994,17892557],[1995,18116171],[1996,18348078],[1997,18565243],[1998,18768789],[1999,18968247],[2000,19164620],[2001,19357594],[2002,19546792],[2003,19731984],[2004,19913144],[2005,20090437],[2006,20264082],[2007,20434176],[2008,20600856]],"lifeExpectancy":[[1800,34.05],[1870,34.05],[1921,61.04],[1922,62.89],[1923,61.73],[1924,62.53],[1925,63.22],[1926,62.94],[1927,62.91],[1928,62.96],[1929,63.15],[1930,64.96],[1931,65.39],[1932,65.69],[1933,65.52],[1934,64.88],[1935,65.15],[1936,65.27],[1937,65.83],[1938,65.87],[1939,65.82],[1940,66.26],[1941,66.14],[1942,65.88],[1943,66.4],[1944,68.03],[1945,68.46],[1946,67.98],[1947,68.59],[1948,68.51],[1949,69.13],[1950,69.02],[1951,68.72],[1952,69.12],[1953,69.7],[1954,69.85],[1955,70.17],[1956,70.05],[1957,70.33],[1958,70.88],[1959,70.45],[1960,70.89],[1961,71.16],[1962,70.93],[1963,70.99],[1964,70.65],[1965,70.98],[1966,70.82],[1967,71.1],[1968,70.73],[1969,71.14],[1970,70.81],[1971,71.41],[1972,71.93],[1973,72.14],[1974,71.89],[1975,72.84],[1976,72.88],[1977,73.49],[1978,73.88],[1979,74.44],[1980,74.6],[1981,74.96],[1982,74.74],[1983,75.55],[1984,76.02],[1985,75.45],[1986,76.13],[1987,76.32],[1988,76.35],[1989,76.45],[1990,77.05],[1991,77.54],[1992,77.54],[1993,78.07],[1994,78.07],[1995,78.45],[1996,78.53],[1997,78.79],[1998,79.28],[1999,79.53],[2000,79.93],[2001,80.27],[2002,80.29],[2003,80.69],[2004,81.04],[2005,81.44],[2006,81.63],[2007,81.67],[2008,81.57],[2009,81.71]]},{"name":"Brunei","region":"East Asia & Pacific","income":[[1800,1011.68],[1820,1011.68],[1913,1367.71],[1929,1440.53],[1950,35554.36],[1970,48558.11],[1971,51244.66],[1972,54117.16],[1973,56943.9],[1974,61078.94],[1975,58861.78],[1976,67973.72],[1977,72555.23],[1978,74695.43],[1979,88381.11],[1980,79534.57],[1981,61817.06],[1982,62407.21],[1983,60976.16],[1984,59654.85],[1985,57144.31],[1986,54048.44],[1987,53585.9],[1988,52649.8],[1989,50628.31],[1990,50563.57],[1991,51141.01],[1992,49174.41],[1993,48067.97],[1994,47618.1],[1995,47786.78],[1996,48234.28],[1997,48967.31],[1998,47521.2],[1999,47811.18],[2000,48020.35],[2001,48192.76],[2002,48906.35],[2003,49184.09],[2004,48333.67],[2005,47465],[2006,48580.7],[2007,47701.82],[2008,45859.75],[2009,44738.99]],"population":[[1800,2128],[1820,2128],[1870,5931],[1911,22000],[1921,26000],[1931,30000],[1947,41000],[1950,44983],[1951,47632],[1952,50634],[1953,53678],[1954,57070],[1955,60983],[1956,65347],[1957,69342],[1958,73521],[1959,78540],[1960,83037],[1961,87067],[1962,90822],[1963,94351],[1964,98171],[1965,102414],[1966,106629],[1967,110971],[1968,115921],[1969,121434],[1970,127554],[1971,136621],[1972,141500],[1973,145170],[1974,151000],[1975,156223],[1976,161626],[1977,167216],[1978,173000],[1979,178899],[1980,185220],[1981,192831],[1982,199468],[1983,206154],[1984,213018],[1985,220215],[1986,227691],[1987,235357],[1988,242997],[1989,250553],[1990,258172],[1991,265877],[1992,273701],[1993,281594],[1994,289516],[1995,297508],[1996,305565],[1997,313563],[1998,321371],[1999,328979],[2000,336376],[2001,343653],[2002,350898],[2003,358098],[2004,365251],[2005,372361],[2006,379444],[2007,386511],[2008,393551]],"lifeExpectancy":[[1800,29.2],[1911,29.2],[1950,60],[1951,60.08],[1952,60.26],[1953,60.44],[1954,60.65],[1955,60.86],[1956,61.1],[1957,61.34],[1958,61.61],[1959,61.88],[1960,62.16],[1961,62.45],[1962,62.76],[1963,63.08],[1964,63.43],[1965,63.81],[1966,64.27],[1967,64.79],[1968,65.38],[1969,66.03],[1970,66.69],[1971,67.32],[1972,67.89],[1973,68.38],[1974,68.78],[1975,69.11],[1976,69.39],[1977,69.66],[1978,69.95],[1979,70.27],[1980,70.63],[1981,71.01],[1982,71.4],[1983,71.77],[1984,72.13],[1985,72.47],[1986,72.78],[1987,73.07],[1988,73.34],[1989,73.6],[1990,73.85],[1991,74.09],[1992,74.33],[1993,74.55],[1994,74.77],[1995,74.99],[1996,75.19],[1997,75.39],[1998,75.58],[1999,75.76],[2000,75.93],[2001,76.09],[2002,76.26],[2003,76.42],[2004,76.58],[2005,76.74],[2006,76.9],[2007,77.05],[2008,77.19],[2009,77.32]]},{"name":"Cambodia","region":"East Asia & Pacific","income":[[1800,809.23],[1820,809.23],[1950,352.03],[1951,355.21],[1952,368.47],[1953,363.27],[1954,395.75],[1955,378.15],[1956,417.47],[1957,434.04],[1958,443.98],[1959,474.59],[1960,489.73],[1961,472.2],[1962,496.91],[1963,519.81],[1964,492.19],[1965,502.02],[1966,511.05],[1967,523.43],[1968,533.17],[1969,527.47],[1970,472.62],[1971,449.47],[1972,421.62],[1973,567.93],[1974,480.68],[1975,423.41],[1976,470.18],[1977,524.97],[1978,593.45],[1979,608.24],[1980,606.6],[1981,597.38],[1982,624.48],[1983,648.64],[1984,677.86],[1985,706.88],[1986,724.21],[1987,683.9],[1988,675.38],[1989,666.82],[1990,642.9],[1991,666.82],[1992,682.3],[1993,677.3],[1994,680.57],[1995,708.19],[1996,730.42],[1997,734.29],[1998,729.51],[1999,793.34],[2000,833.36],[2001,864.97],[2002,896.23],[2003,926.11],[2004,1305.44],[2005,1453],[2006,1571.44],[2007,1830.56],[2008,1914.75],[2009,1830.97]],"population":[[1800,2090000],[1820,2090000],[1870,2340000],[1913,3070000],[1950,4471170],[1951,4581150],[1952,4693836],[1953,4809293],[1954,4927590],[1955,5048797],[1956,5183860],[1957,5322536],[1958,5464922],[1959,5611117],[1960,5761223],[1961,5919487],[1962,6083619],[1963,6253991],[1964,6426908],[1965,6602232],[1966,6779979],[1967,6960067],[1968,7142547],[1969,7327791],[1970,7394644],[1971,7387057],[1972,7450606],[1973,7533628],[1974,7607940],[1975,7489990],[1976,7223359],[1977,6978607],[1978,6749278],[1979,6716111],[1980,6869171],[1981,7059498],[1982,7272485],[1983,7499259],[1984,7656585],[1985,7805090],[1986,8066070],[1987,8371791],[1988,8689250],[1989,9017752],[1990,9355479],[1991,9704523],[1992,10150094],[1993,10643513],[1994,11008712],[1995,11282730],[1996,11542269],[1997,11782962],[1998,12012231],[1999,12239016],[2000,12466262],[2001,12695476],[2002,12926707],[2003,13160169],[2004,13396361],[2005,13636398],[2006,13881427],[2007,14131858],[2008,14387642]],"lifeExpectancy":[[1800,35],[1945,35],[1950,38.59],[1951,38.8],[1952,39.22],[1953,39.63],[1954,40.03],[1955,40.41],[1956,40.79],[1957,41.17],[1958,41.55],[1959,41.96],[1960,42.4],[1961,42.9],[1962,43.43],[1963,43.99],[1964,44.53],[1965,44.98],[1966,45.26],[1967,45.31],[1968,45.08],[1969,44.56],[1970,43.63],[1971,42.17],[1972,40.27],[1973,38.09],[1974,35.84],[1975,33.96],[1976,32.93],[1977,33.02],[1978,34.32],[1979,36.75],[1980,40.02],[1981,43.67],[1982,47.16],[1983,50.08],[1984,52.23],[1985,53.57],[1986,54.2],[1987,54.47],[1988,54.62],[1989,54.77],[1990,54.96],[1991,55.21],[1992,55.45],[1993,55.65],[1994,55.82],[1995,55.99],[1996,56.15],[1997,56.33],[1998,56.54],[1999,56.78],[2000,57.08],[2001,57.44],[2002,57.87],[2003,58.35],[2004,58.88],[2005,59.44],[2006,60.01],[2007,60.58],[2008,61.14],[2009,61.67]]},{"name":"China","region":"East Asia & Pacific","income":[[1800,985.89],[1820,863.05],[1821,859.02],[1822,855.01],[1823,851.02],[1824,847.04],[1825,843.09],[1826,839.15],[1827,835.23],[1828,831.33],[1829,827.45],[1830,823.59],[1831,819.74],[1832,815.92],[1833,812.11],[1834,808.32],[1835,804.54],[1836,800.78],[1837,797.05],[1838,793.32],[1839,789.62],[1840,785.93],[1841,782.26],[1842,778.61],[1843,774.98],[1844,771.36],[1845,767.76],[1846,764.17],[1847,760.6],[1848,757.05],[1849,753.52],[1850,750],[1851,675.4],[1852,608.22],[1853,547.72],[1854,493.24],[1855,444.18],[1856,400],[1857,420.8],[1858,442.67],[1859,465.69],[1860,489.9],[1861,515.37],[1862,542.16],[1863,570.35],[1864,600],[1865,626.77],[1866,654.74],[1867,683.95],[1868,714.47],[1869,746.35],[1870,779.65],[1871,780.42],[1872,781.18],[1873,781.94],[1874,782.71],[1875,783.47],[1876,784.24],[1877,785.01],[1878,785.78],[1879,786.55],[1880,787.32],[1881,788.09],[1882,788.86],[1883,789.63],[1884,790.4],[1885,791.18],[1886,791.95],[1887,792.73],[1888,793.5],[1889,794.28],[1890,795.06],[1891,795.78],[1892,796.5],[1893,797.22],[1894,797.94],[1895,798.66],[1896,799.38],[1897,800.11],[1898,800.83],[1899,801.56],[1900,802.28],[1901,803.06],[1902,803.84],[1903,804.62],[1904,805.4],[1905,806.18],[1906,806.96],[1907,807.74],[1908,808.53],[1909,809.31],[1910,810.09],[1911,810.88],[1912,811.66],[1913,812.45],[1914,823.4],[1915,834.5],[1916,845.75],[1917,857.15],[1918,868.7],[1919,880.41],[1920,892.28],[1921,904.31],[1922,916.5],[1923,928.85],[1924,941.37],[1925,954.06],[1926,966.92],[1927,979.96],[1928,993.16],[1929,1006.55],[1930,1015.72],[1931,1018.48],[1932,1043.08],[1933,1035.38],[1934,940.18],[1935,1010.72],[1936,1068.93],[1937,1037.42],[1938,1006.21],[1939,930.68],[1940,860.82],[1941,796.21],[1942,736.44],[1943,681.16],[1944,630.03],[1945,582.74],[1946,539],[1947,498.54],[1948,461.12],[1949,426.5],[1950,394.49],[1951,432.35],[1952,473.38],[1953,486.2],[1954,490.39],[1955,507.64],[1956,542.5],[1957,560],[1958,607.89],[1959,604.38],[1960,583.02],[1961,486.83],[1962,484.67],[1963,519.76],[1964,567.77],[1965,617.76],[1966,657.14],[1967,622.45],[1968,594.27],[1969,627.78],[1970,685.35],[1971,699.98],[1972,702.94],[1973,738.22],[1974,735.36],[1975,767.09],[1976,750.79],[1977,786.85],[1978,861.1],[1979,915.22],[1980,934.27],[1981,977.54],[1982,1044.34],[1983,1107.46],[1984,1229.08],[1985,1337.64],[1986,1406.19],[1987,1529.5],[1988,1611.38],[1989,1615.03],[1990,1647.38],[1991,1732.13],[1992,1877.41],[1993,2035.59],[1994,2214.2],[1995,2521.34],[1996,2546.44],[1997,2653.3],[1998,2635.55],[1999,2784.39],[2000,3012.12],[2001,3309.8],[2002,3695.65],[2003,4228.98],[2004,4551.13],[2005,4909.2],[2006,5450.12],[2007,6127.78],[2008,6679.2],[2009,7226.07]],"population":[[1820,381000000],[1821,383711494],[1822,386442286],[1823,389192512],[1824,391962310],[1825,394751821],[1826,397561184],[1827,400390540],[1828,403240033],[1829,406109805],[1830,409000000],[1831,409299014],[1832,409598247],[1833,409897699],[1834,410197370],[1835,410497259],[1836,410797368],[1837,411097697],[1838,411398245],[1839,411699012],[1840,412000000],[1841,412000000],[1842,412000000],[1843,412000000],[1844,412000000],[1845,412000000],[1846,412000000],[1847,412000000],[1848,412000000],[1849,412000000],[1850,412000000],[1851,408358528],[1852,404749241],[1853,401171855],[1854,397626087],[1855,394111659],[1856,390628294],[1857,387175716],[1858,383753654],[1859,380361838],[1860,377000000],[1861,375055482],[1862,373120994],[1863,371196483],[1864,369281899],[1865,367377190],[1866,365482306],[1867,363597195],[1868,361721807],[1869,359856092],[1870,358000000],[1871,358988000],[1872,359978000],[1873,360971000],[1874,361967000],[1875,362966000],[1876,363967000],[1877,364971000],[1878,365978000],[1879,366988000],[1880,368000000],[1881,369183000],[1882,370369000],[1883,371560000],[1884,372754000],[1885,373952000],[1886,375154000],[1887,376359000],[1888,377569000],[1889,378783000],[1890,380000000],[1891,381979000],[1892,383969000],[1893,385969000],[1894,387979000],[1895,390000000],[1896,391980000],[1897,393970000],[1898,395970000],[1899,397980000],[1900,400000000],[1901,402243000],[1902,404498000],[1903,406766000],[1904,409047000],[1905,411340000],[1906,413646000],[1907,415965000],[1908,418297000],[1909,420642000],[1910,423000000],[1911,427662000],[1912,432375000],[1913,437140000],[1914,441958000],[1915,446829000],[1916,451753000],[1917,456732000],[1918,461766000],[1919,466855000],[1920,472000000],[1921,473673000],[1922,475352000],[1923,477037000],[1924,478728000],[1925,480425000],[1926,482128000],[1927,483837000],[1928,485552000],[1929,487273000],[1930,489000000],[1931,492640000],[1932,496307000],[1933,500000000],[1934,502639000],[1935,505292000],[1936,507959000],[1937,510640000],[1938,513336000],[1939,516046000],[1940,518770000],[1941,521508000],[1942,524261000],[1943,527028000],[1944,529810000],[1945,532607000],[1946,535418000],[1947,538244000],[1948,541085000],[1949,543941000],[1950,546815000],[1951,557480000],[1952,568910000],[1953,581390000],[1954,595310000],[1955,608655000],[1956,621465000],[1957,637408000],[1958,653235000],[1959,666005000],[1960,667070000],[1961,660330000],[1962,665770000],[1963,682335000],[1964,698355000],[1965,715185000],[1966,735400000],[1967,754550000],[1968,774510000],[1969,796025000],[1970,818315000],[1971,841105000],[1972,862030000],[1973,881940000],[1974,900350000],[1975,916395000],[1976,930685000],[1977,943455000],[1978,956165000],[1979,969005000],[1980,981235000],[1981,993861000],[1982,1000281000],[1983,1023288000],[1984,1036825000],[1985,1051040000],[1986,1066790000],[1987,1084035000],[1988,1101630000],[1989,1118650000],[1990,1135185000],[1991,1150780000],[1992,1164970000],[1993,1178440000],[1994,1191835000],[1995,1204855000],[1996,1217550000],[1997,1230075000],[1998,1241935000],[1999,1252735000],[2000,1262645000],[2001,1271850000],[2002,1280400000],[2003,1288400000],[2004,1295733978],[2005,1303182268],[2006,1310823807],[2007,1318683096],[2008,1326856173]],"lifeExpectancy":[[1800,32],[1850,32],[1856,26],[1864,31],[1871,32],[1924,32],[1930,32],[1934,34],[1936,35],[1942,37],[1949,41],[1950,39.25],[1951,39.64],[1952,40.41],[1953,44.56],[1954,46.47],[1955,48.02],[1956,50.45],[1957,50.55],[1958,50.16],[1959,38.4],[1960,31.63],[1961,34.1],[1962,44.5],[1963,51.9],[1964,53.32],[1965,55.65],[1966,56.8],[1967,58.38],[1968,59.41],[1969,60.97],[1970,62.65],[1971,63.74],[1972,63.12],[1973,62.78],[1974,62.5],[1975,62.7],[1976,62.44],[1977,63.97],[1978,64.24],[1979,65.09],[1980,66.12],[1981,66.45],[1982,66.37],[1983,66.54],[1984,66.71],[1985,66.89],[1986,67.08],[1987,67.29],[1988,67.52],[1989,67.77],[1990,68.04],[1991,68.33],[1992,68.64],[1993,68.95],[1994,69.27],[1995,69.6],[1996,69.94],[1997,70.28],[1998,70.62],[1999,70.96],[2000,71.29],[2001,71.59],[2002,71.87],[2003,72.13],[2004,72.35],[2005,72.56],[2006,72.74],[2007,72.92],[2008,73.1],[2009,73.28]]},{"name":"Fiji","region":"East Asia & Pacific","income":[[1800,472.12],[1820,472.12],[1913,638.26],[1960,2036.45],[1961,2037.5],[1962,2039.39],[1963,2096.9],[1964,2130.13],[1965,2013.01],[1966,1960.75],[1967,2170.07],[1968,2290.59],[1969,2300.62],[1970,2538.96],[1971,2657.58],[1972,2797.76],[1973,3059.32],[1974,3076.71],[1975,3033.46],[1976,3059.19],[1977,3182.57],[1978,3183.86],[1979,3504.12],[1980,3374.56],[1981,3502.68],[1982,3209.26],[1983,3005.77],[1984,3189.48],[1985,2995.25],[1986,3197.96],[1987,2974.85],[1988,3000.08],[1989,3217.64],[1992,3410.29],[1993,3451.92],[1994,3579.65],[1995,3625.41],[1996,3760.19],[1997,3643.63],[1998,3660.5],[1999,3952.06],[2000,3856.32],[2001,3905.93],[2002,4004.48],[2003,4019.14],[2004,4205.96],[2005,4209],[2006,4249.35],[2007,4192.43],[2008,4153.29],[2009,4016.2]],"population":[[1800,130533],[1843,140000],[1850,137000],[1881,127000],[1891,121000],[1900,120000],[1901,120000],[1911,140000],[1921,157000],[1936,198000],[1946,260000],[1950,287348],[1951,295212],[1952,303594],[1953,312528],[1954,322045],[1955,332185],[1956,342987],[1957,354495],[1958,366755],[1959,379819],[1960,393348],[1961,407359],[1962,421869],[1963,436455],[1964,450647],[1965,463444],[1966,474000],[1967,485000],[1968,495000],[1969,506000],[1970,521000],[1971,533000],[1972,544000],[1973,556000],[1974,565000],[1975,576000],[1976,585000],[1977,599339],[1978,610845],[1979,622328],[1980,634506],[1981,646772],[1982,658906],[1983,671914],[1984,685572],[1985,698942],[1986,712989],[1987,719574],[1988,725994],[1989,732181],[1990,738090],[1991,743876],[1992,750242],[1993,757711],[1994,766268],[1995,775901],[1996,786603],[1997,797890],[1998,809292],[1999,820823],[2000,832494],[2001,844330],[2002,856346],[2003,868531],[2004,880874],[2005,893354],[2006,905949],[2007,918675],[2008,931545]],"lifeExpectancy":[[1800,26.1],[1925,26.1],[1950,51.57],[1951,51.8],[1952,52.25],[1953,52.69],[1954,53.12],[1955,53.54],[1956,53.95],[1957,54.35],[1958,54.74],[1959,55.13],[1960,55.52],[1961,55.92],[1962,56.31],[1963,56.72],[1964,57.13],[1965,57.54],[1966,57.97],[1967,58.39],[1968,58.81],[1969,59.22],[1970,59.63],[1971,60.04],[1972,60.44],[1973,60.85],[1974,61.25],[1975,61.66],[1976,62.06],[1977,62.47],[1978,62.87],[1979,63.28],[1980,63.69],[1981,64.11],[1982,64.55],[1983,64.98],[1984,65.41],[1985,65.81],[1986,66.15],[1987,66.42],[1988,66.6],[1989,66.7],[1990,66.73],[1991,66.71],[1992,66.67],[1993,66.63],[1994,66.61],[1995,66.63],[1996,66.7],[1997,66.8],[1998,66.93],[1999,67.1],[2000,67.28],[2001,67.48],[2002,67.69],[2003,67.91],[2004,68.11],[2005,68.31],[2006,68.5],[2007,68.68],[2008,68.87],[2009,69.05]]},{"name":"French Polynesia","region":"East Asia & Pacific","income":[[1800,809.34],[1820,809.34],[1913,1094.17],[1938,3809.11],[1950,6931.99],[1965,14652.18],[1966,15501.46],[1967,14244.02],[1968,15788.21],[1969,14827.48],[1970,14559.83],[1971,15778.51],[1972,14567.16],[1973,15221.11],[1974,17414.38],[1975,16058.06],[1976,16850.77],[1977,16682.11],[1978,17781.65],[1979,17930.54],[1980,17487.1],[1981,18420.35],[1982,19673.49],[1983,20154.29],[1984,20668.02],[1985,21218.42],[1986,22429.06],[1987,23454.41],[1988,23470.77],[1989,23644.36],[1990,23649.59],[1991,24294.36],[1992,24021.2],[1993,23573.74],[1994,23307.75],[1995,22982.73],[1996,22624.68],[1997,22634.06],[1998,23607.7],[1999,24121.45],[2000,24659.01],[2001,24575.06],[2002,25224.33],[2003,25627.58],[2004,25652.81],[2005,26016.11],[2006,26151.76],[2007,26379.1],[2008,26733.88]],"population":[[1800,62530],[1843,66000],[1850,62000],[1900,30000],[1926,36000],[1931,40000],[1936,44000],[1946,55000],[1950,62100],[1951,63000],[1952,64500],[1953,66800],[1954,69200],[1955,71900],[1956,75200],[1957,76600],[1958,78100],[1959,79600],[1960,81100],[1961,82600],[1962,83471],[1963,87046],[1964,90793],[1965,94717],[1966,98562],[1967,102756],[1968,107309],[1969,108700],[1970,114000],[1971,121100],[1972,124000],[1973,127000],[1974,130100],[1975,133100],[1976,136300],[1977,138156],[1978,142083],[1979,146463],[1980,150896],[1981,155686],[1982,160416],[1983,165319],[1984,170279],[1985,175416],[1986,180644],[1987,185839],[1988,191173],[1989,196542],[1990,201826],[1991,207085],[1992,212174],[1993,217191],[1994,222078],[1995,226766],[1996,231305],[1997,235770],[1998,240230],[1999,244679],[2000,249110],[2001,253506],[2002,257847],[2003,262125],[2004,266339],[2005,270485],[2006,274578],[2007,278633],[2008,282645]],"lifeExpectancy":[[1950,45.51],[1951,46.44],[1952,48.21],[1953,49.79],[1954,51.2],[1955,52.42],[1956,53.47],[1957,54.35],[1958,55.08],[1959,55.68],[1960,56.17],[1961,56.59],[1962,56.97],[1963,57.35],[1964,57.73],[1965,58.14],[1966,58.56],[1967,58.98],[1968,59.38],[1969,59.75],[1970,60.11],[1971,60.42],[1972,60.7],[1973,60.97],[1974,61.23],[1975,61.53],[1976,61.9],[1977,62.36],[1978,62.93],[1979,63.58],[1980,64.3],[1981,65.02],[1982,65.72],[1983,66.35],[1984,66.89],[1985,67.36],[1986,67.76],[1987,68.14],[1988,68.51],[1989,68.88],[1990,69.26],[1991,69.63],[1992,69.97],[1993,70.28],[1994,70.56],[1995,70.82],[1996,71.07],[1997,71.33],[1998,71.62],[1999,71.92],[2000,72.24],[2001,72.56],[2002,72.88],[2003,73.18],[2004,73.46],[2005,73.72],[2006,73.96],[2007,74.18],[2008,74.39],[2009,74.59]]},{"name":"Hong Kong, China","region":"East Asia & Pacific","income":[[1800,790.15],[1820,790.15],[1870,877.43],[1913,1643.6],[1950,2849.88],[1951,2949.19],[1952,3054.42],[1953,3160.15],[1954,3271.09],[1955,3386.38],[1956,3506.6],[1957,3629.08],[1958,3756.59],[1959,3888.53],[1960,4026.16],[1961,4167.37],[1962,4692.65],[1963,5246.03],[1964,5559.56],[1965,6199.22],[1966,6250.4],[1967,6197.96],[1968,6269.78],[1969,6867.09],[1970,7317.44],[1971,7668.23],[1972,8315.93],[1973,9128.67],[1974,9110.16],[1975,8981.46],[1976,10157.28],[1977,11186.14],[1978,11919.01],[1979,12585.32],[1980,13494.1],[1981,14392.75],[1982,14560.53],[1983,15156.55],[1984,16504.24],[1985,16398.3],[1986,17935.52],[1987,20038.47],[1988,21476.43],[1989,21897.43],[1990,22536.17],[1991,23541.78],[1992,24757.6],[1993,25864.07],[1994,26685.04],[1995,27018.05],[1996,27448.74],[1997,28377.63],[1998,26767.13],[1999,27452.02],[2000,29972.38],[2001,29866.07],[2002,30209.02],[2003,30961.45],[2004,33401.64],[2005,35680],[2006,37788.38],[2007,39949.68],[2008,40480.28],[2009,39086.39]],"population":[[1800,20000],[1820,20000],[1850,33000],[1870,123000],[1890,214000],[1900,306000],[1913,487000],[1914,507000],[1915,528000],[1916,550000],[1917,573000],[1918,597000],[1919,622000],[1920,648000],[1921,625000],[1922,638000],[1923,668000],[1924,696000],[1925,725000],[1926,710000],[1927,725000],[1928,753000],[1929,785000],[1930,821000],[1931,840000],[1932,901000],[1933,923000],[1934,944000],[1935,966000],[1936,988000],[1937,1282000],[1938,1479000],[1939,1750000],[1940,1786000],[1941,1639000],[1946,1550000],[1947,1750000],[1948,1800000],[1949,1857000],[1950,2237000],[1951,2015300],[1952,2125900],[1953,2242200],[1954,2364900],[1955,2490400],[1956,2614600],[1957,2736300],[1958,2854100],[1959,2967400],[1960,3075300],[1961,3168100],[1962,3305200],[1963,3420900],[1964,3504600],[1965,3597900],[1966,3629900],[1967,3722800],[1968,3802700],[1969,3863900],[1970,3959000],[1971,4045300],[1972,4115700],[1973,4212600],[1974,4319600],[1975,4395800],[1976,4518000],[1977,4583700],[1978,4667500],[1979,4929700],[1980,5063100],[1981,5183400],[1982,5264500],[1983,5345100],[1984,5397900],[1985,5456200],[1986,5524600],[1987,5584510],[1988,5628407],[1989,5660721],[1990,5687959],[1991,5752000],[1992,5829696],[1993,5934511],[1994,6067288],[1995,6225347],[1996,6391564],[1997,6495918],[1998,6544564],[1999,6599307],[2000,6658720],[2001,6713376],[2002,6762476],[2003,6809738],[2004,6855125],[2005,6898686],[2006,6940432],[2007,6980412],[2008,7018636]],"lifeExpectancy":[[1950,59.22],[1951,59.68],[1952,60.56],[1953,61.41],[1954,62.22],[1955,63],[1956,63.73],[1957,64.43],[1958,65.09],[1959,65.72],[1960,66.32],[1961,66.88],[1962,67.42],[1963,67.93],[1964,68.42],[1965,68.9],[1966,69.36],[1967,69.81],[1968,70.24],[1969,70.66],[1970,71.06],[1971,71.44],[1972,71.81],[1973,72.16],[1974,72.49],[1975,72.82],[1976,73.15],[1977,73.5],[1978,73.86],[1979,74.23],[1980,74.59],[1981,74.92],[1982,75.21],[1983,75.45],[1984,75.64],[1985,75.82],[1986,75.99],[1987,76.19],[1988,76.44],[1989,76.74],[1990,77.1],[1991,77.49],[1992,77.9],[1993,78.31],[1994,78.72],[1995,79.11],[1996,79.48],[1997,79.84],[1998,80.19],[1999,80.52],[2000,80.83],[2001,81.11],[2002,81.36],[2003,81.58],[2004,81.77],[2005,81.92],[2006,82.06],[2007,82.18],[2008,82.29],[2009,82.4]]},{"name":"Indonesia","region":"East Asia & Pacific","income":[[1800,514.12],[1820,518.73],[1850,539.86],[1870,554.8],[1871,547.26],[1872,540.26],[1873,545.43],[1874,552.01],[1875,556.52],[1876,567.79],[1877,568.92],[1878,556.43],[1879,562.78],[1880,561.02],[1881,589.05],[1882,567.29],[1883,554.72],[1884,594.98],[1885,594.45],[1886,584.96],[1887,585.6],[1888,580.55],[1889,574.95],[1890,554.2],[1891,563.86],[1892,580.08],[1893,591.63],[1894,593.51],[1895,588.5],[1896,586.03],[1897,586.17],[1898,581.95],[1899,604.2],[1900,615.87],[1901,600.79],[1902,583.07],[1903,608.33],[1904,609.52],[1905,610.21],[1906,619.6],[1907,627.93],[1908,621.19],[1909,643.39],[1910,673.94],[1911,697.39],[1912,700.78],[1913,723.93],[1914,715.9],[1915,717.23],[1916,715.29],[1917,709.19],[1918,722.53],[1919,779.14],[1920,748.45],[1921,741.55],[1922,752.97],[1923,758.93],[1924,788.01],[1925,793.81],[1926,829.87],[1927,870.85],[1928,891.62],[1929,903.85],[1930,904.26],[1931,823.28],[1932,808.18],[1933,801.5],[1934,804.93],[1935,830.79],[1936,881.13],[1937,936.18],[1938,949.68],[1939,949.53],[1940,1017.53],[1941,1013.45],[1942,743.61],[1943,659.2],[1944,525.24],[1945,462.55],[1946,477.15],[1947,526.99],[1948,611.54],[1949,666.09],[1950,704.35],[1951,744.28],[1952,749.68],[1953,770.93],[1954,807.6],[1955,823.68],[1956,804.83],[1957,858.9],[1958,792.47],[1959,816.55],[1960,834.99],[1961,859.77],[1962,849.29],[1963,798.21],[1964,809.58],[1965,802.64],[1966,794.06],[1967,762.43],[1968,827.29],[1969,911.09],[1970,986.73],[1971,1023.36],[1972,1111.11],[1973,1244.57],[1974,1262.42],[1975,1229.41],[1976,1314.63],[1977,1382.7],[1978,1418.14],[1979,1455.9],[1980,1549.1],[1981,1608.11],[1982,1516.87],[1983,1533.45],[1984,1609.27],[1985,1619.87],[1986,1690.43],[1987,1748.36],[1988,1821.98],[1989,1955.78],[1990,2097.7],[1991,2176.65],[1992,2383.14],[1993,2519.34],[1994,2674.28],[1995,2851.72],[1996,3026.82],[1997,3119.34],[1998,2656.41],[1999,2627.02],[2000,2714.94],[2001,2787.53],[2002,2873.91],[2003,2984.31],[2004,3095.79],[2005,3234],[2006,3367.56],[2007,3535.28],[2008,3699.54],[2009,3818.08]],"population":[[1820,17927000],[1821,18075923],[1822,18226083],[1823,18377490],[1824,18530155],[1825,18684088],[1826,18839300],[1827,18995801],[1828,19153603],[1829,19312715],[1830,19473149],[1831,19634916],[1832,19798026],[1833,19962492],[1834,20128324],[1835,20295533],[1836,20464132],[1837,20634131],[1838,20805542],[1839,20978378],[1840,21152649],[1841,21328367],[1842,21505546],[1843,21684196],[1844,21864330],[1845,22045961],[1846,22229101],[1847,22413762],[1848,22599957],[1849,22787699],[1850,22977000],[1851,23242887],[1852,23511851],[1853,23783928],[1854,24059152],[1855,24337562],[1856,24619194],[1857,24904084],[1858,25192271],[1859,25483793],[1860,25778689],[1861,26076997],[1862,26378757],[1863,26684009],[1864,26992793],[1865,27305150],[1866,27621122],[1867,27940751],[1868,28264078],[1869,28591147],[1870,28922000],[1871,29463000],[1872,30060000],[1873,30555000],[1874,30962000],[1875,31197000],[1876,31394000],[1877,31740000],[1878,32035000],[1879,32293000],[1880,32876000],[1881,33213000],[1882,33394000],[1883,33816000],[1884,34162000],[1885,34790000],[1886,35402000],[1887,35898000],[1888,36345000],[1889,36662000],[1890,37579000],[1891,37792000],[1892,38288000],[1893,38263000],[1894,38782000],[1895,39476000],[1896,39936000],[1897,40620000],[1898,41316000],[1899,42025000],[1900,42746000],[1901,43275000],[1902,43810000],[1903,44352000],[1904,44901000],[1905,45457000],[1906,45993000],[1907,46535000],[1908,47085000],[1909,47642000],[1910,48206000],[1911,48778000],[1912,49358000],[1913,49934000],[1914,50517000],[1915,51108000],[1916,51705000],[1917,52083000],[1918,52334000],[1919,53027000],[1920,53723000],[1921,54367000],[1922,55020000],[1923,55683000],[1924,56354000],[1925,57036000],[1926,57727000],[1927,58429000],[1928,59140000],[1929,59863000],[1930,60596000],[1931,61496000],[1932,62400000],[1933,63314000],[1934,64246000],[1935,65192000],[1936,66154000],[1937,67136000],[1938,68131000],[1939,69145000],[1940,70175000],[1941,71316000],[1942,72475000],[1943,73314000],[1944,73565000],[1945,73332000],[1946,74132000],[1947,75146000],[1948,76289000],[1949,77654000],[1950,79043000],[1951,80525000],[1952,82052000],[1953,83611000],[1954,85196000],[1955,86807000],[1956,88456000],[1957,90124000],[1958,91821000],[1959,93565000],[1960,95254000],[1961,97085000],[1962,99028000],[1963,101009000],[1964,103031000],[1965,105093000],[1966,107197000],[1967,109343000],[1968,111532000],[1969,113765000],[1970,116044000],[1971,118368000],[1972,121282000],[1973,124271000],[1974,127201000],[1975,130297000],[1976,133297000],[1977,136725000],[1978,140062000],[1979,143485000],[1980,146995000],[1981,150134000],[1982,153343000],[1983,156623000],[1984,159975000],[1985,163403000],[1986,166312000],[1987,169276000],[1988,172294000],[1989,175369000],[1990,178500000],[1991,181628000],[1992,184816000],[1993,188066000],[1994,191378000],[1995,194755000],[1996,197003000],[1997,199278000],[1998,201580000],[1999,203909000],[2000,206265000],[2001,208648000],[2002,211060000],[2003,214497000],[2004,215967000],[2005,218465000],[2006,220991000],[2007,223547000],[2008,226134000]],"lifeExpectancy":[[1800,30],[1927,30],[1932,32.5],[1937,35],[1942,27.5],[1947,27.5],[1950,36.5],[1951,36.74],[1952,37.23],[1953,37.72],[1954,38.2],[1955,38.68],[1956,39.16],[1957,39.64],[1958,40.13],[1959,40.63],[1960,41.15],[1961,41.69],[1962,42.27],[1963,42.88],[1964,43.53],[1965,44.2],[1966,44.89],[1967,45.58],[1968,46.26],[1969,46.93],[1970,47.59],[1971,48.25],[1972,48.91],[1973,49.58],[1974,50.27],[1975,50.96],[1976,51.65],[1977,52.35],[1978,53.04],[1979,53.73],[1980,54.44],[1981,55.16],[1982,55.92],[1983,56.7],[1984,57.49],[1985,58.29],[1986,59.05],[1987,59.76],[1988,60.42],[1989,61.01],[1990,61.56],[1991,62.09],[1992,62.63],[1993,63.19],[1994,63.79],[1995,64.42],[1996,65.06],[1997,65.69],[1998,66.3],[1999,66.87],[2000,67.41],[2001,67.91],[2002,68.39],[2003,68.84],[2004,69.28],[2005,69.7],[2006,70.1],[2007,70.47],[2008,70.83],[2009,71.17]]},{"name":"Japan","region":"East Asia & Pacific","income":[[1800,1055.06],[1820,1083.6],[1821,1084.14],[1822,1084.69],[1823,1085.23],[1824,1085.77],[1825,1086.32],[1826,1086.86],[1827,1087.4],[1828,1087.95],[1829,1088.49],[1830,1089.04],[1831,1089.58],[1832,1090.13],[1833,1090.68],[1834,1091.22],[1835,1091.77],[1836,1092.32],[1837,1092.86],[1838,1093.41],[1839,1093.96],[1840,1094.51],[1841,1095.05],[1842,1095.6],[1843,1096.15],[1844,1096.7],[1845,1097.25],[1846,1097.8],[1847,1098.35],[1848,1098.9],[1849,1099.45],[1850,1100],[1851,1102.43],[1852,1104.86],[1853,1107.3],[1854,1109.74],[1855,1112.19],[1856,1114.64],[1857,1117.1],[1858,1119.56],[1859,1122.03],[1860,1124.51],[1861,1126.99],[1862,1129.47],[1863,1131.97],[1864,1134.46],[1865,1136.96],[1866,1139.47],[1867,1141.99],[1868,1144.51],[1869,1147.03],[1870,1149.56],[1871,1154.57],[1872,1158.58],[1873,1164.13],[1874,1169.9],[1875,1250.55],[1876,1209.18],[1877,1234.7],[1878,1218.67],[1879,1280.18],[1880,1320.54],[1881,1265.97],[1882,1286.22],[1883,1273.17],[1884,1268.45],[1885,1303.03],[1886,1385.7],[1887,1436],[1888,1355.03],[1889,1402.18],[1890,1518.44],[1891,1432.42],[1892,1513.78],[1893,1504.42],[1894,1666.92],[1895,1669.75],[1896,1559.25],[1897,1572.31],[1898,1845.55],[1899,1686.05],[1900,1736.39],[1901,1772.67],[1902,1655.54],[1903,1745.65],[1904,1735.69],[1905,1686.69],[1906,1887.88],[1907,1924.86],[1908,1911.45],[1909,1881.91],[1910,1882.95],[1911,1954.06],[1912,1991.34],[1913,1991.28],[1914,1901.22],[1915,2045.23],[1916,2326.89],[1917,2372.82],[1918,2373.05],[1919,2593.96],[1920,2402.74],[1921,2629.72],[1922,2584.64],[1923,2549.04],[1924,2582.09],[1925,2645.71],[1926,2621.63],[1927,2614.09],[1928,2780.19],[1929,2821.34],[1930,2572.21],[1931,2549.2],[1932,2716.38],[1933,2933.51],[1934,2894.67],[1935,2919.61],[1936,3090.28],[1937,3187.62],[1938,3372.34],[1939,3877.35],[1940,3957.53],[1941,3955.34],[1942,3880.32],[1943,3885.01],[1944,3661.06],[1945,1853.44],[1946,1988.5],[1947,2121.68],[1948,2375.5],[1949,2478.13],[1950,2644.59],[1951,2926.69],[1952,3216.96],[1953,3406.85],[1954,3554.9],[1955,3814.97],[1956,4058.84],[1957,4317.69],[1958,4528.39],[1959,4893.31],[1960,5488.81],[1961,6094.42],[1962,6576.65],[1963,7061.48],[1964,7803.68],[1965,8170.01],[1966,8957.28],[1967,9847.79],[1968,10992],[1969,12218.48],[1970,13374.86],[1971,13824.24],[1972,14778.79],[1973,15742.88],[1974,15344.57],[1975,15618.93],[1976,16066.67],[1977,16610.38],[1978,17327.76],[1979,18123.89],[1980,18488.26],[1981,18938.11],[1982,19384.11],[1983,19698.72],[1984,20339.95],[1985,21109.16],[1986,21588.49],[1987,22375.94],[1988,23661.04],[1989,24704.53],[1990,25870.14],[1991,26648.77],[1992,26824.9],[1993,26818.24],[1994,27037.83],[1995,27509.08],[1996,28385.16],[1997,28816.58],[1998,27904.68],[1999,27809.6],[2000,28559.6],[2001,28569.05],[2002,28604.59],[2003,29073.61],[2004,29742.05],[2005,30290],[2006,30909.15],[2007,31636.71],[2008,31275.13],[2009,29680.68]],"population":[[1820,31000000],[1821,31032824],[1822,31065683],[1823,31098577],[1824,31131506],[1825,31164470],[1826,31197468],[1827,31230502],[1828,31263570],[1829,31296674],[1830,31329812],[1831,31362986],[1832,31396194],[1833,31429438],[1834,31462717],[1835,31496031],[1836,31529381],[1837,31562766],[1838,31596186],[1839,31629642],[1840,31663133],[1841,31696659],[1842,31730221],[1843,31763819],[1844,31797452],[1845,31831121],[1846,31864825],[1847,31898565],[1848,31932341],[1849,31966153],[1850,32000000],[1851,32117649],[1852,32235730],[1853,32354246],[1854,32473197],[1855,32592585],[1856,32712413],[1857,32832681],[1858,32953391],[1859,33074545],[1860,33196144],[1861,33318191],[1862,33440686],[1863,33563632],[1864,33687029],[1865,33810880],[1866,33935187],[1867,34059950],[1868,34185173],[1869,34310855],[1870,34437000],[1871,34648000],[1872,34859000],[1873,35070000],[1874,35235000],[1875,35436000],[1876,35713000],[1877,36018000],[1878,36315000],[1879,36557000],[1880,36807000],[1881,37112000],[1882,37414000],[1883,37766000],[1884,38138000],[1885,38427000],[1886,38622000],[1887,38866000],[1888,39251000],[1889,39688000],[1890,40077000],[1891,40380000],[1892,40684000],[1893,41001000],[1894,41350000],[1895,41775000],[1896,42196000],[1897,42643000],[1898,43145000],[1899,43626000],[1900,44103000],[1901,44662000],[1902,45255000],[1903,45841000],[1904,46378000],[1905,46829000],[1906,47227000],[1907,47691000],[1908,48260000],[1909,48869000],[1910,49518000],[1911,50215000],[1912,50941000],[1913,51672000],[1914,52396000],[1915,53124000],[1916,53815000],[1917,54437000],[1918,54886000],[1919,55253000],[1920,55818000],[1921,56490000],[1922,57209000],[1923,57937000],[1924,58686000],[1925,59522000],[1926,60490000],[1927,61430000],[1928,62361000],[1929,63244000],[1930,64203000],[1931,65205000],[1932,66189000],[1933,67182000],[1934,68090000],[1935,69238000],[1936,70171000],[1937,71278000],[1938,71879000],[1939,72364000],[1940,72967000],[1941,74005000],[1942,75029000],[1943,76005000],[1944,77178000],[1945,76224000],[1946,77199000],[1947,78119000],[1948,80155000],[1949,81971000],[1950,83805000],[1951,85163848],[1952,86459025],[1953,87655163],[1954,88753892],[1955,89815060],[1956,90766211],[1957,91563009],[1958,92388772],[1959,93296566],[1960,94091638],[1961,94943293],[1962,95831757],[1963,96811940],[1964,97826267],[1965,98882534],[1966,99790308],[1967,100825279],[1968,101960672],[1969,103171831],[1970,104344973],[1971,105696786],[1972,107188273],[1973,108706797],[1974,110162302],[1975,111573116],[1976,112774841],[1977,113872473],[1978,114912911],[1979,115890431],[1980,116807309],[1981,117648092],[1982,118454974],[1983,119269949],[1984,120034697],[1985,120754335],[1986,121491913],[1987,122091325],[1988,122613000],[1989,123107500],[1990,123537399],[1991,123946268],[1992,124329269],[1993,124668019],[1994,125014050],[1995,125341354],[1996,125645311],[1997,125956499],[1998,126246096],[1999,126494403],[2000,126699784],[2001,126891645],[2002,127065841],[2003,127214499],[2004,127333002],[2005,127417244],[2006,127463611],[2007,127467972],[2008,127425722]],"lifeExpectancy":[[1800,36.4],[1865,36.43],[1870,36.59],[1875,36.8],[1880,37.04],[1885,37.33],[1890,37.68],[1895,38.1],[1900,38.6],[1905,39.22],[1910,39.97],[1915,40.9],[1920,42.04],[1922,42.62],[1927,45.66],[1935,48.24],[1937,49],[1940,49],[1942,48.5],[1943,46],[1944,40],[1945,30.54],[1946,46.5],[1947,51.75],[1948,56.89],[1949,57.76],[1950,59.3],[1951,60.99],[1952,63.03],[1953,63.37],[1954,64.61],[1955,65.77],[1956,65.63],[1957,65.5],[1958,67.12],[1959,67.51],[1960,67.8],[1961,68.45],[1962,68.73],[1963,69.81],[1964,70.28],[1965,70.33],[1966,71.14],[1967,71.43],[1968,71.75],[1969,71.98],[1970,72.07],[1971,72.89],[1972,73.42],[1973,73.48],[1974,73.91],[1975,74.41],[1976,74.81],[1977,75.38],[1978,75.7],[1979,76.21],[1980,76.19],[1981,76.6],[1982,77.11],[1983,77.14],[1984,77.54],[1985,77.84],[1986,78.26],[1987,78.67],[1988,78.58],[1989,79.01],[1990,79.04],[1991,79.31],[1992,79.36],[1993,79.5],[1994,79.91],[1995,79.76],[1996,80.46],[1997,80.69],[1998,80.77],[1999,80.75],[2000,81.35],[2001,81.7],[2002,82],[2003,82.07],[2004,82.36],[2005,82.27],[2006,82.68],[2007,82.87],[2008,82.81],[2009,82.98]]},{"name":"Korea, Dem. Rep.","region":"East Asia & Pacific","income":[[1800,698],[1820,698],[1821,698],[1822,698],[1823,698],[1824,699],[1825,699],[1826,699],[1827,699],[1828,699],[1829,699],[1830,699],[1831,699],[1832,699],[1833,699],[1834,699],[1835,700],[1836,700],[1837,700],[1838,700],[1839,700],[1840,700],[1841,700],[1842,700],[1843,700],[1844,700],[1845,701],[1846,701],[1847,701],[1848,701],[1849,701],[1850,701],[1851,701],[1852,701],[1853,701],[1854,701],[1855,701],[1856,702],[1857,702],[1858,702],[1859,702],[1860,702],[1861,702],[1862,702],[1863,702],[1864,702],[1865,702],[1866,702],[1867,703],[1868,703],[1869,703],[1870,703],[1871,706],[1872,708],[1873,711],[1874,714],[1875,716],[1876,719],[1877,722],[1878,725],[1879,727],[1880,730],[1881,733],[1882,736],[1883,739],[1884,741],[1885,744],[1886,747],[1887,750],[1888,753],[1889,756],[1890,758],[1891,761],[1892,764],[1893,767],[1894,770],[1895,773],[1896,776],[1897,779],[1898,782],[1899,785],[1900,788],[1901,791],[1902,794],[1903,797],[1904,800],[1905,803],[1906,806],[1907,809],[1908,812],[1909,815],[1910,819],[1911,822],[1912,847],[1913,870],[1914,900],[1915,1042],[1916,1008],[1917,1104],[1918,1177],[1919,1240],[1920,1067],[1921,1137],[1922,1033],[1923,1093],[1924,1087],[1925,1074],[1926,1102],[1927,1136],[1928,1130],[1929,1058],[1930,990],[1931,983],[1932,973],[1933,1164],[1934,1149],[1935,1239],[1936,1340],[1937,1466],[1938,1529],[1939,1368],[1940,1531],[1941,1539],[1942,1517],[1943,1527],[1944,1448],[1945,674],[1946,682],[1947,719],[1948,773],[1949,830],[1950,870],[1951,727],[1952,777],[1953,1004],[1954,1059],[1955,1109],[1956,1097],[1957,1158],[1958,1193],[1959,1209],[1960,1200],[1961,1229],[1962,1234],[1963,1313],[1964,1396],[1965,1452],[1966,1597],[1967,1684],[1968,1866],[1969,2115],[1970,2262],[1971,2938],[1972,3002],[1973,3332],[1974,3373],[1975,3373],[1976,3373],[1977,3373],[1978,3373],[1979,3373],[1980,3373],[1981,3373],[1982,3373],[1983,3373],[1984,3373],[1985,3373],[1986,3373],[1987,3373],[1988,3373],[1989,3373],[1990,3373],[1991,3373],[1992,3061],[1993,3018],[1994,2300],[1995,2000],[1996,1809],[1997,1691],[1998,1693],[1999,1706],[2000,1690],[2001,1667],[2002,1647],[2003,1628],[2004,1612],[2005,1597],[2006,1572],[2007,1531],[2008,1582],[2009,1635]],"population":[[1800,4345000],[1820,4345000],[1870,4511000],[1913,4897000],[1950,9471140],[1951,9162410],[1952,8865488],[1953,8579873],[1954,8571805],[1955,8839427],[1956,9115740],[1957,9411381],[1958,9727435],[1959,10054154],[1960,10391909],[1961,10651332],[1962,10917494],[1963,11209506],[1964,11527887],[1965,11868751],[1966,12231860],[1967,12617009],[1968,13024159],[1969,13454771],[1970,13911902],[1971,14364579],[1972,14781241],[1973,15160867],[1974,15501464],[1975,15801308],[1976,16069433],[1977,16325320],[1978,16579905],[1979,16840290],[1980,17113626],[1981,17384008],[1982,17647518],[1983,17917990],[1984,18196000],[1985,18481420],[1986,18772457],[1987,19067554],[1988,19371141],[1989,19687910],[1990,20018546],[1991,20361086],[1992,20711375],[1993,21064115],[1994,21339904],[1995,21561856],[1996,21648743],[1997,21585105],[1998,21454900],[1999,21444989],[2000,21647682],[2001,21940326],[2002,22215365],[2003,22466481],[2004,22697553],[2005,22912177],[2006,23113019],[2007,23301725],[2008,23479089]],"lifeExpectancy":[[1800,26],[1903,26],[1908,23.51],[1913,24.98],[1918,26.98],[1923,29.53],[1928,33.61],[1933,37.39],[1938,42.57],[1942,44.89],[1950,48.04],[1951,48.58],[1952,49.63],[1953,50.6],[1954,51.49],[1955,52.31],[1956,53.05],[1957,53.72],[1958,54.34],[1959,54.9],[1960,55.43],[1961,55.94],[1962,56.46],[1963,56.99],[1964,57.57],[1965,58.19],[1966,58.88],[1967,59.61],[1968,60.38],[1969,61.17],[1970,61.98],[1971,62.78],[1972,63.58],[1973,64.34],[1974,65.07],[1975,65.74],[1976,66.35],[1977,66.9],[1978,67.4],[1979,67.85],[1980,68.27],[1981,68.66],[1982,69.04],[1983,69.4],[1984,69.75],[1985,70.07],[1986,70.35],[1987,70.57],[1988,70.71],[1989,70.77],[1990,70.73],[1991,70.56],[1992,70.29],[1993,69.92],[1994,69.49],[1995,69.01],[1996,68.51],[1997,68.03],[1998,67.6],[1999,67.24],[2000,66.96],[2001,66.78],[2002,66.69],[2003,66.67],[2004,66.72],[2005,66.82],[2006,66.97],[2007,67.14],[2008,67.33],[2009,67.53]]},{"name":"Korea, Rep.","region":"East Asia & Pacific","income":[[1800,596],[1820,596],[1821,596],[1822,596],[1823,596],[1824,596],[1825,596],[1826,596],[1827,597],[1828,597],[1829,597],[1830,597],[1831,597],[1832,597],[1833,597],[1834,597],[1835,597],[1836,597],[1837,597],[1838,597],[1839,598],[1840,598],[1841,598],[1842,598],[1843,598],[1844,598],[1845,598],[1846,598],[1847,598],[1848,598],[1849,598],[1850,598],[1851,598],[1852,599],[1853,599],[1854,599],[1855,599],[1856,599],[1857,599],[1858,599],[1859,599],[1860,599],[1861,599],[1862,599],[1863,599],[1864,600],[1865,600],[1866,600],[1867,600],[1868,600],[1869,600],[1870,600],[1871,602],[1872,605],[1873,607],[1874,609],[1875,612],[1876,614],[1877,616],[1878,619],[1879,621],[1880,623],[1881,626],[1882,628],[1883,630],[1884,633],[1885,635],[1886,638],[1887,640],[1888,643],[1889,645],[1890,647],[1891,650],[1892,652],[1893,655],[1894,657],[1895,660],[1896,662],[1897,665],[1898,668],[1899,670],[1900,673],[1901,675],[1902,678],[1903,680],[1904,683],[1905,686],[1906,688],[1907,691],[1908,693],[1909,696],[1910,699],[1911,701],[1912,723],[1913,743],[1914,768],[1915,889],[1916,861],[1917,942],[1918,1005],[1919,1058],[1920,910],[1921,971],[1922,882],[1923,933],[1924,928],[1925,917],[1926,940],[1927,969],[1928,965],[1929,903],[1930,845],[1931,839],[1932,831],[1933,993],[1934,981],[1935,1058],[1936,1144],[1937,1251],[1938,1305],[1939,1168],[1940,1307],[1941,1314],[1942,1295],[1943,1303],[1944,1236],[1945,576],[1946,582],[1947,614],[1948,660],[1949,708],[1950,743],[1951,689],[1952,736],[1953,951],[1954,1003],[1955,1050],[1956,1039],[1957,1097],[1958,1130],[1959,1145],[1960,1137],[1961,1163],[1962,1169],[1963,1243],[1964,1322],[1965,1375],[1966,1512],[1967,1594],[1968,1768],[1969,2003],[1970,2141],[1971,2319],[1972,2458],[1973,2844],[1974,3056],[1975,3225],[1976,3568],[1977,3899],[1978,4224],[1979,4492],[1980,4331],[1981,4558],[1982,4859],[1983,5373],[1984,5804],[1985,6162],[1986,6849],[1987,7612],[1988,8441],[1989,8948],[1990,9764],[1991,10622],[1992,11146],[1993,11701],[1994,12609],[1995,13674],[1996,14574],[1997,15202],[1998,14359],[1999,15692],[2000,16996],[2001,17784],[2002,18871],[2003,19485],[2004,20443],[2005,21342],[2006,22373],[2007,23438],[2008,23903],[2009,23875]],"population":[[1800,9395000],[1820,9395000],[1850,9545000],[1870,9753000],[1890,9848000],[1900,9896000],[1910,10096000],[1911,10258000],[1912,10422000],[1913,10589000],[1914,10764000],[1915,10911000],[1916,11086000],[1917,11263000],[1918,11443000],[1919,11627000],[1920,11804000],[1921,12040000],[1922,12281000],[1923,12526000],[1924,12777000],[1925,13005000],[1926,13179000],[1927,13356000],[1928,13535000],[1929,13716000],[1930,13900000],[1931,14117000],[1932,14338000],[1933,14562000],[1934,14789000],[1935,15020000],[1936,15139000],[1937,15260000],[1938,15381000],[1939,15504000],[1940,15627000],[1941,15859000],[1942,16094000],[1943,16332000],[1944,16574000],[1945,17917000],[1946,19369000],[1947,19886000],[1948,20027000],[1949,20208000],[1950,20845771],[1951,20876189],[1952,20947571],[1953,21060464],[1954,21258836],[1955,21551834],[1956,22031228],[1957,22611552],[1958,23253622],[1959,23981313],[1960,24784140],[1961,25613842],[1962,26420307],[1963,27211316],[1964,27984000],[1965,28705000],[1966,29436000],[1967,30131000],[1968,30838000],[1969,31544000],[1970,32241000],[1971,32883000],[1972,33505000],[1973,34073000],[1974,34692000],[1975,35281000],[1976,35860000],[1977,36436000],[1978,37019000],[1979,37534000],[1980,38124000],[1981,38723000],[1982,39326000],[1983,39910000],[1984,40406000],[1985,40806000],[1986,41214000],[1987,41622000],[1988,42031000],[1989,42449000],[1990,42869000],[1991,43318030],[1992,43805450],[1993,44295873],[1994,44780886],[1995,45264146],[1996,45730245],[1997,46173816],[1998,46589612],[1999,46972817],[2000,47351083],[2001,47697738],[2002,47969150],[2003,48202264],[2004,48426325],[2005,48640671],[2006,48846823],[2007,49044790],[2008,49232844]],"lifeExpectancy":[[1800,25.8],[1903,25.8],[1908,23.51],[1913,24.98],[1918,26.98],[1923,29.53],[1928,33.61],[1933,37.39],[1938,42.57],[1942,44.89],[1950,45.52],[1951,46.17],[1952,47.42],[1953,48.57],[1954,49.62],[1955,50.58],[1956,51.45],[1957,52.22],[1958,52.9],[1959,53.51],[1960,54.05],[1961,54.54],[1962,54.99],[1963,55.42],[1964,55.86],[1965,56.31],[1966,56.8],[1967,57.33],[1968,57.9],[1969,58.51],[1970,59.16],[1971,59.86],[1972,60.6],[1973,61.35],[1974,62.11],[1975,62.85],[1976,63.54],[1977,64.18],[1978,64.75],[1979,65.27],[1980,65.74],[1981,66.19],[1982,66.66],[1983,67.15],[1984,67.68],[1985,68.25],[1986,68.85],[1987,69.48],[1988,70.11],[1989,70.73],[1990,71.32],[1991,71.86],[1992,72.34],[1993,72.77],[1994,73.16],[1995,73.53],[1996,73.91],[1997,74.34],[1998,74.81],[1999,75.35],[2000,75.92],[2001,76.52],[2002,77.11],[2003,77.66],[2004,78.16],[2005,78.58],[2006,78.94],[2007,79.22],[2008,79.46],[2009,79.65]]},{"name":"Macao, China","region":"East Asia & Pacific","income":[[1800,607.01],[1820,607.01],[1913,820.62],[1950,2170.05],[1970,8453.49],[1971,8844.09],[1972,9344.18],[1973,9940.47],[1974,10611.51],[1975,11341.46],[1976,12106.57],[1977,12941.19],[1978,13807.82],[1979,14512.26],[1980,15216.44],[1981,15839.15],[1982,15856.62],[1983,16720.55],[1984,17365.77],[1985,16718.13],[1986,17058.98],[1987,18701.78],[1988,19353.91],[1989,19597.07],[1990,20495.49],[1991,20688.02],[1992,22917.23],[1993,23654.92],[1994,24247.09],[1995,24653.08],[1996,24188.5],[1997,23790.49],[1998,22404.65],[1999,21586.35],[2000,22512.56],[2001,22826.54],[2002,24755.47],[2003,27842.69],[2004,35260.87],[2005,37256],[2006,42523.57],[2007,52028.35],[2008,57436.68]],"population":[[1835,35000],[1839,13000],[1860,85000],[1900,64000],[1910,76000],[1920,84000],[1927,157000],[1937,170000],[1940,375000],[1950,205442],[1951,202367],[1952,199489],[1953,196948],[1954,194893],[1955,192684],[1956,190465],[1957,189390],[1958,188751],[1959,187499],[1960,186053],[1961,189831],[1962,198464],[1963,206989],[1964,215496],[1965,223820],[1966,231905],[1967,239773],[1968,247282],[1969,254436],[1970,261369],[1971,263565],[1972,261202],[1973,258929],[1974,256653],[1975,254331],[1976,251775],[1977,249116],[1978,248564],[1979,251368],[1980,255773],[1981,260929],[1982,270811],[1983,285451],[1984,298982],[1985,305843],[1986,312196],[1987,322983],[1988,332136],[1989,341237],[1990,351756],[1991,363858],[1992,375382],[1993,384495],[1994,393064],[1995,401452],[1996,410597],[1997,417129],[1998,421602],[1999,427618],[2000,431338],[2001,434044],[2002,437794],[2003,441487],[2004,445286],[2005,449198],[2006,453125],[2007,456989],[2008,460823]],"lifeExpectancy":[[1950,52.98],[1951,53.2],[1952,53.66],[1953,54.17],[1954,54.72],[1955,55.32],[1956,55.96],[1957,56.64],[1958,57.37],[1959,58.13],[1960,58.94],[1961,59.79],[1962,60.65],[1963,61.53],[1964,62.4],[1965,63.21],[1966,63.93],[1967,64.54],[1968,65.05],[1969,65.45],[1970,65.78],[1971,66.07],[1972,66.37],[1973,66.73],[1974,67.16],[1975,67.7],[1976,68.36],[1977,69.14],[1978,69.99],[1979,70.89],[1980,71.8],[1981,72.68],[1982,73.49],[1983,74.19],[1984,74.78],[1985,75.26],[1986,75.65],[1987,75.99],[1988,76.3],[1989,76.6],[1990,76.9],[1991,77.2],[1992,77.5],[1993,77.78],[1994,78.04],[1995,78.28],[1996,78.49],[1997,78.66],[1998,78.81],[1999,78.92],[2000,79.04],[2001,79.16],[2002,79.32],[2003,79.51],[2004,79.74],[2005,79.99],[2006,80.26],[2007,80.52],[2008,80.75],[2009,80.95]]},{"name":"Malaysia","region":"East Asia & Pacific","income":[[1800,750.13],[1820,750.13],[1870,824.43],[1911,996.55],[1912,1022.69],[1913,1120.15],[1914,1145.08],[1915,1166.82],[1916,1239.48],[1917,1286.2],[1918,1206.41],[1919,1440.43],[1920,1381.68],[1921,1337.64],[1922,1433.21],[1923,1381.09],[1924,1319.17],[1925,1494.64],[1926,1638.28],[1927,1557.04],[1928,1729.11],[1929,2093.56],[1930,2035.7],[1931,1926.89],[1932,1738.25],[1933,1791.53],[1934,1916.1],[1935,1697.92],[1936,1839.35],[1937,1628.32],[1938,1694.21],[1939,2002.74],[1940,1590.46],[1941,1541.08],[1942,2081.61],[1947,1330.46],[1948,1474.53],[1949,1904.73],[1950,1940.39],[1951,1792.01],[1952,1831.13],[1953,1791.86],[1954,1854.52],[1955,1817.19],[1956,1873.35],[1957,1810.07],[1958,1758.4],[1959,1826.02],[1960,1904.48],[1961,1981.4],[1962,2036.88],[1963,2077.26],[1964,2149.87],[1965,2245.03],[1966,2297.59],[1967,2277.74],[1968,2416.93],[1969,2495.56],[1970,2587.36],[1971,2713.47],[1972,2849.09],[1973,3185.7],[1974,3345.33],[1975,3295.77],[1976,3621.68],[1977,3827.92],[1978,4069.95],[1979,4301.4],[1980,4550.58],[1981,4758.29],[1982,4920.36],[1983,5096.8],[1984,5360.36],[1985,5172.8],[1986,5108.03],[1987,5249.8],[1988,5577.66],[1989,5960.93],[1990,6386.02],[1991,6838.2],[1992,7277.91],[1993,7815.3],[1994,8342.82],[1995,8961.56],[1996,9644.79],[1997,10132.91],[1998,9191.52],[1999,9553.52],[2000,10161.49],[2001,9994.62],[2002,10206.98],[2003,10597.64],[2004,11119.9],[2005,11466],[2006,11933.76],[2007,12459.59],[2008,12818.9],[2009,12387.67]],"population":[[1800,287000],[1820,287000],[1850,530000],[1870,800000],[1890,1585000],[1900,2232000],[1901,2288000],[1902,2345000],[1903,2404000],[1904,2467000],[1905,2532000],[1906,2601000],[1907,2672000],[1908,2745000],[1909,2821000],[1910,2893000],[1911,2967000],[1912,3025000],[1913,3084000],[1914,3144000],[1915,3207000],[1916,3271000],[1917,3337000],[1918,3404000],[1919,3473000],[1920,3545000],[1921,3618000],[1922,3698000],[1923,3779000],[1924,3863000],[1925,3949000],[1926,4038000],[1927,4128000],[1928,4221000],[1929,4316000],[1930,4413000],[1931,4513000],[1932,4604000],[1933,4697000],[1934,4793000],[1935,4890000],[1936,4993000],[1937,5099000],[1938,5207000],[1939,5317000],[1940,5434000],[1941,5554000],[1942,5592000],[1943,5630000],[1944,5668000],[1945,5707000],[1946,5746000],[1947,5786000],[1948,5922000],[1949,6061000],[1950,6433799],[1951,6581839],[1952,6748378],[1953,6928942],[1954,7117564],[1955,7311720],[1956,7519663],[1957,7739235],[1958,7965930],[1959,8195711],[1960,8428493],[1961,8663401],[1962,8906385],[1963,9148451],[1964,9397464],[1965,9647654],[1966,9899803],[1967,10154878],[1968,10409339],[1969,10662303],[1970,10910216],[1971,11171333],[1972,11441462],[1973,11711866],[1974,11986260],[1975,12267303],[1976,12553963],[1977,12845381],[1978,13138530],[1979,13443844],[1980,13764352],[1981,14096663],[1982,14441916],[1983,14793099],[1984,15157328],[1985,15545028],[1986,15941178],[1987,16331785],[1988,16729187],[1989,17117834],[1990,17503607],[1991,17906485],[1992,18319502],[1993,18747901],[1994,19180324],[1995,19611116],[1996,20044560],[1997,20476091],[1998,20911977],[1999,21354459],[2000,21793293],[2001,22229040],[2002,22662365],[2003,23092940],[2004,23522482],[2005,23953136],[2006,24385858],[2007,24821286],[2008,25259428]],"lifeExpectancy":[[1800,30.6],[1930,30.6],[1950,47.01],[1951,47.37],[1952,48.1],[1953,48.83],[1954,49.56],[1955,50.28],[1956,51.01],[1957,51.74],[1958,52.47],[1959,53.19],[1960,53.92],[1961,54.65],[1962,55.37],[1963,56.1],[1964,56.83],[1965,57.56],[1966,58.3],[1967,59.05],[1968,59.81],[1969,60.56],[1970,61.3],[1971,61.99],[1972,62.62],[1973,63.2],[1974,63.72],[1975,64.21],[1976,64.67],[1977,65.15],[1978,65.64],[1979,66.16],[1980,66.69],[1981,67.21],[1982,67.7],[1983,68.14],[1984,68.53],[1985,68.87],[1986,69.16],[1987,69.41],[1988,69.66],[1989,69.89],[1990,70.12],[1991,70.36],[1992,70.6],[1993,70.83],[1994,71.08],[1995,71.32],[1996,71.57],[1997,71.81],[1998,72.04],[1999,72.27],[2000,72.5],[2001,72.72],[2002,72.95],[2003,73.18],[2004,73.42],[2005,73.66],[2006,73.89],[2007,74.12],[2008,74.33],[2009,74.54]]},{"name":"Micronesia, Fed. Sts.","region":"East Asia & Pacific","income":[[1800,553.05],[1820,553.05],[1913,747.68],[1970,3428.19],[1971,3469.53],[1972,3495.18],[1973,4682.78],[1974,5384.38],[1975,5331.31],[1976,5247.19],[1977,5234.55],[1978,5358.55],[1979,5291],[1980,4748.19],[1981,5037.39],[1982,4745.83],[1983,4692.94],[1984,4372.64],[1985,4958.08],[1986,5220.78],[1987,5205.1],[1988,5399.42],[1989,5316.17],[1990,5408.71],[1991,5603.02],[1992,5659.93],[1993,5899.17],[1994,5898.48],[1995,5918.56],[1996,5582.74],[1997,5238.14],[1998,5217.37],[1999,5053.2],[2000,5530.16],[2001,5543.41],[2002,5565.15],[2003,5534.02],[2004,5458.99],[2005,5508],[2006,5399.22],[2007,5189.39],[2008,4994.56]],"population":[[1800,16416],[1820,16416],[1950,30715],[1951,31674],[1952,32664],[1953,33684],[1954,34736],[1955,35821],[1956,36940],[1957,38094],[1958,39284],[1959,40511],[1960,41777],[1961,43081],[1962,44427],[1963,45815],[1964,47246],[1965,48722],[1966,50244],[1967,51813],[1968,53432],[1969,55101],[1970,56822],[1971,58597],[1972,60427],[1973,62731],[1974,64241],[1975,66222],[1976,68263],[1977,70368],[1978,72538],[1979,74774],[1980,77080],[1981,79581],[1982,82188],[1983,84942],[1984,87784],[1985,90631],[1986,94151],[1987,97727],[1988,101343],[1989,104976],[1990,108600],[1991,111689],[1992,114694],[1993,117588],[1994,105444],[1995,105988],[1996,106479],[1997,106911],[1998,107264],[1999,107534],[2000,107754],[2001,107940],[2002,108071],[2003,108143],[2004,108155],[2005,108105],[2006,108004],[2007,107862],[2008,107673]],"lifeExpectancy":[[1950,53.78],[1951,53.98],[1952,54.38],[1953,54.78],[1954,55.18],[1955,55.58],[1956,55.98],[1957,56.38],[1958,56.78],[1959,57.18],[1960,57.58],[1961,57.98],[1962,58.38],[1963,58.78],[1964,59.18],[1965,59.58],[1966,59.98],[1967,60.39],[1968,60.8],[1969,61.21],[1970,61.63],[1971,62.07],[1972,62.52],[1973,62.97],[1974,63.42],[1975,63.84],[1976,64.22],[1977,64.55],[1978,64.82],[1979,65.02],[1980,65.17],[1981,65.28],[1982,65.37],[1983,65.45],[1984,65.54],[1985,65.64],[1986,65.75],[1987,65.87],[1988,65.98],[1989,66.1],[1990,66.21],[1991,66.33],[1992,66.44],[1993,66.55],[1994,66.67],[1995,66.78],[1996,66.88],[1997,66.99],[1998,67.08],[1999,67.18],[2000,67.29],[2001,67.4],[2002,67.53],[2003,67.68],[2004,67.85],[2005,68.03],[2006,68.22],[2007,68.42],[2008,68.61],[2009,68.81]]},{"name":"Mongolia","region":"East Asia & Pacific","income":[[1800,606.93],[1820,606.93],[1950,741.13],[1951,761.58],[1952,786.57],[1953,809.5],[1954,834.53],[1955,859.07],[1956,884.55],[1957,912.66],[1958,939.23],[1959,967.77],[1960,996.67],[1961,1026.27],[1962,1056.35],[1963,1089.39],[1964,1121.78],[1965,1155.34],[1966,1189.06],[1967,1226.04],[1968,1262.52],[1969,1299.6],[1970,1339.74],[1971,1380.61],[1972,1421.74],[1973,1464.19],[1974,1508.42],[1975,1553.03],[1976,1597.77],[1977,1647.51],[1978,1697],[1979,1748.19],[1980,1800],[1981,1897.49],[1982,2000.6],[1983,2059.48],[1984,2122.47],[1985,2182.38],[1986,2322.07],[1987,2338.01],[1988,2391.14],[1989,2389.38],[1990,2268.6],[1991,2011.76],[1992,1785.4],[1993,1705.62],[1994,1723.84],[1995,1814.11],[1996,1841.2],[1997,1902.25],[1998,1958.2],[1999,2009.38],[2000,2017.51],[2001,2061.51],[2002,2140.74],[2003,2269.92],[2004,2487.43],[2005,2643],[2006,2834.89],[2007,3081.2],[2008,3306.55],[2009,3205.17]],"population":[[1800,619000],[1820,619000],[1870,668000],[1913,725000],[1950,778555],[1951,788937],[1952,800663],[1953,813728],[1954,828075],[1955,844046],[1956,862063],[1957,882134],[1958,904296],[1959,928632],[1960,954652],[1961,981849],[1962,1010280],[1963,1031200],[1964,1060600],[1965,1090200],[1966,1119400],[1967,1149500],[1968,1181000],[1969,1214100],[1970,1247600],[1971,1283400],[1972,1320500],[1973,1360100],[1974,1402600],[1975,1445600],[1976,1487150],[1977,1528000],[1978,1571700],[1979,1617200],[1980,1662380],[1981,1708832],[1982,1756032],[1983,1805004],[1984,1855693],[1985,1907701],[1986,1960796],[1987,2015133],[1988,2070723],[1989,2159157],[1990,2216340],[1991,2268325],[1992,2312802],[1993,2349132],[1994,2383109],[1995,2420663],[1996,2458561],[1997,2494803],[1998,2530501],[1999,2565596],[2000,2600835],[2001,2637069],[2002,2674234],[2003,2712315],[2004,2751314],[2005,2791272],[2006,2832224],[2007,2874127],[2008,2916865]],"lifeExpectancy":[[1800,31.8],[1945,31.8],[1950,41.04],[1951,41.34],[1952,41.94],[1953,42.55],[1954,43.15],[1955,43.75],[1956,44.35],[1957,44.95],[1958,45.55],[1959,46.15],[1960,46.75],[1961,47.36],[1962,47.97],[1963,48.58],[1964,49.19],[1965,49.79],[1966,50.39],[1967,50.98],[1968,51.54],[1969,52.09],[1970,52.6],[1971,53.08],[1972,53.52],[1973,53.93],[1974,54.31],[1975,54.66],[1976,55],[1977,55.34],[1978,55.68],[1979,56.04],[1980,56.42],[1981,56.86],[1982,57.34],[1983,57.85],[1984,58.39],[1985,58.93],[1986,59.43],[1987,59.86],[1988,60.23],[1989,60.53],[1990,60.78],[1991,61.03],[1992,61.31],[1993,61.64],[1994,62.03],[1995,62.45],[1996,62.89],[1997,63.29],[1998,63.64],[1999,63.94],[2000,64.19],[2001,64.41],[2002,64.64],[2003,64.89],[2004,65.18],[2005,65.5],[2006,65.85],[2007,66.21],[2008,66.58],[2009,66.93]]},{"name":"Myanmar","region":"East Asia & Pacific","income":[[1800,569.07],[1820,569.07],[1821,569.07],[1822,569.07],[1823,569.07],[1824,569.07],[1825,569.07],[1826,569.07],[1827,569.07],[1828,569.07],[1829,569.07],[1830,569.07],[1831,569.07],[1832,569.07],[1833,569.07],[1834,569.07],[1835,569.07],[1836,569.07],[1837,569.07],[1838,569.07],[1839,569.07],[1840,569.07],[1841,569.07],[1842,569.07],[1843,569.07],[1844,569.07],[1845,569.07],[1846,569.07],[1847,569.07],[1848,569.07],[1849,569.07],[1850,569.07],[1851,569.07],[1852,569.07],[1853,569.07],[1854,569.07],[1855,569.07],[1856,569.07],[1857,569.07],[1858,569.07],[1859,569.07],[1860,569.07],[1861,569.07],[1862,569.07],[1863,569.07],[1864,569.07],[1865,569.07],[1866,569.07],[1867,569.07],[1868,569.07],[1869,569.07],[1870,569.07],[1871,575.11],[1872,581.21],[1873,587.37],[1874,593.6],[1875,599.9],[1876,606.26],[1877,612.69],[1878,619.18],[1879,625.75],[1880,632.39],[1881,639.09],[1882,645.87],[1883,652.72],[1884,659.64],[1885,666.64],[1886,673.71],[1887,680.85],[1888,688.07],[1889,695.37],[1890,702.74],[1891,710.2],[1892,717.73],[1893,725.34],[1894,733.03],[1895,740.8],[1896,748.66],[1897,756.6],[1898,764.62],[1899,772.73],[1900,780.93],[1901,789.21],[1902,756.71],[1903,725.54],[1904,695.66],[1905,667.01],[1906,639.54],[1907,648.35],[1908,657.29],[1909,666.35],[1910,675.53],[1911,684.84],[1912,729.23],[1913,773.61],[1914,822.21],[1915,873.85],[1916,928.74],[1917,902.04],[1918,876.1],[1919,850.9],[1920,826.43],[1921,802.67],[1922,824.63],[1923,847.19],[1924,870.37],[1925,894.19],[1926,918.65],[1927,937.88],[1928,957.51],[1929,977.55],[1930,998],[1931,1018.89],[1932,1003.98],[1933,989.28],[1934,974.8],[1935,960.54],[1936,946.48],[1937,889.09],[1938,835.19],[1939,792.94],[1940,752.82],[1941,714.74],[1942,602.94],[1943,508.63],[1944,429.07],[1945,430.2],[1946,433.47],[1947,436.76],[1948,440.07],[1949,443.42],[1950,446.78],[1951,504.07],[1952,507.32],[1953,512.73],[1954,473.51],[1955,526.86],[1956,552.87],[1957,576.11],[1958,551.27],[1959,626.29],[1960,636.33],[1961,640.73],[1962,684.61],[1963,691.68],[1964,691.54],[1965,696.34],[1966,655.15],[1967,661.14],[1968,691.49],[1969,706.5],[1970,724.44],[1971,733.81],[1972,725.05],[1973,708.8],[1974,732.19],[1975,749.09],[1976,780.88],[1977,813.38],[1978,853.53],[1979,878.84],[1980,935.13],[1981,970.19],[1982,1003.82],[1983,1027.35],[1984,1057.16],[1985,1067.1],[1986,1037.22],[1987,979.04],[1988,854.94],[1989,874.49],[1990,887.18],[1991,870.36],[1992,891.72],[1993,904.21],[1994,919.55],[1995,933.8],[1996,947.26],[1997,959.32],[1998,971.75],[1999,998.69],[2000,1034.45],[2001,1064.53],[2002,1097.67],[2003,1137.58],[2004,1175.12],[2005,1169.24],[2006,1154.04],[2007,1214.05],[2008,1255.33],[2009,1269.14]],"population":[[1800,3506000],[1820,3506000],[1850,3932000],[1870,4245000],[1890,7489000],[1900,10174000],[1901,10490000],[1902,10642000],[1903,10796000],[1904,10953000],[1905,11112000],[1906,11273000],[1907,11437000],[1908,11603000],[1909,11771000],[1910,11942000],[1911,12115000],[1912,12220000],[1913,12326000],[1914,12433000],[1915,12541000],[1916,12650000],[1917,12760000],[1918,12871000],[1919,12893000],[1920,13096000],[1921,13212000],[1922,13351000],[1923,13491000],[1924,13633000],[1925,13776000],[1926,13921000],[1927,14067000],[1928,14215000],[1929,14364000],[1930,14515000],[1931,14667000],[1932,14870000],[1933,15075000],[1934,15283000],[1935,15494000],[1936,15708000],[1937,15925000],[1938,16145000],[1939,16368000],[1940,16594000],[1941,16824000],[1942,16727000],[1943,16908000],[1944,17090000],[1945,17272000],[1946,17454000],[1947,17636000],[1948,17818000],[1949,18000000],[1950,19487657],[1951,19788012],[1952,20092996],[1953,20402681],[1954,20721139],[1955,21048631],[1956,21385445],[1957,21731844],[1958,22088118],[1959,22456123],[1960,22836232],[1961,23228868],[1962,23634436],[1963,24053395],[1964,24485982],[1965,24932663],[1966,25393924],[1967,25870271],[1968,26362230],[1969,26867423],[1970,27386228],[1971,27919082],[1972,28466390],[1973,29226657],[1974,29799458],[1975,30360478],[1976,30936848],[1977,31528087],[1978,32053297],[1979,32664235],[1980,33373316],[1981,34019441],[1982,34680442],[1983,35364794],[1984,36060228],[1985,36740515],[1986,37397074],[1987,38028578],[1988,38603755],[1989,39132189],[1990,39655394],[1991,40155099],[1992,40546538],[1993,40983821],[1994,41577366],[1995,42173781],[1996,42728314],[1997,43247867],[1998,43749992],[1999,44234615],[2000,44702243],[2001,45152531],[2002,45598081],[2003,46030343],[2004,46520134],[2005,46996558],[2006,47382633],[2007,47761980],[2008,48133102]],"lifeExpectancy":[[1800,30.8],[1926,30.8],[1941,30.8],[1942,28],[1943,28.5],[1944,28.1],[1945,28],[1948,30.8],[1950,33.43],[1951,34.23],[1952,35.76],[1953,37.16],[1954,38.43],[1955,39.57],[1956,40.59],[1957,41.49],[1958,42.29],[1959,43.02],[1960,43.69],[1961,44.35],[1962,45.03],[1963,45.74],[1964,46.5],[1965,47.32],[1966,48.17],[1967,49.03],[1968,49.87],[1969,50.69],[1970,51.46],[1971,52.2],[1972,52.91],[1973,53.6],[1974,54.26],[1975,54.88],[1976,55.48],[1977,56.04],[1978,56.57],[1979,57.05],[1980,57.48],[1981,57.84],[1982,58.12],[1983,58.32],[1984,58.46],[1985,58.55],[1986,58.61],[1987,58.65],[1988,58.71],[1989,58.79],[1990,58.88],[1991,58.99],[1992,59.1],[1993,59.19],[1994,59.28],[1995,59.37],[1996,59.46],[1997,59.56],[1998,59.67],[1999,59.8],[2000,59.94],[2001,60.08],[2002,60.2],[2003,60.31],[2004,60.43],[2005,60.59],[2006,60.83],[2007,61.16],[2008,61.6],[2009,62.14]]},{"name":"New Caledonia","region":"East Asia & Pacific","income":[[1800,944.24],[1820,944.24],[1913,1276.53],[1938,4910.2],[1950,9374.16],[1965,21036.53],[1966,19726.05],[1967,20213.73],[1968,22370.06],[1969,24974.42],[1970,31456.12],[1971,32333.81],[1972,32001.31],[1973,27196.04],[1974,29441.36],[1975,30307.07],[1976,30164.32],[1977,30062.78],[1978,32409.54],[1979,27531.77],[1980,26965.06],[1981,24658.06],[1982,24831.15],[1983,23929.05],[1984,23947.91],[1985,24596.34],[1986,23927.7],[1987,24837.87],[1988,32806.33],[1989,35684.01],[1990,36179.11],[1991,37085.95],[1992,36383.17],[1993,35674.86],[1994,35704.58],[1995,36928.13],[1996,36242.51],[1997,36147.49],[1998,34242.72],[1999,33846.34],[2000,33884.5],[2001,33412.18],[2002,32977.87],[2003,32475.12],[2004,32205.65],[2005,31942.83],[2006,31596.57],[2007,31268.19],[2008,30959.74]],"population":[[1800,29432],[1820,29432],[1950,55069],[1951,56780],[1952,58615],[1953,60581],[1954,62689],[1955,64948],[1956,67369],[1957,69963],[1958,72745],[1959,75790],[1960,78804],[1961,81774],[1962,84518],[1963,86978],[1964,88066],[1965,90360],[1966,93462],[1967,96094],[1968,99500],[1969,104000],[1970,112000],[1971,120000],[1972,125500],[1973,128500],[1974,131000],[1975,133000],[1976,134500],[1977,136000],[1978,137500],[1979,138800],[1980,139400],[1981,142500],[1982,145000],[1983,146584],[1984,149659],[1985,152591],[1986,155582],[1987,158737],[1988,161885],[1989,165003],[1990,168361],[1991,171988],[1992,175612],[1993,179152],[1994,182543],[1995,185833],[1996,189104],[1997,192347],[1998,195554],[1999,198714],[2000,201816],[2001,204863],[2002,207858],[2003,210798],[2004,213679],[2005,216494],[2006,219246],[2007,221943],[2008,224585]],"lifeExpectancy":[[1950,51.93],[1951,51.67],[1952,51.27],[1953,51.09],[1954,51.14],[1955,51.41],[1956,51.9],[1957,52.58],[1958,53.43],[1959,54.41],[1960,55.44],[1961,56.48],[1962,57.45],[1963,58.29],[1964,58.98],[1965,59.49],[1966,59.83],[1967,60.04],[1968,60.2],[1969,60.33],[1970,60.51],[1971,60.8],[1972,61.23],[1973,61.81],[1974,62.53],[1975,63.36],[1976,64.25],[1977,65.13],[1978,65.94],[1979,66.66],[1980,67.26],[1981,67.77],[1982,68.19],[1983,68.58],[1984,68.93],[1985,69.26],[1986,69.57],[1987,69.88],[1988,70.17],[1989,70.47],[1990,70.76],[1991,71.04],[1992,71.3],[1993,71.55],[1994,71.79],[1995,72.04],[1996,72.33],[1997,72.66],[1998,73.05],[1999,73.47],[2000,73.92],[2001,74.37],[2002,74.78],[2003,75.14],[2004,75.44],[2005,75.68],[2006,75.87],[2007,76.04],[2008,76.2],[2009,76.36]]},{"name":"New Zealand","region":"East Asia & Pacific","income":[[1800,541.62],[1820,541.62],[1830,541.62],[1840,541.62],[1850,1549.64],[1860,2995.32],[1870,4197.09],[1871,4272.02],[1872,4770.04],[1873,5187.36],[1874,5204.29],[1875,4993.57],[1876,4905.88],[1877,5392.46],[1878,5782.83],[1879,4832.93],[1880,5072.99],[1881,5097.49],[1882,4936.43],[1883,4732.12],[1884,5013.44],[1885,4857.29],[1886,4876.72],[1887,4880.12],[1888,4812.45],[1889,5011.68],[1890,5085.11],[1891,5052.04],[1892,5146.24],[1893,5129.69],[1894,4846.28],[1895,4930.96],[1896,5399.9],[1897,5348.29],[1898,5396.03],[1899,5471.55],[1900,5819.9],[1901,5718.83],[1902,6009.94],[1903,6401.25],[1904,6188.58],[1905,6567.15],[1906,6983.76],[1907,7229.98],[1908,6546.72],[1909,6459.44],[1910,7198.55],[1911,7438.95],[1912,7053.59],[1913,6976.62],[1914,7026.5],[1915,7005.58],[1916,6933.16],[1917,6781.35],[1918,6649.54],[1919,7153.07],[1920,7638.54],[1921,6943.69],[1922,6555.15],[1923,6965.89],[1924,6963.81],[1925,7165.07],[1926,6641.4],[1927,6340.65],[1928,6961.01],[1929,7125.34],[1930,6716.25],[1931,6059.54],[1932,5859.29],[1933,6196.13],[1934,6455.89],[1935,6715.24],[1936,7907.39],[1937,8261.82],[1938,8750.12],[1939,8746.7],[1940,8531.12],[1941,8298.68],[1942,9155.48],[1943,9380.86],[1944,9299.61],[1945,9381.26],[1946,9696.82],[1947,10624.33],[1948,9382.22],[1949,10183.21],[1950,11449.38],[1951,10362.99],[1952,10556.58],[1953,10637.22],[1954,11839],[1955,11814.68],[1956,12186.7],[1957,12247.4],[1958,12437.62],[1959,13039.68],[1960,12816.33],[1961,13195.1],[1962,13175.68],[1963,13719.26],[1964,14107.05],[1965,14730.25],[1966,15384.75],[1967,14463.92],[1968,14279.12],[1969,15586.76],[1970,15150.93],[1971,15674.74],[1972,16046.04],[1973,16823.02],[1974,17439.2],[1975,16910.21],[1976,17126.42],[1977,16233.72],[1978,16294.54],[1979,16633.44],[1980,16718.1],[1981,17445.44],[1982,17632.41],[1983,17919.54],[1984,18612.88],[1985,18647.68],[1986,18979.55],[1987,19007.19],[1988,18874.65],[1989,18983.92],[1990,18833.6],[1991,18380.78],[1992,18363.32],[1993,19337.19],[1994,20116.23],[1995,20661.48],[1996,21064.07],[1997,21050.41],[1998,20876.11],[1999,21689.01],[2000,21895.16],[2001,22426.59],[2002,23189.8],[2003,23728.48],[2004,24339.44],[2005,24554],[2006,24504.21],[2007,24926.5],[2008,24656.53],[2009,24009.46]],"population":[[1820,100000],[1830,100000],[1840,70000],[1850,90000],[1860,132000],[1870,291000],[1871,306000],[1872,320000],[1873,335000],[1874,367000],[1875,406000],[1876,434000],[1877,450000],[1878,467000],[1879,494000],[1880,520000],[1881,539000],[1882,555000],[1883,574000],[1884,598000],[1885,614000],[1886,626000],[1887,640000],[1888,649000],[1889,656000],[1890,665000],[1891,674000],[1892,686000],[1893,705000],[1894,722000],[1895,735000],[1896,748000],[1897,764000],[1898,779000],[1899,794000],[1900,807000],[1901,824000],[1902,844000],[1903,867000],[1904,893000],[1905,919000],[1906,946000],[1907,969000],[1908,996000],[1909,1024000],[1910,1045000],[1911,1067000],[1912,1092000],[1913,1122000],[1914,1143000],[1915,1152000],[1916,1155000],[1917,1152000],[1918,1156000],[1919,1195000],[1920,1241000],[1921,1275000],[1922,1304000],[1923,1326000],[1924,1350000],[1925,1382000],[1926,1412000],[1927,1437000],[1928,1454000],[1929,1471000],[1930,1493000],[1931,1514000],[1932,1527000],[1933,1540000],[1934,1552000],[1935,1562000],[1936,1573000],[1937,1587000],[1938,1604000],[1939,1627000],[1940,1636000],[1941,1629000],[1942,1639000],[1943,1633000],[1944,1654000],[1945,1688000],[1946,1759000],[1947,1797000],[1948,1833000],[1949,1871000],[1950,1908310],[1951,1947389],[1952,1994794],[1953,2047391],[1954,2092779],[1955,2136168],[1956,2178289],[1957,2229407],[1958,2281533],[1959,2331122],[1960,2371746],[1961,2432450],[1962,2488550],[1963,2541350],[1964,2591950],[1965,2640400],[1966,2687550],[1967,2728150],[1968,2759000],[1969,2788500],[1970,2828050],[1971,2875300],[1972,2929100],[1973,2992300],[1974,3058400],[1975,3117800],[1976,3153550],[1977,3164900],[1978,3165800],[1979,3164550],[1980,3170150],[1981,3185450],[1982,3210650],[1983,3245800],[1984,3278900],[1985,3298050],[1986,3308300],[1987,3317166],[1988,3331205],[1989,3341632],[1990,3359604],[1991,3396964],[1992,3437674],[1993,3475061],[1994,3517261],[1995,3565990],[1996,3621200],[1997,3676187],[1998,3726214],[1999,3774096],[2000,3819762],[2001,3864129],[2002,3908037],[2003,3951307],[2004,3993817],[2005,4035461],[2006,4076140],[2007,4115771],[2008,4154311]],"lifeExpectancy":[[1800,34.05],[1870,34.05],[1948,68.86],[1949,68.98],[1950,69.29],[1951,69.16],[1952,69.39],[1953,70.24],[1954,70.35],[1955,70.48],[1956,70.74],[1957,70.26],[1958,70.89],[1959,70.8],[1960,71.26],[1961,70.98],[1962,71.24],[1963,71.31],[1964,71.35],[1965,71.28],[1966,71.14],[1967,71.52],[1968,71.18],[1969,71.55],[1970,71.33],[1971,71.78],[1972,71.89],[1973,71.75],[1974,72],[1975,72.27],[1976,72.47],[1977,72.22],[1978,73.11],[1979,73.15],[1980,72.95],[1981,73.74],[1982,73.84],[1983,73.94],[1984,74.49],[1985,73.99],[1986,74.24],[1987,74.32],[1988,74.6],[1989,75.01],[1990,75.56],[1991,76.2],[1992,76.33],[1993,76.62],[1994,77.07],[1995,76.94],[1996,76.98],[1997,77.55],[1998,78.37],[1999,78.14],[2000,78.9],[2001,78.91],[2002,79.11],[2003,79.41],[2004,79.59],[2005,79.8],[2006,79.98],[2007,80.15],[2008,80.3],[2009,80.45]]},{"name":"Papua New Guinea","region":"East Asia & Pacific","income":[[1800,573.29],[1820,573.29],[1913,775.03],[1950,969.62],[1960,1120.04],[1961,1168.28],[1962,1220],[1963,1245.62],[1964,1325.88],[1965,1432.52],[1966,1484.36],[1967,1511.98],[1968,1543.68],[1969,1634.49],[1970,1771.1],[1971,1839.66],[1972,1898.54],[1973,1975.71],[1974,1981.1],[1975,1919.99],[1976,1814.91],[1977,1791.43],[1978,1903.45],[1979,1895.94],[1980,1809.71],[1981,1761.06],[1982,1722.78],[1983,1732.49],[1984,1681.73],[1985,1704.24],[1986,1739.11],[1987,1742.45],[1988,1748.27],[1989,1680.15],[1990,1588.26],[1991,1695.54],[1992,1880.96],[1993,2166.06],[1994,2235.06],[1995,2104.19],[1996,2206.73],[1997,2064.01],[1998,1933.43],[1999,1917.62],[2000,1821.68],[2001,1773.67],[2002,1727.29],[2003,1722.49],[2004,1728.51],[2005,1747],[2006,1745.9],[2007,1828.01],[2008,1905.5],[2009,1947.16]],"population":[[1800,754894],[1820,754894],[1950,1412466],[1951,1438163],[1952,1465469],[1953,1494506],[1954,1525366],[1955,1557902],[1956,1591955],[1957,1627752],[1958,1665511],[1959,1705225],[1960,1746986],[1961,1791048],[1962,1837378],[1963,1885929],[1964,1936607],[1965,1989516],[1966,2045085],[1967,2102625],[1968,2161618],[1969,2223233],[1970,2288056],[1971,2353081],[1972,2416549],[1973,2476980],[1974,2540118],[1975,2609796],[1976,2680390],[1977,2753462],[1978,2830006],[1979,2908571],[1980,2991217],[1981,3064312],[1982,3139596],[1983,3216925],[1984,3296419],[1985,3378233],[1986,3462394],[1987,3548932],[1988,3638032],[1989,3729905],[1990,3824787],[1991,3922925],[1992,4024135],[1993,4128174],[1994,4235157],[1995,4344820],[1996,4456781],[1997,4571004],[1998,4687521],[1999,4806270],[2000,4926984],[2001,5049055],[2002,5172033],[2003,5295816],[2004,5420280],[2005,5545268],[2006,5670544],[2007,5795887],[2008,5921144]],"lifeExpectancy":[[1800,31.5],[1946,31.5],[1950,33.67],[1951,33.92],[1952,34.42],[1953,34.93],[1954,35.43],[1955,35.93],[1956,36.44],[1957,36.94],[1958,37.44],[1959,37.94],[1960,38.44],[1961,38.94],[1962,39.44],[1963,39.94],[1964,40.44],[1965,40.94],[1966,41.41],[1967,41.87],[1968,42.33],[1969,42.79],[1970,43.29],[1971,43.85],[1972,44.5],[1973,45.23],[1974,46.05],[1975,46.92],[1976,47.84],[1977,48.75],[1978,49.63],[1979,50.43],[1980,51.13],[1981,51.71],[1982,52.18],[1983,52.55],[1984,52.82],[1985,53.05],[1986,53.24],[1987,53.45],[1988,53.69],[1989,53.97],[1990,54.3],[1991,54.64],[1992,54.97],[1993,55.28],[1994,55.57],[1995,55.85],[1996,56.15],[1997,56.48],[1998,56.85],[1999,57.28],[2000,57.74],[2001,58.23],[2002,58.71],[2003,59.16],[2004,59.59],[2005,59.98],[2006,60.33],[2007,60.66],[2008,60.98],[2009,61.29]]},{"name":"Philippines","region":"East Asia & Pacific","income":[[1800,626.97],[1820,626.97],[1870,669.73],[1902,722.13],[1903,862.59],[1904,728.86],[1905,760.94],[1906,775.46],[1907,801.87],[1908,831.78],[1909,831.4],[1910,938.44],[1911,979.62],[1912,978.25],[1913,1060.58],[1914,1021.54],[1915,939.39],[1916,1076.52],[1917,1231.94],[1918,1380.03],[1919,1301.39],[1920,1383.74],[1921,1326.03],[1922,1456.87],[1923,1341.59],[1924,1436.65],[1925,1420.6],[1926,1463.7],[1927,1466.19],[1928,1494],[1929,1516.23],[1930,1483.09],[1931,1460],[1932,1489.42],[1933,1468.54],[1934,1447.15],[1935,1317.45],[1936,1463.72],[1937,1532.46],[1938,1545.88],[1939,1619.02],[1940,1617.56],[1946,693.54],[1947,939.28],[1948,1065.52],[1949,1099.86],[1950,1148.81],[1951,1235.02],[1952,1272.88],[1953,1345.68],[1954,1404.09],[1955,1457.13],[1956,1513.28],[1957,1547.94],[1958,1554.15],[1959,1610.86],[1960,1584.52],[1961,1623.38],[1962,1649.55],[1963,1712.47],[1964,1717.62],[1965,1753.01],[1966,1775.28],[1967,1814.13],[1968,1848.05],[1969,1878.29],[1970,1893.6],[1971,1940.38],[1972,1989.37],[1973,2107.62],[1974,2123.74],[1975,2182.52],[1976,2310.26],[1977,2373.2],[1978,2427.5],[1979,2493.71],[1980,2549.91],[1981,2573.77],[1982,2603.27],[1983,2592.63],[1984,2348.4],[1985,2126.48],[1986,2148.12],[1987,2189.63],[1988,2285.43],[1989,2372],[1990,2386.91],[1991,2319.94],[1992,2279.32],[1993,2279.47],[1994,2328.83],[1995,2383.69],[1996,2464.68],[1997,2536.53],[1998,2469.84],[1999,2502.92],[2000,2598.89],[2001,2591.32],[2002,2650.92],[2003,2727.42],[2004,2847.41],[2005,2932],[2006,3027.82],[2007,3178.78],[2008,3236.92],[2009,3203.97]],"population":[[1800,2176000],[1820,2176000],[1850,3612000],[1870,5063000],[1890,6476000],[1900,7324000],[1901,7465000],[1902,7609000],[1903,7755000],[1904,7904000],[1905,8056000],[1906,8211000],[1907,8369000],[1908,8530000],[1909,8694000],[1910,8861000],[1911,9032000],[1912,9206000],[1913,9384000],[1914,9565000],[1915,9749000],[1916,9937000],[1917,10128000],[1918,10323000],[1919,10522000],[1920,10725000],[1921,10932000],[1922,11143000],[1923,11358000],[1924,11577000],[1925,11800000],[1926,12026000],[1927,12305000],[1928,12543000],[1929,12890000],[1930,13194000],[1931,13507000],[1932,13829000],[1933,14158000],[1934,14497000],[1935,14843000],[1936,15199000],[1937,15563000],[1938,15934000],[1939,16275000],[1940,16585000],[1941,16902000],[1942,17169000],[1943,17552000],[1944,17887000],[1945,18228000],[1946,18775000],[1947,19338000],[1948,19918000],[1949,20516000],[1950,21131264],[1951,21775167],[1952,22438691],[1953,23122432],[1954,23827009],[1955,24553055],[1956,25301226],[1957,26072194],[1958,26866654],[1959,27685324],[1960,28528939],[1961,29410457],[1962,30325264],[1963,31273198],[1964,32254350],[1965,33267569],[1966,34304274],[1967,35356600],[1968,36424438],[1969,37506719],[1970,38603696],[1971,39718094],[1972,40850141],[1973,41998117],[1974,43162098],[1975,44336842],[1976,45574350],[1977,46850962],[1978,48171780],[1979,49537371],[1980,50940182],[1981,52195262],[1982,53456774],[1983,54697515],[1984,55963794],[1985,57288037],[1986,58648857],[1987,60017788],[1988,61384736],[1989,62814469],[1990,64318120],[1991,65788832],[1992,67185766],[1993,68610958],[1994,70111842],[1995,71717437],[1996,73386057],[1997,75012988],[1998,76576177],[1999,78133918],[2000,79739825],[2001,81369751],[2002,82995088],[2003,84619974],[2004,86241697],[2005,87857473],[2006,89468677],[2007,91077287],[2008,92681453]],"lifeExpectancy":[[1800,30.9],[1901,30.9],[1902,12.7],[1903,30.9],[1917,30.9],[1918,25.6],[1919,30.9],[1930,30.9],[1938,40],[1941,42],[1942,41.9],[1943,42],[1944,41.9],[1945,40.5],[1946,41],[1950,46.36],[1951,46.71],[1952,47.41],[1953,48.12],[1954,48.84],[1955,49.58],[1956,50.32],[1957,51.07],[1958,51.81],[1959,52.54],[1960,53.23],[1961,53.87],[1962,54.45],[1963,54.95],[1964,55.38],[1965,55.74],[1966,56.06],[1967,56.35],[1968,56.64],[1969,56.93],[1970,57.24],[1971,57.58],[1972,57.94],[1973,58.31],[1974,58.69],[1975,59.08],[1976,59.49],[1977,59.9],[1978,60.31],[1979,60.72],[1980,61.13],[1981,61.54],[1982,61.95],[1983,62.36],[1984,62.77],[1985,63.19],[1986,63.62],[1987,64.06],[1988,64.51],[1989,64.96],[1990,65.43],[1991,65.88],[1992,66.34],[1993,66.78],[1994,67.2],[1995,67.61],[1996,68],[1997,68.39],[1998,68.77],[1999,69.14],[2000,69.49],[2001,69.84],[2002,70.17],[2003,70.48],[2004,70.78],[2005,71.07],[2006,71.34],[2007,71.6],[2008,71.85],[2009,72.1]]},{"name":"Samoa","region":"East Asia & Pacific","income":[[1800,1308.44],[1820,1308.44],[1913,1768.9],[1973,3667.7],[1974,3247.05],[1975,3098.02],[1976,3360.96],[1977,3311.52],[1978,3496.44],[1979,3938.62],[1980,3684.4],[1981,3343.02],[1982,3301.91],[1983,3310.12],[1984,3345.52],[1985,3466.03],[1986,3642.49],[1987,3642.57],[1988,3569.52],[1989,3678.48],[1990,3491.92],[1991,3387.06],[1992,3354.37],[1993,3463.17],[1994,3344.81],[1995,3529.46],[1996,3746.22],[1997,3734.02],[1998,3780.31],[1999,3854.83],[2000,4090.83],[2001,4386.17],[2002,4435.87],[2003,4545.09],[2004,4667.13],[2005,4872],[2006,4963.4],[2007,5052.76],[2008,5281.41],[2009,5003.61]],"population":[[1800,47300],[1850,46899],[1900,33000],[1906,37000],[1911,38000],[1921,36000],[1926,40000],[1936,56000],[1945,68000],[1950,81858],[1951,84351],[1952,86746],[1953,89031],[1954,91357],[1955,93857],[1956,96619],[1957,99661],[1958,102902],[1959,106412],[1960,110043],[1961,113621],[1962,117081],[1963,120526],[1964,123874],[1965,127151],[1966,130240],[1967,133162],[1968,136151],[1969,139206],[1970,142331],[1971,145356],[1972,148489],[1973,149436],[1974,149966],[1975,150839],[1976,151200],[1977,152748],[1978,153529],[1979,154339],[1980,155177],[1981,156046],[1982,158084],[1983,160155],[1984,162265],[1985,164417],[1986,165746],[1987,166575],[1988,166509],[1989,167389],[1990,170477],[1991,172553],[1992,174011],[1993,177551],[1994,181436],[1995,181623],[1996,180516],[1997,180418],[1998,180177],[1999,179843],[2000,179466],[2001,179058],[2002,178631],[2003,178173],[2004,177714],[2005,177287],[2006,176908],[2007,176615],[2008,176418]],"lifeExpectancy":[[1950,44.9],[1951,45.15],[1952,45.67],[1953,46.18],[1954,46.7],[1955,47.21],[1956,47.73],[1957,48.24],[1958,48.75],[1959,49.27],[1960,49.78],[1961,50.29],[1962,50.8],[1963,51.31],[1964,51.83],[1965,52.34],[1966,52.84],[1967,53.35],[1968,53.86],[1969,54.37],[1970,54.88],[1971,55.38],[1972,55.89],[1973,56.4],[1974,56.9],[1975,57.4],[1976,57.91],[1977,58.41],[1978,58.91],[1979,59.41],[1980,59.92],[1981,60.42],[1982,60.92],[1983,61.42],[1984,61.92],[1985,62.42],[1986,62.92],[1987,63.41],[1988,63.91],[1989,64.4],[1990,64.89],[1991,65.38],[1992,65.86],[1993,66.35],[1994,66.83],[1995,67.3],[1996,67.74],[1997,68.17],[1998,68.56],[1999,68.93],[2000,69.28],[2001,69.6],[2002,69.91],[2003,70.21],[2004,70.51],[2005,70.81],[2006,71.1],[2007,71.38],[2008,71.65],[2009,71.92]]},{"name":"Singapore","region":"East Asia & Pacific","income":[[1800,861.82],[1820,861.82],[1870,955.91],[1900,2181.19],[1901,2402.4],[1902,2270.96],[1903,1953.69],[1904,1888.04],[1905,2090],[1906,2349.06],[1907,2141.77],[1908,2460.38],[1909,2487.7],[1910,2702.41],[1911,2420.61],[1912,2070.75],[1913,1791.8],[1914,2141.85],[1915,2184.41],[1916,1805.95],[1917,2502.44],[1918,1956.12],[1919,2219.48],[1920,1911.46],[1921,2158.63],[1922,2851.87],[1923,2920.33],[1924,2856.89],[1925,3218.95],[1926,2656.8],[1927,1964.79],[1928,2334.94],[1929,3287.13],[1930,3016.41],[1931,2221.66],[1932,1933.51],[1933,2735.08],[1934,3226.93],[1935,3635.38],[1936,3611.6],[1937,3923.18],[1938,3326.45],[1939,3869.21],[1950,3533.04],[1951,3331.42],[1952,2315.14],[1953,2762.9],[1954,3166.36],[1955,2912.65],[1956,3204.49],[1957,2843.1],[1958,2849.15],[1959,3202.78],[1960,3426.03],[1961,3782.96],[1962,3674.74],[1963,3907.52],[1964,3827.09],[1965,4181.25],[1966,4527.16],[1967,4977.42],[1968,5566.63],[1969,6236.47],[1970,6993.76],[1971,7704.6],[1972,8597.76],[1973,9392.46],[1974,9803.18],[1975,9965.82],[1976,10537.03],[1977,11210.09],[1978,12025.08],[1979,13004.71],[1980,14103.68],[1981,14781.26],[1982,15169.16],[1983,16265.91],[1984,17312.22],[1985,17037.04],[1986,17417.21],[1987,18861.53],[1988,20542.93],[1989,21986.22],[1990,23142.8],[1991,23983.76],[1992,24769.89],[1993,27040.11],[1994,29303.24],[1995,30793.47],[1996,31934.8],[1997,33519.48],[1998,31918.24],[1999,33981.15],[2000,36834.85],[2001,34910.71],[2002,36023.11],[2003,37024.32],[2004,39796.67],[2005,41479],[2006,43689.11],[2007,45351.51],[2008,45196.46],[2009,43526.04]],"population":[[1800,30000],[1820,30000],[1850,56000],[1870,84000],[1890,157000],[1900,215000],[1913,323000],[1914,331000],[1915,341000],[1916,351000],[1917,360000],[1918,370000],[1919,380000],[1920,391000],[1921,418000],[1922,436000],[1923,458000],[1924,469000],[1925,492000],[1926,511000],[1927,532000],[1928,553000],[1929,575000],[1930,596000],[1931,563000],[1932,580000],[1933,515000],[1934,525000],[1935,572000],[1936,603000],[1937,651000],[1938,710000],[1939,728000],[1940,751000],[1941,769000],[1947,938000],[1948,961000],[1949,979000],[1950,1022100],[1951,1068100],[1952,1127000],[1953,1191800],[1954,1248200],[1955,1305500],[1956,1371600],[1957,1445929],[1958,1518800],[1959,1587200],[1960,1646400],[1961,1702400],[1962,1750200],[1963,1795000],[1964,1841600],[1965,1886900],[1966,1934400],[1967,1977600],[1968,2012000],[1969,2042500],[1970,2074507],[1971,2112900],[1972,2152400],[1973,2193000],[1974,2229800],[1975,2262600],[1976,2293300],[1977,2325300],[1978,2353600],[1979,2383500],[1980,2413900],[1981,2535368],[1982,2651869],[1983,2689263],[1984,2743297],[1985,2749897],[1986,2750069],[1987,2794552],[1988,2869266],[1989,2957752],[1990,3047100],[1991,3144576],[1992,3235865],[1993,3328154],[1994,3427979],[1995,3542866],[1996,3672284],[1997,3802309],[1998,3904528],[1999,3967753],[2000,4036753],[2001,4120228],[2002,4197776],[2003,4276788],[2004,4353893],[2005,4425720],[2006,4492150],[2007,4553009],[2008,4608167]],"lifeExpectancy":[[1800,29.1],[1819,29.1],[1824,34],[1920,34],[1950,59.25],[1951,59.54],[1952,60.11],[1953,60.69],[1954,61.25],[1955,61.81],[1956,62.37],[1957,62.92],[1958,63.47],[1959,64.01],[1960,64.54],[1961,65.06],[1962,65.56],[1963,66.05],[1964,66.51],[1965,66.95],[1966,67.37],[1967,67.76],[1968,68.13],[1969,68.48],[1970,68.8],[1971,69.11],[1972,69.4],[1973,69.68],[1974,69.95],[1975,70.2],[1976,70.44],[1977,70.66],[1978,70.86],[1979,71.05],[1980,71.24],[1981,71.44],[1982,71.66],[1983,71.92],[1984,72.21],[1985,72.55],[1986,72.94],[1987,73.39],[1988,73.87],[1989,74.37],[1990,74.87],[1991,75.34],[1992,75.77],[1993,76.13],[1994,76.43],[1995,76.69],[1996,76.91],[1997,77.13],[1998,77.37],[1999,77.64],[2000,77.93],[2001,78.26],[2002,78.61],[2003,78.96],[2004,79.3],[2005,79.63],[2006,79.92],[2007,80.18],[2008,80.4],[2009,80.58]]},{"name":"Solomon Islands","region":"East Asia & Pacific","income":[[1800,387.81],[1820,387.81],[1913,530.57],[1967,1304.6],[1968,1324.79],[1969,1245.96],[1970,1266.6],[1971,1251.52],[1972,864.97],[1973,929.95],[1974,1132.36],[1975,962.54],[1976,1057.78],[1977,1169.54],[1978,1231.07],[1979,1485.47],[1980,1348.15],[1981,1477.18],[1982,1467.4],[1983,1613.28],[1984,1579.09],[1985,1542.15],[1986,1792.38],[1987,1783.65],[1988,1797.15],[1989,1889.78],[1990,1870.13],[1991,1926.76],[1992,2109.89],[1993,2131.6],[1994,2261.81],[1995,2379.19],[1996,2350.19],[1997,2252.49],[1998,2230.07],[1999,2159.41],[2000,1802.02],[2001,1597.23],[2002,1530.5],[2003,1587.57],[2004,1671.75],[2005,1712],[2006,1780.28],[2007,1917.09],[2008,2001.01],[2009,1903.69]],"population":[[1800,56998],[1820,56998],[1931,94000],[1950,106647],[1951,107978],[1952,109424],[1953,110989],[1954,112677],[1955,114495],[1956,116446],[1957,118537],[1958,120775],[1959,123166],[1960,126363],[1961,129642],[1962,133007],[1963,136459],[1964,140000],[1965,143000],[1966,147000],[1967,151000],[1968,154000],[1969,158000],[1970,163000],[1971,168500],[1972,174500],[1973,180500],[1974,186500],[1975,193000],[1976,199500],[1977,207339],[1978,215444],[1979,223814],[1980,232452],[1981,241354],[1982,250516],[1983,259953],[1984,269681],[1985,279720],[1986,290061],[1987,300694],[1988,311637],[1989,322908],[1990,334524],[1991,346469],[1992,358713],[1993,371256],[1994,384099],[1995,397238],[1996,410641],[1997,424265],[1998,438082],[1999,452067],[2000,466194],[2001,480442],[2002,494786],[2003,509190],[2004,523617],[2005,538032],[2006,552438],[2007,566842],[2008,581208]],"lifeExpectancy":[[1800,25.7],[1944,25.7],[1950,44.37],[1951,44.62],[1952,45.13],[1953,45.64],[1954,46.15],[1955,46.65],[1956,47.16],[1957,47.66],[1958,48.17],[1959,48.67],[1960,49.17],[1961,49.68],[1962,50.18],[1963,50.68],[1964,51.19],[1965,51.7],[1966,52.2],[1967,52.71],[1968,53.22],[1969,53.73],[1970,54.24],[1971,54.77],[1972,55.31],[1973,55.85],[1974,56.39],[1975,56.91],[1976,57.41],[1977,57.87],[1978,58.27],[1979,58.58],[1980,58.77],[1981,58.77],[1982,58.56],[1983,58.19],[1984,57.69],[1985,57.15],[1986,56.66],[1987,56.33],[1988,56.21],[1989,56.32],[1990,56.66],[1991,57.16],[1992,57.76],[1993,58.38],[1994,58.97],[1995,59.53],[1996,60.06],[1997,60.57],[1998,61.09],[1999,61.62],[2000,62.15],[2001,62.69],[2002,63.23],[2003,63.77],[2004,64.3],[2005,64.81],[2006,65.31],[2007,65.79],[2008,66.24],[2009,66.66]]},{"name":"Taiwan","region":"East Asia & Pacific","income":[[1800,871],[1820,871],[1821,871],[1822,871],[1823,871],[1824,871],[1825,871],[1826,871],[1827,871],[1828,871],[1829,871],[1830,871],[1831,871],[1832,871],[1833,871],[1834,871],[1835,871],[1836,871],[1837,871],[1838,871],[1839,871],[1840,871],[1841,871],[1842,871],[1843,871],[1844,871],[1845,871],[1846,871],[1847,871],[1848,871],[1849,871],[1850,871],[1851,871],[1852,871],[1853,871],[1854,871],[1855,871],[1856,871],[1857,871],[1858,871],[1859,871],[1860,871],[1861,871],[1862,871],[1863,871],[1864,871],[1865,871],[1866,871],[1867,871],[1868,871],[1869,871],[1870,871],[1871,874],[1872,877],[1873,880],[1874,883],[1875,886],[1876,889],[1877,892],[1878,895],[1879,897],[1880,900],[1881,903],[1882,906],[1883,909],[1884,912],[1885,915],[1886,918],[1887,921],[1888,924],[1889,927],[1890,930],[1891,933],[1892,936],[1893,940],[1894,943],[1895,946],[1896,949],[1897,952],[1898,955],[1899,958],[1900,961],[1901,964],[1902,974],[1903,1151],[1904,1099],[1905,905],[1906,938],[1907,1066],[1908,1080],[1909,1218],[1910,1277],[1911,1131],[1912,1144],[1913,1177],[1914,1161],[1915,1176],[1916,1267],[1917,1400],[1918,1364],[1919,1356],[1920,1378],[1921,1442],[1922,1551],[1923,1611],[1924,1689],[1925,1753],[1926,1783],[1927,1732],[1928,1720],[1929,1807],[1930,1827],[1931,1821],[1932,1830],[1933,1783],[1934,1799],[1935,1944],[1936,1982],[1937,1931],[1938,1949],[1939,1849],[1940,1722],[1941,1598],[1942,1624],[1943,1456],[1944,1220],[1945,647],[1946,680],[1947,851],[1948,1052],[1949,1172],[1950,1304],[1951,1359],[1952,1468],[1953,1550],[1954,1638],[1955,1708],[1956,1737],[1957,1801],[1958,1859],[1959,1932],[1960,1984],[1961,2048],[1962,2137],[1963,2265],[1964,2465],[1965,2664],[1966,2821],[1967,3043],[1968,3244],[1969,3453],[1970,3757],[1971,4141],[1972,4590],[1973,5072],[1974,5025],[1975,5160],[1976,5754],[1977,6207],[1978,6909],[1979,7328],[1980,7672],[1981,7980],[1982,8086],[1983,8594],[1984,9353],[1985,9662],[1986,10624],[1987,11815],[1988,12588],[1989,13457],[1990,14123],[1991,14990],[1992,15965],[1993,16852],[1994,17866],[1995,18791],[1996,19754],[1997,20813],[1998,21493],[1999,22478],[2000,23525],[2001,22768],[2002,23495],[2003,24056],[2004,25332],[2005,26069],[2006,27359],[2007,28892],[2008,29004],[2009,28361]],"population":[[1800,2000000],[1820,2000000],[1850,2200000],[1870,2345000],[1890,2500000],[1900,2864000],[1901,2903000],[1902,2942000],[1903,2982000],[1904,3022000],[1905,3085000],[1906,3140000],[1907,3172000],[1908,3200000],[1909,3232000],[1910,3275000],[1911,3334000],[1912,3402000],[1913,3469000],[1914,3528000],[1915,3562000],[1916,3583000],[1917,3621000],[1918,3658000],[1919,3692000],[1920,3736000],[1921,3797000],[1922,3870000],[1923,3940000],[1924,4009000],[1925,4095000],[1926,4195000],[1927,4289000],[1928,4388000],[1929,4493000],[1930,4614000],[1931,4742000],[1932,4867000],[1933,4995000],[1934,5128000],[1935,5255000],[1936,5384000],[1937,5530000],[1938,5678000],[1939,5821000],[1940,5987000],[1941,6163000],[1942,6339000],[1943,6507000],[1944,6520000],[1945,6533000],[1946,6546000],[1947,6346000],[1948,6697000],[1949,7280000],[1950,7981454],[1951,8251326],[1952,8550362],[1953,8849962],[1954,9159966],[1955,9485858],[1956,9825346],[1957,10164215],[1958,10500314],[1959,10852996],[1960,11209160],[1961,11563348],[1962,11918938],[1963,12276610],[1964,12631480],[1965,12977635],[1966,13321002],[1967,13648692],[1968,13962358],[1969,14282297],[1970,14598316],[1971,14918496],[1972,15226039],[1973,15525588],[1974,15824103],[1975,16122188],[1976,16450056],[1977,16785196],[1978,17111535],[1979,17450136],[1980,17848320],[1981,18177430],[1982,18501390],[1983,18803390],[1984,19083348],[1985,19337363],[1986,19555581],[1987,19757799],[1988,19976096],[1989,20207541],[1990,20278957],[1991,20492997],[1992,20686918],[1993,20883467],[1994,21087873],[1995,21282829],[1996,21448723],[1997,21628605],[1998,21823024],[1999,21993460],[2000,22151237],[2001,22303700],[2002,22454239],[2003,22603000],[2004,22749838],[2005,22894384],[2006,23036087],[2007,23174294],[2008,23308370]],"lifeExpectancy":[[1800,28.3],[1906,28.3],[1907,29.5],[1908,30.9],[1909,31.8],[1910,33.9],[1911,33.9],[1912,34],[1913,33.3],[1914,31.9],[1915,28.5],[1916,30],[1917,31.4],[1918,26.1],[1919,31.2],[1920,27.6],[1921,30],[1922,36.6],[1923,35.3],[1924,37.1],[1925,34.2],[1926,37],[1927,39.6],[1928,40.3],[1929,40.9],[1930,41.5],[1931,41.2],[1932,41.3],[1933,42],[1934,42.6],[1935,42.8],[1936,42],[1937,42.5],[1938,43.7],[1939,43.6],[1940,43.8],[1950,54.6],[1951,55.1],[1952,58.5],[1953,60.3],[1954,62],[1955,62.4],[1956,62.5],[1957,62.4],[1958,64.2],[1959,64.2],[1960,64.4],[1961,64.9],[1962,65.2],[1963,66],[1964,66.7],[1965,67.4],[1966,67.4],[1967,67.5],[1968,67.6],[1969,68.6],[1970,68.69],[1971,69.1],[1972,69.39],[1973,69.45],[1974,69.81],[1975,70.07],[1976,70.43],[1977,70.59],[1978,71.16],[1979,71.31],[1980,71.54],[1981,71.65],[1982,72.16],[1983,72.15],[1984,72.81],[1985,72.99],[1986,73.12],[1987,73.39],[1988,73.21],[1989,73.52],[1990,73.8],[1991,74.27],[1992,74.25],[1993,74.53],[1994,74.7],[1995,74.51],[1996,74.69],[1997,75.21],[1998,75.4],[1999,75.51],[2000,76.07],[2001,76.45],[2002,76.93],[2003,77.13],[2004,77.25],[2005,77.25],[2006,77.99],[2007,78.16],[2008,78.36],[2009,78.6]]},{"name":"Thailand","region":"East Asia & Pacific","income":[[1800,496.98],[1820,496.98],[1870,530.09],[1890,683.55],[1913,732.93],[1929,691.86],[1938,720.58],[1950,712.4],[1951,740.14],[1952,757.8],[1953,815.46],[1954,783.36],[1955,823.98],[1956,810.62],[1957,793.58],[1958,796.7],[1959,865.04],[1960,940.12],[1961,958.99],[1962,1002.2],[1963,1050.68],[1964,1088.71],[1965,1140.35],[1966,1231.34],[1967,1295.46],[1968,1361.45],[1969,1426.51],[1970,1477.26],[1971,1503.77],[1972,1524.36],[1973,1633.64],[1974,1665.36],[1975,1707.84],[1976,1823.5],[1977,1961.22],[1978,2111.47],[1979,2176.35],[1980,2227.1],[1981,2313.84],[1982,2393.22],[1983,2482.77],[1984,2581.97],[1985,2659.44],[1986,2764.2],[1987,2982.65],[1988,3330.33],[1989,3684],[1990,4039.67],[1991,4327.9],[1992,4616.9],[1993,4940.01],[1994,5317.17],[1995,5734.62],[1996,6001.24],[1997,5852.63],[1998,5183.91],[1999,5366.1],[2000,5578.4],[2001,5656.2],[2002,5913.19],[2003,6273.01],[2004,6620.03],[2005,6869],[2006,7203.68],[2007,7505.99],[2008,7623.6],[2009,7376.17]],"population":[[1800,4665000],[1820,4665000],[1850,5230000],[1870,5775000],[1890,6670000],[1900,7320000],[1901,7413000],[1902,7507000],[1903,7602000],[1904,7699000],[1905,7797000],[1906,7896000],[1907,7996000],[1908,8098000],[1909,8201000],[1910,8305000],[1911,8431000],[1912,8559000],[1913,8689000],[1914,8822000],[1915,8957000],[1916,9094000],[1917,9232000],[1918,9418000],[1919,9608000],[1920,9802000],[1921,10000000],[1922,10202000],[1923,10435000],[1924,10673000],[1925,10916000],[1926,11165000],[1927,11419000],[1928,11734000],[1929,12058000],[1930,12392000],[1931,12735000],[1932,13087000],[1933,13399000],[1934,13718000],[1935,14045000],[1936,14379000],[1937,14721000],[1938,14980000],[1939,15244000],[1940,15513000],[1941,15787000],[1942,16060000],[1943,16462000],[1944,16868000],[1945,17284000],[1946,17710000],[1947,18148000],[1948,18569000],[1949,19000000],[1950,20041628],[1951,20653334],[1952,21289402],[1953,21964158],[1954,22684974],[1955,23451316],[1956,24244475],[1957,25041917],[1958,25845443],[1959,26667243],[1960,27512750],[1961,28376096],[1962,29263397],[1963,30173764],[1964,31106615],[1965,32061978],[1966,33035794],[1967,34024249],[1968,35028438],[1969,36049959],[1970,37090871],[1971,38201901],[1972,39276153],[1973,40302225],[1974,41305651],[1975,42272000],[1976,43221022],[1977,44148285],[1978,45056957],[1979,46003776],[1980,47025764],[1981,47936504],[1982,48827160],[1983,49694245],[1984,50533778],[1985,51341809],[1986,52129476],[1987,52910342],[1988,53683427],[1989,54445689],[1990,55196722],[1991,55930062],[1992,56667095],[1993,57400686],[1994,58128738],[1995,58855798],[1996,59559308],[1997,60216677],[1998,60846042],[1999,61394684],[2000,61862928],[2001,62334375],[2002,62806748],[2003,63271021],[2004,63731437],[2005,64185502],[2006,64631595],[2007,65068149],[2008,65493298]],"lifeExpectancy":[[1800,30.4],[1930,30.4],[1937,40.3],[1939,40.3],[1941,38.3],[1943,38.3],[1944,38.1],[1947,41.8],[1948,49.9],[1950,51],[1951,51.14],[1952,51.44],[1953,51.75],[1954,52.09],[1955,52.44],[1956,52.81],[1957,53.21],[1958,53.62],[1959,54.04],[1960,54.48],[1961,54.93],[1962,55.39],[1963,55.86],[1964,56.34],[1965,56.82],[1966,57.31],[1967,57.81],[1968,58.33],[1969,58.85],[1970,59.39],[1971,59.93],[1972,60.48],[1973,61.04],[1974,61.6],[1975,62.2],[1976,62.85],[1977,63.56],[1978,64.32],[1979,65.12],[1980,65.93],[1981,66.71],[1982,67.44],[1983,68.07],[1984,68.59],[1985,68.97],[1986,69.22],[1987,69.33],[1988,69.35],[1989,69.28],[1990,69.15],[1991,68.98],[1992,68.79],[1993,68.6],[1994,68.44],[1995,68.3],[1996,68.21],[1997,68.14],[1998,68.1],[1999,68.08],[2000,68.09],[2001,68.12],[2002,68.17],[2003,68.23],[2004,68.32],[2005,68.42],[2006,68.55],[2007,68.7],[2008,68.88],[2009,69.08]]},{"name":"Timor-Leste","region":"East Asia & Pacific","income":[[1800,514.12],[1820,518.73],[1850,539.86],[1870,554.8],[1913,723.93],[1950,704.35],[1973,1244.57],[1990,2257.73],[1991,2419.65],[1992,2577.99],[1993,2746.85],[1994,2945.92],[1995,3188.04],[1996,3547.23],[1997,3756.34],[1998,3749.92],[1999,2442.67],[2000,2743.19],[2001,3082.86],[2002,2726.03],[2003,2400.73],[2004,2268.32],[2005,2203],[2006,2018.5],[2007,2133.7],[2008,2352.74],[2009,2475.68]],"population":[[1800,137262],[1820,137262],[1926,442000],[1935,461000],[1950,435529],[1951,442862],[1952,450195],[1953,457529],[1954,464862],[1955,472195],[1956,479528],[1957,486861],[1958,494194],[1959,501527],[1960,508860],[1961,517732],[1962,526603],[1963,535474],[1964,544346],[1965,553217],[1966,562088],[1967,570960],[1968,579831],[1969,588702],[1970,597574],[1971,613767],[1972,629961],[1973,646155],[1974,661194],[1975,676582],[1976,652698],[1977,628814],[1978,604930],[1979,581046],[1980,557162],[1981,576054],[1982,594947],[1983,613839],[1984,632731],[1985,651624],[1986,670516],[1987,689409],[1988,708301],[1989,727194],[1990,746086],[1991,771238],[1992,796343],[1993,821171],[1994,845714],[1995,870147],[1996,894488],[1997,918738],[1998,942909],[1999,967073],[2000,846599],[2001,899109],[2002,952618],[2003,997853],[2004,1019252],[2005,1040880],[2006,1062777],[2007,1084971],[2008,1107432],[2009,1130120]],"lifeExpectancy":[[1950,28.97],[1951,29.22],[1952,29.73],[1953,30.23],[1954,30.73],[1955,31.24],[1956,31.74],[1957,32.24],[1958,32.74],[1959,33.24],[1960,33.74],[1961,34.24],[1962,34.74],[1963,35.24],[1964,35.74],[1965,36.28],[1966,36.9],[1967,37.6],[1968,38.34],[1969,39.05],[1970,39.53],[1971,39.58],[1972,39.09],[1973,38.09],[1974,36.67],[1975,35.11],[1976,33.77],[1977,32.94],[1978,32.81],[1979,33.41],[1980,34.65],[1981,36.3],[1982,38.02],[1983,39.56],[1984,40.82],[1985,41.79],[1986,42.54],[1987,43.23],[1988,43.98],[1989,44.83],[1990,45.79],[1991,46.86],[1992,47.97],[1993,49.08],[1994,50.19],[1995,51.27],[1996,52.33],[1997,53.36],[1998,54.36],[1999,55.32],[2000,56.23],[2001,57.06],[2002,57.83],[2003,58.51],[2004,59.13],[2005,59.69],[2006,60.2],[2007,60.68],[2008,61.14],[2009,61.6]]},{"name":"Tokelau","region":"East Asia & Pacific","income":[[2005,889.43]],"population":[[1800,1009],[1843,1000],[1850,1000],[1900,350],[1950,1570],[1955,1599],[1960,1862],[1965,1853],[1970,1581],[1975,1569],[1980,1556],[1985,1593],[1990,1602],[1995,1478],[2000,1517],[2005,1401]],"lifeExpectancy":[[2006,69]]},{"name":"Tonga","region":"East Asia & Pacific","income":[[1800,667.71],[1820,667.71],[1913,902.69],[1973,1874.54],[1974,1955.67],[1975,2022.32],[1976,2036.5],[1977,2116.11],[1978,2129.73],[1979,2148.21],[1980,2479.03],[1981,2836.58],[1982,3287.05],[1983,3523.52],[1984,3626.13],[1985,3891.13],[1986,3979.68],[1987,4088.36],[1988,3988.06],[1989,3975.5],[1990,3867.01],[1991,4087.24],[1992,4070.07],[1993,4195.1],[1994,4378.54],[1995,4490.38],[1996,4540.02],[1997,4432.97],[1998,4539.39],[1999,4718.65],[2000,4886.27],[2001,5026],[2002,5084.22],[2003,5228.76],[2004,5270.86],[2005,5135],[2006,5106.83],[2007,5114.47],[2008,5142.53],[2009,5104.06]],"population":[[1800,18658],[1843,18500],[1850,18500],[1900,20000],[1901,21000],[1911,23000],[1921,25000],[1931,29000],[1939,34000],[1950,45744],[1951,47378],[1952,49066],[1953,50808],[1954,52607],[1955,54465],[1956,56428],[1957,58168],[1958,59962],[1959,61811],[1960,63718],[1961,65683],[1962,67709],[1963,69797],[1964,71949],[1965,74168],[1966,76456],[1967,78816],[1968,81249],[1969,81900],[1970,83100],[1971,84300],[1972,85600],[1973,86800],[1974,87700],[1975,89200],[1976,90200],[1977,90593],[1978,90977],[1979,91352],[1980,91361],[1981,91769],[1982,92201],[1983,92628],[1984,92883],[1985,93352],[1986,93744],[1987,93982],[1988,93290],[1989,92744],[1990,92073],[1991,91218],[1992,92094],[1993,93734],[1994,94398],[1995,95158],[1996,96165],[1997,97399],[1998,98835],[1999,100475],[2000,102321],[2001,104227],[2002,106137],[2003,108141],[2004,110237],[2005,112422],[2006,114689],[2007,116921],[2008,118993]],"lifeExpectancy":[[1950,57.91],[1951,58.1],[1952,58.47],[1953,58.84],[1954,59.2],[1955,59.58],[1956,59.95],[1957,60.32],[1958,60.69],[1959,61.06],[1960,61.43],[1961,61.8],[1962,62.16],[1963,62.52],[1964,62.88],[1965,63.23],[1966,63.58],[1967,63.93],[1968,64.27],[1969,64.61],[1970,64.94],[1971,65.26],[1972,65.56],[1973,65.83],[1974,66.09],[1975,66.33],[1976,66.56],[1977,66.79],[1978,67.02],[1979,67.26],[1980,67.5],[1981,67.75],[1982,68],[1983,68.24],[1984,68.48],[1985,68.7],[1986,68.91],[1987,69.1],[1988,69.27],[1989,69.42],[1990,69.55],[1991,69.67],[1992,69.78],[1993,69.89],[1994,70],[1995,70.11],[1996,70.22],[1997,70.35],[1998,70.47],[1999,70.61],[2000,70.75],[2001,70.88],[2002,71.02],[2003,71.16],[2004,71.3],[2005,71.43],[2006,71.56],[2007,71.69],[2008,71.83],[2009,71.96]]},{"name":"Vietnam","region":"East Asia & Pacific","income":[[1800,459.71],[1820,459.71],[1870,440.8],[1913,634.17],[1950,573.94],[1951,589.87],[1952,605.07],[1953,621.19],[1954,638.49],[1955,654.19],[1956,665.99],[1957,676.29],[1958,684.6],[1959,690.41],[1960,696.95],[1961,708.2],[1962,772.05],[1963,769.51],[1964,780.9],[1965,764.66],[1966,749.36],[1967,637.12],[1968,609.88],[1969,644.57],[1970,641.06],[1971,657.68],[1972,699.5],[1973,729.17],[1974,683.26],[1975,619.17],[1976,705.88],[1977,713.54],[1978,702.65],[1979,693.39],[1980,660.36],[1981,668.83],[1982,707.24],[1983,729.51],[1984,777.06],[1985,805.22],[1986,809.93],[1987,820.8],[1988,851.42],[1989,868.8],[1990,893.88],[1991,927.11],[1992,989.02],[1993,1049.36],[1994,1121.67],[1995,1208.14],[1996,1300.38],[1997,1385.9],[1998,1445.95],[1999,1495.63],[2000,1577.53],[2001,1666.51],[2002,1764.46],[2003,1872.13],[2004,1996.87],[2005,2142],[2006,2289.34],[2007,2453.8],[2008,2574.44],[2009,2679.34]],"population":[[1800,6551000],[1820,6551000],[1870,10528000],[1913,19339000],[1950,25348144],[1951,25793577],[1952,26246839],[1953,26724094],[1954,27210027],[1955,27738063],[1956,28327287],[1957,28998543],[1958,29775192],[1959,30682902],[1960,31656282],[1961,32701357],[1962,33796140],[1963,34932464],[1964,36099052],[1965,37258369],[1966,38378468],[1967,39463910],[1968,40511528],[1969,41542068],[1970,42576676],[1971,43614366],[1972,44655014],[1973,45736496],[1974,46902295],[1975,48075207],[1976,49273016],[1977,50533506],[1978,51662728],[1979,52668447],[1980,53715202],[1981,54902677],[1982,56142181],[1983,57436347],[1984,58762040],[1985,60093068],[1986,61439826],[1987,62826491],[1988,64211347],[1989,65868481],[1990,67282704],[1991,68639527],[1992,69940728],[1993,71243961],[1994,72538927],[1995,73772337],[1996,74941175],[1997,76048996],[1998,77092383],[1999,78089676],[2000,79060410],[2001,79999453],[2002,80908147],[2003,81790803],[2004,82662800],[2005,83535576],[2006,84402966],[2007,85262356],[2008,86116559]],"lifeExpectancy":[[1800,32],[1930,32],[1936,33],[1950,39.42],[1951,39.67],[1952,40.17],[1953,40.66],[1954,41.16],[1955,41.65],[1956,42.15],[1957,42.64],[1958,43.13],[1959,43.63],[1960,44.13],[1961,44.62],[1962,45.12],[1963,45.61],[1964,46.11],[1965,46.6],[1966,47.06],[1967,47.49],[1968,47.91],[1969,48.34],[1970,48.82],[1971,49.4],[1972,50.11],[1973,50.95],[1974,51.92],[1975,52.96],[1976,54.01],[1977,55.02],[1978,55.93],[1979,56.74],[1980,57.45],[1981,58.09],[1982,58.71],[1983,59.35],[1984,60.04],[1985,60.8],[1986,61.63],[1987,62.53],[1988,63.47],[1989,64.44],[1990,65.41],[1991,66.35],[1992,67.24],[1993,68.05],[1994,68.79],[1995,69.45],[1996,70.04],[1997,70.59],[1998,71.11],[1999,71.61],[2000,72.08],[2001,72.51],[2002,72.91],[2003,73.26],[2004,73.56],[2005,73.83],[2006,74.07],[2007,74.29],[2008,74.5],[2009,74.7]]},{"name":"Vanuatu","region":"East Asia & Pacific","income":[[1800,829.58],[1820,829.58],[1913,1121.52],[1973,2282.11],[1974,2972.51],[1975,2746.96],[1976,2713.85],[1977,2605.69],[1978,2972.59],[1979,2999.82],[1980,2584.81],[1981,2624.32],[1982,2834.89],[1983,3359.3],[1984,3507.64],[1985,3464.31],[1986,3314.97],[1987,3251.27],[1988,3191.44],[1989,3217.72],[1990,3281.56],[1991,3574.86],[1992,3443.42],[1993,3492.04],[1994,3482.08],[1995,3555.62],[1996,3729.75],[1997,3840.47],[1998,3936.02],[1999,3741.1],[2000,3762.19],[2001,3575.45],[2002,3234.46],[2003,3251.04],[2004,3340.51],[2005,3477],[2006,3632.57],[2007,3779.08],[2008,3916.57],[2009,3943.3]],"population":[[1800,27791],[1820,27791],[1950,52000],[1951,53262],[1952,54554],[1953,55878],[1954,57233],[1955,58622],[1956,60044],[1957,61501],[1958,62993],[1959,64522],[1960,66087],[1961,67691],[1962,69333],[1963,71015],[1964,72577],[1965,74195],[1966,76132],[1967,78219],[1968,80571],[1969,82905],[1970,85400],[1971,88100],[1972,90800],[1973,93700],[1974,96600],[1975,99700],[1976,102800],[1977,106000],[1978,109400],[1979,113399],[1980,116771],[1981,120223],[1982,123745],[1983,127335],[1984,130982],[1985,134677],[1986,138418],[1987,142207],[1988,146040],[1989,149913],[1990,153785],[1991,157616],[1992,161399],[1993,165127],[1994,168793],[1995,172387],[1996,175927],[1997,179428],[1998,182882],[1999,186282],[2000,189618],[2001,192910],[2002,196178],[2003,199414],[2004,202609],[2005,205754],[2006,208869],[2007,211971],[2008,215053]],"lifeExpectancy":[[1950,40.8],[1951,41.1],[1952,41.7],[1953,42.3],[1954,42.9],[1955,43.5],[1956,44.1],[1957,44.7],[1958,45.3],[1959,45.9],[1960,46.5],[1961,47.1],[1962,47.7],[1963,48.3],[1964,48.9],[1965,49.5],[1966,50.1],[1967,50.7],[1968,51.3],[1969,51.9],[1970,52.5],[1971,53.1],[1972,53.7],[1973,54.3],[1974,54.9],[1975,55.5],[1976,56.12],[1977,56.74],[1978,57.36],[1979,57.98],[1980,58.58],[1981,59.14],[1982,59.65],[1983,60.11],[1984,60.52],[1985,60.92],[1986,61.34],[1987,61.8],[1988,62.32],[1989,62.9],[1990,63.51],[1991,64.11],[1992,64.66],[1993,65.14],[1994,65.53],[1995,65.87],[1996,66.15],[1997,66.44],[1998,66.73],[1999,67.06],[2000,67.42],[2001,67.8],[2002,68.18],[2003,68.56],[2004,68.92],[2005,69.26],[2006,69.58],[2007,69.89],[2008,70.2],[2009,70.5]]}]
\ No newline at end of file
diff --git a/examples/parallelCoordinates.html b/examples/parallelCoordinates.html
new file mode 100644
index 0000000..8dace04
--- /dev/null
+++ b/examples/parallelCoordinates.html
@@ -0,0 +1,4125 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<html>
+<head>
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y: scroll;
+}
+
+.chart {
+  padding: 0;
+}
+
+svg {
+  position: relative;
+  overflow: hidden;
+  width: 960px;
+  height: 500px;
+  font: 10px sans-serif;
+}
+
+</style>
+</head>
+<body>
+
+<div id="chart1" class="chart">
+  <svg></svg>
+</div>
+
+<script type="text/javascript" src="../lib/d3.v3.js"></script>
+<script type="text/javascript" src="../nv.d3.js"></script>
+<script type="text/javascript" src="../src/utils.js"></script>
+<script type="text/javascript" src="../src/models/parallelCoordinates.js"></script>
+
+<script>
+  var chart;
+  nv.addGraph(function() {
+
+    chart = nv.models.parallelCoordinates()
+                  .dimensions(["economy (mpg)", "cylinders", "displacement (cc)", "power (hp)", "weight (lb)", "0-60 mph (s)", "year"]);
+
+    d3.select('#chart1 svg')
+        .datum(data)
+        .call(chart);
+
+    // chart.dispatch.on('brush', function(e) {
+    //   nv.log(e);
+    // });
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+
+  });
+
+function data() {
+  return [
+  {
+    "name": "AMC Ambassador Brougham",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "360",
+    "power (hp)": "175",
+    "weight (lb)": "3821",
+    "0-60 mph (s)": "11",
+    "year": "73"
+  },
+  {
+    "name": "AMC Ambassador DPL",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "390",
+    "power (hp)": "190",
+    "weight (lb)": "3850",
+    "0-60 mph (s)": "8.5",
+    "year": "70"
+  },
+  {
+    "name": "AMC Ambassador SST",
+    "economy (mpg)": "17",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "150",
+    "weight (lb)": "3672",
+    "0-60 mph (s)": "11.5",
+    "year": "72"
+  },
+  {
+    "name": "AMC Concord DL 6",
+    "economy (mpg)": "20.2",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "90",
+    "weight (lb)": "3265",
+    "0-60 mph (s)": "18.2",
+    "year": "79"
+  },
+  {
+    "name": "AMC Concord DL",
+    "economy (mpg)": "18.1",
+    "cylinders": "6",
+    "displacement (cc)": "258",
+    "power (hp)": "120",
+    "weight (lb)": "3410",
+    "0-60 mph (s)": "15.1",
+    "year": "78"
+  },
+  {
+    "name": "AMC Concord DL",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "",
+    "weight (lb)": "3035",
+    "0-60 mph (s)": "20.5",
+    "year": "82"
+  },
+  {
+    "name": "AMC Concord",
+    "economy (mpg)": "19.4",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "90",
+    "weight (lb)": "3210",
+    "0-60 mph (s)": "17.2",
+    "year": "78"
+  },
+  {
+    "name": "AMC Concord",
+    "economy (mpg)": "24.3",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "3003",
+    "0-60 mph (s)": "20.1",
+    "year": "80"
+  },
+  {
+    "name": "AMC Gremlin",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "2789",
+    "0-60 mph (s)": "15",
+    "year": "73"
+  },
+  {
+    "name": "AMC Gremlin",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "2634",
+    "0-60 mph (s)": "13",
+    "year": "71"
+  },
+  {
+    "name": "AMC Gremlin",
+    "economy (mpg)": "20",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "2914",
+    "0-60 mph (s)": "16",
+    "year": "75"
+  },
+  {
+    "name": "AMC Gremlin",
+    "economy (mpg)": "21",
+    "cylinders": "6",
+    "displacement (cc)": "199",
+    "power (hp)": "90",
+    "weight (lb)": "2648",
+    "0-60 mph (s)": "15",
+    "year": "70"
+  },
+  {
+    "name": "AMC Hornet Sportabout (Wagon)",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "258",
+    "power (hp)": "110",
+    "weight (lb)": "2962",
+    "0-60 mph (s)": "13.5",
+    "year": "71"
+  },
+  {
+    "name": "AMC Hornet",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "199",
+    "power (hp)": "97",
+    "weight (lb)": "2774",
+    "0-60 mph (s)": "15.5",
+    "year": "70"
+  },
+  {
+    "name": "AMC Hornet",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "2945",
+    "0-60 mph (s)": "16",
+    "year": "73"
+  },
+  {
+    "name": "AMC Hornet",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "2901",
+    "0-60 mph (s)": "16",
+    "year": "74"
+  },
+  {
+    "name": "AMC Hornet",
+    "economy (mpg)": "22.5",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "90",
+    "weight (lb)": "3085",
+    "0-60 mph (s)": "17.6",
+    "year": "76"
+  },
+  {
+    "name": "AMC Matador (Wagon)",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "150",
+    "weight (lb)": "4257",
+    "0-60 mph (s)": "15.5",
+    "year": "74"
+  },
+  {
+    "name": "AMC Matador (Wagon)",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "150",
+    "weight (lb)": "3892",
+    "0-60 mph (s)": "12.5",
+    "year": "72"
+  },
+  {
+    "name": "AMC Matador",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "150",
+    "weight (lb)": "3672",
+    "0-60 mph (s)": "11.5",
+    "year": "73"
+  },
+  {
+    "name": "AMC Matador",
+    "economy (mpg)": "15",
+    "cylinders": "6",
+    "displacement (cc)": "258",
+    "power (hp)": "110",
+    "weight (lb)": "3730",
+    "0-60 mph (s)": "19",
+    "year": "75"
+  },
+  {
+    "name": "AMC Matador",
+    "economy (mpg)": "15.5",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "120",
+    "weight (lb)": "3962",
+    "0-60 mph (s)": "13.9",
+    "year": "76"
+  },
+  {
+    "name": "AMC Matador",
+    "economy (mpg)": "16",
+    "cylinders": "6",
+    "displacement (cc)": "258",
+    "power (hp)": "110",
+    "weight (lb)": "3632",
+    "0-60 mph (s)": "18",
+    "year": "74"
+  },
+  {
+    "name": "AMC Matador",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "100",
+    "weight (lb)": "3288",
+    "0-60 mph (s)": "15.5",
+    "year": "71"
+  },
+  {
+    "name": "AMC Pacer D/L",
+    "economy (mpg)": "17.5",
+    "cylinders": "6",
+    "displacement (cc)": "258",
+    "power (hp)": "95",
+    "weight (lb)": "3193",
+    "0-60 mph (s)": "17.8",
+    "year": "76"
+  },
+  {
+    "name": "AMC Pacer",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "90",
+    "weight (lb)": "3211",
+    "0-60 mph (s)": "17",
+    "year": "75"
+  },
+  {
+    "name": "AMC Rebel SST (Wagon)",
+    "economy (mpg)": "",
+    "cylinders": "8",
+    "displacement (cc)": "360",
+    "power (hp)": "175",
+    "weight (lb)": "3850",
+    "0-60 mph (s)": "11",
+    "year": "70"
+  },
+  {
+    "name": "AMC Rebel SST",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "150",
+    "weight (lb)": "3433",
+    "0-60 mph (s)": "12",
+    "year": "70"
+  },
+  {
+    "name": "AMC Spirit DL",
+    "economy (mpg)": "27.4",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "80",
+    "weight (lb)": "2670",
+    "0-60 mph (s)": "15",
+    "year": "79"
+  },
+  {
+    "name": "Audi 100 LS",
+    "economy (mpg)": "20",
+    "cylinders": "4",
+    "displacement (cc)": "114",
+    "power (hp)": "91",
+    "weight (lb)": "2582",
+    "0-60 mph (s)": "14",
+    "year": "73"
+  },
+  {
+    "name": "Audi 100 LS",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "115",
+    "power (hp)": "95",
+    "weight (lb)": "2694",
+    "0-60 mph (s)": "15",
+    "year": "75"
+  },
+  {
+    "name": "Audi 100 LS",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "107",
+    "power (hp)": "90",
+    "weight (lb)": "2430",
+    "0-60 mph (s)": "14.5",
+    "year": "70"
+  },
+  {
+    "name": "Audi 4000",
+    "economy (mpg)": "34.3",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "78",
+    "weight (lb)": "2188",
+    "0-60 mph (s)": "15.8",
+    "year": "80"
+  },
+  {
+    "name": "Audi 5000",
+    "economy (mpg)": "20.3",
+    "cylinders": "5",
+    "displacement (cc)": "131",
+    "power (hp)": "103",
+    "weight (lb)": "2830",
+    "0-60 mph (s)": "15.9",
+    "year": "78"
+  },
+  {
+    "name": "Audi 5000S (Diesel)",
+    "economy (mpg)": "36.4",
+    "cylinders": "5",
+    "displacement (cc)": "121",
+    "power (hp)": "67",
+    "weight (lb)": "2950",
+    "0-60 mph (s)": "19.9",
+    "year": "80"
+  },
+  {
+    "name": "Audi Fox",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "83",
+    "weight (lb)": "2219",
+    "0-60 mph (s)": "16.5",
+    "year": "74"
+  },
+  {
+    "name": "BMW 2002",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "113",
+    "weight (lb)": "2234",
+    "0-60 mph (s)": "12.5",
+    "year": "70"
+  },
+  {
+    "name": "BMW 320i",
+    "economy (mpg)": "21.5",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "110",
+    "weight (lb)": "2600",
+    "0-60 mph (s)": "12.8",
+    "year": "77"
+  },
+  {
+    "name": "Buick Century 350",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "175",
+    "weight (lb)": "4100",
+    "0-60 mph (s)": "13",
+    "year": "73"
+  },
+  {
+    "name": "Buick Century Limited",
+    "economy (mpg)": "25",
+    "cylinders": "6",
+    "displacement (cc)": "181",
+    "power (hp)": "110",
+    "weight (lb)": "2945",
+    "0-60 mph (s)": "16.4",
+    "year": "82"
+  },
+  {
+    "name": "Buick Century Luxus (Wagon)",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "150",
+    "weight (lb)": "4699",
+    "0-60 mph (s)": "14.5",
+    "year": "74"
+  },
+  {
+    "name": "Buick Century Special",
+    "economy (mpg)": "20.6",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "105",
+    "weight (lb)": "3380",
+    "0-60 mph (s)": "15.8",
+    "year": "78"
+  },
+  {
+    "name": "Buick Century",
+    "economy (mpg)": "17",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "110",
+    "weight (lb)": "3907",
+    "0-60 mph (s)": "21",
+    "year": "75"
+  },
+  {
+    "name": "Buick Century",
+    "economy (mpg)": "22.4",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "110",
+    "weight (lb)": "3415",
+    "0-60 mph (s)": "15.8",
+    "year": "81"
+  },
+  {
+    "name": "Buick Electra 225 Custom",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "455",
+    "power (hp)": "225",
+    "weight (lb)": "4951",
+    "0-60 mph (s)": "11",
+    "year": "73"
+  },
+  {
+    "name": "Buick Estate Wagon (Wagon)",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "455",
+    "power (hp)": "225",
+    "weight (lb)": "3086",
+    "0-60 mph (s)": "10",
+    "year": "70"
+  },
+  {
+    "name": "Buick Estate Wagon (Wagon)",
+    "economy (mpg)": "16.9",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "155",
+    "weight (lb)": "4360",
+    "0-60 mph (s)": "14.9",
+    "year": "79"
+  },
+  {
+    "name": "Buick Lesabre Custom",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "155",
+    "weight (lb)": "4502",
+    "0-60 mph (s)": "13.5",
+    "year": "72"
+  },
+  {
+    "name": "Buick Opel Isuzu Deluxe",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "111",
+    "power (hp)": "80",
+    "weight (lb)": "2155",
+    "0-60 mph (s)": "14.8",
+    "year": "77"
+  },
+  {
+    "name": "Buick Regal Sport Coupe (Turbo)",
+    "economy (mpg)": "17.7",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "165",
+    "weight (lb)": "3445",
+    "0-60 mph (s)": "13.4",
+    "year": "78"
+  },
+  {
+    "name": "Buick Skyhawk",
+    "economy (mpg)": "21",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "110",
+    "weight (lb)": "3039",
+    "0-60 mph (s)": "15",
+    "year": "75"
+  },
+  {
+    "name": "Buick Skylark 320",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "165",
+    "weight (lb)": "3693",
+    "0-60 mph (s)": "11.5",
+    "year": "70"
+  },
+  {
+    "name": "Buick Skylark Limited",
+    "economy (mpg)": "28.4",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "2670",
+    "0-60 mph (s)": "16",
+    "year": "79"
+  },
+  {
+    "name": "Buick Skylark",
+    "economy (mpg)": "20.5",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "105",
+    "weight (lb)": "3425",
+    "0-60 mph (s)": "16.9",
+    "year": "77"
+  },
+  {
+    "name": "Buick Skylark",
+    "economy (mpg)": "26.6",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "84",
+    "weight (lb)": "2635",
+    "0-60 mph (s)": "16.4",
+    "year": "81"
+  },
+  {
+    "name": "Cadillac Eldorado",
+    "economy (mpg)": "23",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "125",
+    "weight (lb)": "3900",
+    "0-60 mph (s)": "17.4",
+    "year": "79"
+  },
+  {
+    "name": "Cadillac Seville",
+    "economy (mpg)": "16.5",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "180",
+    "weight (lb)": "4380",
+    "0-60 mph (s)": "12.1",
+    "year": "76"
+  },
+  {
+    "name": "Chevroelt Chevelle Malibu",
+    "economy (mpg)": "16",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "105",
+    "weight (lb)": "3897",
+    "0-60 mph (s)": "18.5",
+    "year": "75"
+  },
+  {
+    "name": "Chevrolet Bel Air",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "145",
+    "weight (lb)": "4440",
+    "0-60 mph (s)": "14",
+    "year": "75"
+  },
+  {
+    "name": "Chevrolet Camaro",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "2950",
+    "0-60 mph (s)": "17.3",
+    "year": "82"
+  },
+  {
+    "name": "Chevrolet Caprice Classic",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "150",
+    "weight (lb)": "4464",
+    "0-60 mph (s)": "12",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Caprice Classic",
+    "economy (mpg)": "17",
+    "cylinders": "8",
+    "displacement (cc)": "305",
+    "power (hp)": "130",
+    "weight (lb)": "3840",
+    "0-60 mph (s)": "15.4",
+    "year": "79"
+  },
+  {
+    "name": "Chevrolet Caprice Classic",
+    "economy (mpg)": "17.5",
+    "cylinders": "8",
+    "displacement (cc)": "305",
+    "power (hp)": "145",
+    "weight (lb)": "3880",
+    "0-60 mph (s)": "12.5",
+    "year": "77"
+  },
+  {
+    "name": "Chevrolet Cavalier 2-Door",
+    "economy (mpg)": "34",
+    "cylinders": "4",
+    "displacement (cc)": "112",
+    "power (hp)": "88",
+    "weight (lb)": "2395",
+    "0-60 mph (s)": "18",
+    "year": "82"
+  },
+  {
+    "name": "Chevrolet Cavalier Wagon",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "112",
+    "power (hp)": "88",
+    "weight (lb)": "2640",
+    "0-60 mph (s)": "18.6",
+    "year": "82"
+  },
+  {
+    "name": "Chevrolet Cavalier",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "112",
+    "power (hp)": "88",
+    "weight (lb)": "2605",
+    "0-60 mph (s)": "19.6",
+    "year": "82"
+  },
+  {
+    "name": "Chevrolet Chevelle Concours (Wagon)",
+    "economy (mpg)": "",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "165",
+    "weight (lb)": "4142",
+    "0-60 mph (s)": "11.5",
+    "year": "70"
+  },
+  {
+    "name": "Chevrolet Chevelle Concours (Wagon)",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "307",
+    "power (hp)": "130",
+    "weight (lb)": "4098",
+    "0-60 mph (s)": "14",
+    "year": "72"
+  },
+  {
+    "name": "Chevrolet Chevelle Malibu Classic",
+    "economy (mpg)": "16",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "100",
+    "weight (lb)": "3781",
+    "0-60 mph (s)": "17",
+    "year": "74"
+  },
+  {
+    "name": "Chevrolet Chevelle Malibu Classic",
+    "economy (mpg)": "17.5",
+    "cylinders": "8",
+    "displacement (cc)": "305",
+    "power (hp)": "140",
+    "weight (lb)": "4215",
+    "0-60 mph (s)": "13",
+    "year": "76"
+  },
+  {
+    "name": "Chevrolet Chevelle Malibu",
+    "economy (mpg)": "17",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "100",
+    "weight (lb)": "3329",
+    "0-60 mph (s)": "15.5",
+    "year": "71"
+  },
+  {
+    "name": "Chevrolet Chevelle Malibu",
+    "economy (mpg)": "18",
+    "cylinders": "8",
+    "displacement (cc)": "307",
+    "power (hp)": "130",
+    "weight (lb)": "3504",
+    "0-60 mph (s)": "12",
+    "year": "70"
+  },
+  {
+    "name": "Chevrolet Chevette",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "52",
+    "weight (lb)": "2035",
+    "0-60 mph (s)": "22.2",
+    "year": "76"
+  },
+  {
+    "name": "Chevrolet Chevette",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "68",
+    "weight (lb)": "2155",
+    "0-60 mph (s)": "16.5",
+    "year": "78"
+  },
+  {
+    "name": "Chevrolet Chevette",
+    "economy (mpg)": "30.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "63",
+    "weight (lb)": "2051",
+    "0-60 mph (s)": "17",
+    "year": "77"
+  },
+  {
+    "name": "Chevrolet Chevette",
+    "economy (mpg)": "32.1",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "70",
+    "weight (lb)": "2120",
+    "0-60 mph (s)": "15.5",
+    "year": "80"
+  },
+  {
+    "name": "Chevrolet Citation",
+    "economy (mpg)": "23.5",
+    "cylinders": "6",
+    "displacement (cc)": "173",
+    "power (hp)": "110",
+    "weight (lb)": "2725",
+    "0-60 mph (s)": "12.6",
+    "year": "81"
+  },
+  {
+    "name": "Chevrolet Citation",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "2678",
+    "0-60 mph (s)": "16.5",
+    "year": "80"
+  },
+  {
+    "name": "Chevrolet Citation",
+    "economy (mpg)": "28.8",
+    "cylinders": "6",
+    "displacement (cc)": "173",
+    "power (hp)": "115",
+    "weight (lb)": "2595",
+    "0-60 mph (s)": "11.3",
+    "year": "79"
+  },
+  {
+    "name": "Chevrolet Concours",
+    "economy (mpg)": "17.5",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "110",
+    "weight (lb)": "3520",
+    "0-60 mph (s)": "16.4",
+    "year": "77"
+  },
+  {
+    "name": "Chevrolet Impala",
+    "economy (mpg)": "11",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "150",
+    "weight (lb)": "4997",
+    "0-60 mph (s)": "14",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Impala",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "165",
+    "weight (lb)": "4274",
+    "0-60 mph (s)": "12",
+    "year": "72"
+  },
+  {
+    "name": "Chevrolet Impala",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "165",
+    "weight (lb)": "4209",
+    "0-60 mph (s)": "12",
+    "year": "71"
+  },
+  {
+    "name": "Chevrolet Impala",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "454",
+    "power (hp)": "220",
+    "weight (lb)": "4354",
+    "0-60 mph (s)": "9",
+    "year": "70"
+  },
+  {
+    "name": "Chevrolet Malibu Classic (Wagon)",
+    "economy (mpg)": "19.2",
+    "cylinders": "8",
+    "displacement (cc)": "267",
+    "power (hp)": "125",
+    "weight (lb)": "3605",
+    "0-60 mph (s)": "15",
+    "year": "79"
+  },
+  {
+    "name": "Chevrolet Malibu",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "145",
+    "weight (lb)": "3988",
+    "0-60 mph (s)": "13",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Malibu",
+    "economy (mpg)": "20.5",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "95",
+    "weight (lb)": "3155",
+    "0-60 mph (s)": "18.2",
+    "year": "78"
+  },
+  {
+    "name": "Chevrolet Monte Carlo Landau",
+    "economy (mpg)": "15.5",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "170",
+    "weight (lb)": "4165",
+    "0-60 mph (s)": "11.4",
+    "year": "77"
+  },
+  {
+    "name": "Chevrolet Monte Carlo Landau",
+    "economy (mpg)": "19.2",
+    "cylinders": "8",
+    "displacement (cc)": "305",
+    "power (hp)": "145",
+    "weight (lb)": "3425",
+    "0-60 mph (s)": "13.2",
+    "year": "78"
+  },
+  {
+    "name": "Chevrolet Monte Carlo S",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "145",
+    "weight (lb)": "4082",
+    "0-60 mph (s)": "13",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Monte Carlo",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "150",
+    "weight (lb)": "3761",
+    "0-60 mph (s)": "9.5",
+    "year": "70"
+  },
+  {
+    "name": "Chevrolet Monza 2+2",
+    "economy (mpg)": "20",
+    "cylinders": "8",
+    "displacement (cc)": "262",
+    "power (hp)": "110",
+    "weight (lb)": "3221",
+    "0-60 mph (s)": "13.5",
+    "year": "75"
+  },
+  {
+    "name": "Chevrolet Nova Custom",
+    "economy (mpg)": "16",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "100",
+    "weight (lb)": "3278",
+    "0-60 mph (s)": "18",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Nova",
+    "economy (mpg)": "15",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "100",
+    "weight (lb)": "3336",
+    "0-60 mph (s)": "17",
+    "year": "74"
+  },
+  {
+    "name": "Chevrolet Nova",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "105",
+    "weight (lb)": "3459",
+    "0-60 mph (s)": "16",
+    "year": "75"
+  },
+  {
+    "name": "Chevrolet Nova",
+    "economy (mpg)": "22",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "105",
+    "weight (lb)": "3353",
+    "0-60 mph (s)": "14.5",
+    "year": "76"
+  },
+  {
+    "name": "Chevrolet Vega (Wagon)",
+    "economy (mpg)": "22",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "72",
+    "weight (lb)": "2408",
+    "0-60 mph (s)": "19",
+    "year": "71"
+  },
+  {
+    "name": "Chevrolet Vega 2300",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "90",
+    "weight (lb)": "2264",
+    "0-60 mph (s)": "15.5",
+    "year": "71"
+  },
+  {
+    "name": "Chevrolet Vega",
+    "economy (mpg)": "20",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "90",
+    "weight (lb)": "2408",
+    "0-60 mph (s)": "19.5",
+    "year": "72"
+  },
+  {
+    "name": "Chevrolet Vega",
+    "economy (mpg)": "21",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "72",
+    "weight (lb)": "2401",
+    "0-60 mph (s)": "19.5",
+    "year": "73"
+  },
+  {
+    "name": "Chevrolet Vega",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "75",
+    "weight (lb)": "2542",
+    "0-60 mph (s)": "17",
+    "year": "74"
+  },
+  {
+    "name": "Chevrolet Woody",
+    "economy (mpg)": "24.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "60",
+    "weight (lb)": "2164",
+    "0-60 mph (s)": "22.1",
+    "year": "76"
+  },
+  {
+    "name": "Chevy C10",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "145",
+    "weight (lb)": "4055",
+    "0-60 mph (s)": "12",
+    "year": "76"
+  },
+  {
+    "name": "Chevy C20",
+    "economy (mpg)": "10",
+    "cylinders": "8",
+    "displacement (cc)": "307",
+    "power (hp)": "200",
+    "weight (lb)": "4376",
+    "0-60 mph (s)": "15",
+    "year": "70"
+  },
+  {
+    "name": "Chevy S-10",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "82",
+    "weight (lb)": "2720",
+    "0-60 mph (s)": "19.4",
+    "year": "82"
+  },
+  {
+    "name": "Chrysler Cordoba",
+    "economy (mpg)": "15.5",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "190",
+    "weight (lb)": "4325",
+    "0-60 mph (s)": "12.2",
+    "year": "77"
+  },
+  {
+    "name": "Chrysler Lebaron Medallion",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "156",
+    "power (hp)": "92",
+    "weight (lb)": "2585",
+    "0-60 mph (s)": "14.5",
+    "year": "82"
+  },
+  {
+    "name": "Chrysler Lebaron Salon",
+    "economy (mpg)": "17.6",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "85",
+    "weight (lb)": "3465",
+    "0-60 mph (s)": "16.6",
+    "year": "81"
+  },
+  {
+    "name": "Chrysler Lebaron Town & Country (Wagon)",
+    "economy (mpg)": "18.5",
+    "cylinders": "8",
+    "displacement (cc)": "360",
+    "power (hp)": "150",
+    "weight (lb)": "3940",
+    "0-60 mph (s)": "13",
+    "year": "79"
+  },
+  {
+    "name": "Chrysler New Yorker Brougham",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "440",
+    "power (hp)": "215",
+    "weight (lb)": "4735",
+    "0-60 mph (s)": "11",
+    "year": "73"
+  },
+  {
+    "name": "Chrysler Newport Royal",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "190",
+    "weight (lb)": "4422",
+    "0-60 mph (s)": "12.5",
+    "year": "72"
+  },
+  {
+    "name": "Citroen DS-21 Pallas",
+    "economy (mpg)": "",
+    "cylinders": "4",
+    "displacement (cc)": "133",
+    "power (hp)": "115",
+    "weight (lb)": "3090",
+    "0-60 mph (s)": "17.5",
+    "year": "70"
+  },
+  {
+    "name": "Datsun 1200",
+    "economy (mpg)": "35",
+    "cylinders": "4",
+    "displacement (cc)": "72",
+    "power (hp)": "69",
+    "weight (lb)": "1613",
+    "0-60 mph (s)": "18",
+    "year": "71"
+  },
+  {
+    "name": "Datsun 200SX",
+    "economy (mpg)": "23.9",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "97",
+    "weight (lb)": "2405",
+    "0-60 mph (s)": "14.9",
+    "year": "78"
+  },
+  {
+    "name": "Datsun 200SX",
+    "economy (mpg)": "32.9",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "100",
+    "weight (lb)": "2615",
+    "0-60 mph (s)": "14.8",
+    "year": "81"
+  },
+  {
+    "name": "Datsun 210",
+    "economy (mpg)": "31.8",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "65",
+    "weight (lb)": "2020",
+    "0-60 mph (s)": "19.2",
+    "year": "79"
+  },
+  {
+    "name": "Datsun 210",
+    "economy (mpg)": "37",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "65",
+    "weight (lb)": "1975",
+    "0-60 mph (s)": "19.4",
+    "year": "81"
+  },
+  {
+    "name": "Datsun 210",
+    "economy (mpg)": "40.8",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "65",
+    "weight (lb)": "2110",
+    "0-60 mph (s)": "19.2",
+    "year": "80"
+  },
+  {
+    "name": "Datsun 280ZX",
+    "economy (mpg)": "32.7",
+    "cylinders": "6",
+    "displacement (cc)": "168",
+    "power (hp)": "132",
+    "weight (lb)": "2910",
+    "0-60 mph (s)": "11.4",
+    "year": "80"
+  },
+  {
+    "name": "Datsun 310 GX",
+    "economy (mpg)": "38",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "67",
+    "weight (lb)": "1995",
+    "0-60 mph (s)": "16.2",
+    "year": "82"
+  },
+  {
+    "name": "Datsun 310",
+    "economy (mpg)": "37.2",
+    "cylinders": "4",
+    "displacement (cc)": "86",
+    "power (hp)": "65",
+    "weight (lb)": "2019",
+    "0-60 mph (s)": "16.4",
+    "year": "80"
+  },
+  {
+    "name": "Datsun 510 (Wagon)",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "92",
+    "weight (lb)": "2288",
+    "0-60 mph (s)": "17",
+    "year": "72"
+  },
+  {
+    "name": "Datsun 510 Hatchback",
+    "economy (mpg)": "37",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "92",
+    "weight (lb)": "2434",
+    "0-60 mph (s)": "15",
+    "year": "80"
+  },
+  {
+    "name": "Datsun 510",
+    "economy (mpg)": "27.2",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "97",
+    "weight (lb)": "2300",
+    "0-60 mph (s)": "14.7",
+    "year": "78"
+  },
+  {
+    "name": "Datsun 610",
+    "economy (mpg)": "22",
+    "cylinders": "4",
+    "displacement (cc)": "108",
+    "power (hp)": "94",
+    "weight (lb)": "2379",
+    "0-60 mph (s)": "16.5",
+    "year": "73"
+  },
+  {
+    "name": "Datsun 710",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "119",
+    "power (hp)": "97",
+    "weight (lb)": "2545",
+    "0-60 mph (s)": "17",
+    "year": "75"
+  },
+  {
+    "name": "Datsun 710",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "83",
+    "power (hp)": "61",
+    "weight (lb)": "2003",
+    "0-60 mph (s)": "19",
+    "year": "74"
+  },
+  {
+    "name": "Datsun 810 Maxima",
+    "economy (mpg)": "24.2",
+    "cylinders": "6",
+    "displacement (cc)": "146",
+    "power (hp)": "120",
+    "weight (lb)": "2930",
+    "0-60 mph (s)": "13.8",
+    "year": "81"
+  },
+  {
+    "name": "Datsun 810",
+    "economy (mpg)": "22",
+    "cylinders": "6",
+    "displacement (cc)": "146",
+    "power (hp)": "97",
+    "weight (lb)": "2815",
+    "0-60 mph (s)": "14.5",
+    "year": "77"
+  },
+  {
+    "name": "Datsun B-210",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "70",
+    "weight (lb)": "1990",
+    "0-60 mph (s)": "17",
+    "year": "76"
+  },
+  {
+    "name": "Datsun B210 GX",
+    "economy (mpg)": "39.4",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "70",
+    "weight (lb)": "2070",
+    "0-60 mph (s)": "18.6",
+    "year": "78"
+  },
+  {
+    "name": "Datsun B210",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "67",
+    "weight (lb)": "1950",
+    "0-60 mph (s)": "19",
+    "year": "74"
+  },
+  {
+    "name": "Datsun F-10 Hatchback",
+    "economy (mpg)": "33.5",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "70",
+    "weight (lb)": "1945",
+    "0-60 mph (s)": "16.8",
+    "year": "77"
+  },
+  {
+    "name": "Datsun PL510",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "88",
+    "weight (lb)": "2130",
+    "0-60 mph (s)": "14.5",
+    "year": "70"
+  },
+  {
+    "name": "Datsun PL510",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "88",
+    "weight (lb)": "2130",
+    "0-60 mph (s)": "14.5",
+    "year": "71"
+  },
+  {
+    "name": "Dodge Aries SE",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "135",
+    "power (hp)": "84",
+    "weight (lb)": "2525",
+    "0-60 mph (s)": "16",
+    "year": "82"
+  },
+  {
+    "name": "Dodge Aries Wagon (Wagon)",
+    "economy (mpg)": "25.8",
+    "cylinders": "4",
+    "displacement (cc)": "156",
+    "power (hp)": "92",
+    "weight (lb)": "2620",
+    "0-60 mph (s)": "14.4",
+    "year": "81"
+  },
+  {
+    "name": "Dodge Aspen 6",
+    "economy (mpg)": "20.6",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "110",
+    "weight (lb)": "3360",
+    "0-60 mph (s)": "16.6",
+    "year": "79"
+  },
+  {
+    "name": "Dodge Aspen SE",
+    "economy (mpg)": "20",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "100",
+    "weight (lb)": "3651",
+    "0-60 mph (s)": "17.7",
+    "year": "76"
+  },
+  {
+    "name": "Dodge Aspen",
+    "economy (mpg)": "18.6",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "110",
+    "weight (lb)": "3620",
+    "0-60 mph (s)": "18.7",
+    "year": "78"
+  },
+  {
+    "name": "Dodge Aspen",
+    "economy (mpg)": "19.1",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "90",
+    "weight (lb)": "3381",
+    "0-60 mph (s)": "18.7",
+    "year": "80"
+  },
+  {
+    "name": "Dodge Challenger SE",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "383",
+    "power (hp)": "170",
+    "weight (lb)": "3563",
+    "0-60 mph (s)": "10",
+    "year": "70"
+  },
+  {
+    "name": "Dodge Charger 2.2",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "135",
+    "power (hp)": "84",
+    "weight (lb)": "2370",
+    "0-60 mph (s)": "13",
+    "year": "82"
+  },
+  {
+    "name": "Dodge Colt (Wagon)",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "80",
+    "weight (lb)": "2164",
+    "0-60 mph (s)": "15",
+    "year": "72"
+  },
+  {
+    "name": "Dodge Colt Hardtop",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "97.5",
+    "power (hp)": "80",
+    "weight (lb)": "2126",
+    "0-60 mph (s)": "17",
+    "year": "72"
+  },
+  {
+    "name": "Dodge Colt Hatchback Custom",
+    "economy (mpg)": "35.7",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "80",
+    "weight (lb)": "1915",
+    "0-60 mph (s)": "14.4",
+    "year": "79"
+  },
+  {
+    "name": "Dodge Colt M/M",
+    "economy (mpg)": "33.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "83",
+    "weight (lb)": "2075",
+    "0-60 mph (s)": "15.9",
+    "year": "77"
+  },
+  {
+    "name": "Dodge Colt",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "79",
+    "weight (lb)": "2255",
+    "0-60 mph (s)": "17.7",
+    "year": "76"
+  },
+  {
+    "name": "Dodge Colt",
+    "economy (mpg)": "27.9",
+    "cylinders": "4",
+    "displacement (cc)": "156",
+    "power (hp)": "105",
+    "weight (lb)": "2800",
+    "0-60 mph (s)": "14.4",
+    "year": "80"
+  },
+  {
+    "name": "Dodge Colt",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "75",
+    "weight (lb)": "2125",
+    "0-60 mph (s)": "14.5",
+    "year": "74"
+  },
+  {
+    "name": "Dodge Coronet Brougham",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4190",
+    "0-60 mph (s)": "13",
+    "year": "76"
+  },
+  {
+    "name": "Dodge Coronet Custom (Wagon)",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4457",
+    "0-60 mph (s)": "13.5",
+    "year": "74"
+  },
+  {
+    "name": "Dodge Coronet Custom",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "3777",
+    "0-60 mph (s)": "12.5",
+    "year": "73"
+  },
+  {
+    "name": "Dodge D100",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "3755",
+    "0-60 mph (s)": "14",
+    "year": "76"
+  },
+  {
+    "name": "Dodge D200",
+    "economy (mpg)": "11",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "210",
+    "weight (lb)": "4382",
+    "0-60 mph (s)": "13.5",
+    "year": "70"
+  },
+  {
+    "name": "Dodge Dart Custom",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "3399",
+    "0-60 mph (s)": "11",
+    "year": "73"
+  },
+  {
+    "name": "Dodge Diplomat",
+    "economy (mpg)": "19.4",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "140",
+    "weight (lb)": "3735",
+    "0-60 mph (s)": "13.2",
+    "year": "78"
+  },
+  {
+    "name": "Dodge Magnum XE",
+    "economy (mpg)": "17.5",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "140",
+    "weight (lb)": "4080",
+    "0-60 mph (s)": "13.7",
+    "year": "78"
+  },
+  {
+    "name": "Dodge Monaco (Wagon)",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "383",
+    "power (hp)": "180",
+    "weight (lb)": "4955",
+    "0-60 mph (s)": "11.5",
+    "year": "71"
+  },
+  {
+    "name": "Dodge Monaco Brougham",
+    "economy (mpg)": "15.5",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "145",
+    "weight (lb)": "4140",
+    "0-60 mph (s)": "13.7",
+    "year": "77"
+  },
+  {
+    "name": "Dodge Omni",
+    "economy (mpg)": "30.9",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "75",
+    "weight (lb)": "2230",
+    "0-60 mph (s)": "14.5",
+    "year": "78"
+  },
+  {
+    "name": "Dodge Rampage",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "135",
+    "power (hp)": "84",
+    "weight (lb)": "2295",
+    "0-60 mph (s)": "11.6",
+    "year": "82"
+  },
+  {
+    "name": "Dodge St. Regis",
+    "economy (mpg)": "18.2",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "135",
+    "weight (lb)": "3830",
+    "0-60 mph (s)": "15.2",
+    "year": "79"
+  },
+  {
+    "name": "Fiat 124 Sport Coupe",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "90",
+    "weight (lb)": "2265",
+    "0-60 mph (s)": "15.5",
+    "year": "73"
+  },
+  {
+    "name": "Fiat 124 TC",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "116",
+    "power (hp)": "75",
+    "weight (lb)": "2246",
+    "0-60 mph (s)": "14",
+    "year": "74"
+  },
+  {
+    "name": "Fiat 124B",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "88",
+    "power (hp)": "76",
+    "weight (lb)": "2065",
+    "0-60 mph (s)": "14.5",
+    "year": "71"
+  },
+  {
+    "name": "Fiat 128",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "75",
+    "weight (lb)": "2108",
+    "0-60 mph (s)": "15.5",
+    "year": "74"
+  },
+  {
+    "name": "Fiat 128",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "68",
+    "power (hp)": "49",
+    "weight (lb)": "1867",
+    "0-60 mph (s)": "19.5",
+    "year": "73"
+  },
+  {
+    "name": "Fiat 131",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "107",
+    "power (hp)": "86",
+    "weight (lb)": "2464",
+    "0-60 mph (s)": "15.5",
+    "year": "76"
+  },
+  {
+    "name": "Fiat Strada Custom",
+    "economy (mpg)": "37.3",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "69",
+    "weight (lb)": "2130",
+    "0-60 mph (s)": "14.7",
+    "year": "79"
+  },
+  {
+    "name": "Fiat X1.9",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "67",
+    "weight (lb)": "2000",
+    "0-60 mph (s)": "16",
+    "year": "74"
+  },
+  {
+    "name": "Ford Capri II",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "92",
+    "weight (lb)": "2572",
+    "0-60 mph (s)": "14.9",
+    "year": "76"
+  },
+  {
+    "name": "Ford Country Squire (Wagon)",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "170",
+    "weight (lb)": "4746",
+    "0-60 mph (s)": "12",
+    "year": "71"
+  },
+  {
+    "name": "Ford Country Squire (Wagon)",
+    "economy (mpg)": "15.5",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "142",
+    "weight (lb)": "4054",
+    "0-60 mph (s)": "14.3",
+    "year": "79"
+  },
+  {
+    "name": "Ford Country",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "167",
+    "weight (lb)": "4906",
+    "0-60 mph (s)": "12.5",
+    "year": "73"
+  },
+  {
+    "name": "Ford Escort 2H",
+    "economy (mpg)": "29.9",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "65",
+    "weight (lb)": "2380",
+    "0-60 mph (s)": "20.7",
+    "year": "81"
+  },
+  {
+    "name": "Ford Escort 4W",
+    "economy (mpg)": "34.4",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "65",
+    "weight (lb)": "2045",
+    "0-60 mph (s)": "16.2",
+    "year": "81"
+  },
+  {
+    "name": "Ford F108",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "130",
+    "weight (lb)": "3870",
+    "0-60 mph (s)": "15",
+    "year": "76"
+  },
+  {
+    "name": "Ford F250",
+    "economy (mpg)": "10",
+    "cylinders": "8",
+    "displacement (cc)": "360",
+    "power (hp)": "215",
+    "weight (lb)": "4615",
+    "0-60 mph (s)": "14",
+    "year": "70"
+  },
+  {
+    "name": "Ford Fairmont (Auto)",
+    "economy (mpg)": "20.2",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "85",
+    "weight (lb)": "2965",
+    "0-60 mph (s)": "15.8",
+    "year": "78"
+  },
+  {
+    "name": "Ford Fairmont (Man)",
+    "economy (mpg)": "25.1",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "88",
+    "weight (lb)": "2720",
+    "0-60 mph (s)": "15.4",
+    "year": "78"
+  },
+  {
+    "name": "Ford Fairmont 4",
+    "economy (mpg)": "22.3",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "88",
+    "weight (lb)": "2890",
+    "0-60 mph (s)": "17.3",
+    "year": "79"
+  },
+  {
+    "name": "Ford Fairmont Futura",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "92",
+    "weight (lb)": "2865",
+    "0-60 mph (s)": "16.4",
+    "year": "82"
+  },
+  {
+    "name": "Ford Fairmont",
+    "economy (mpg)": "26.4",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "88",
+    "weight (lb)": "2870",
+    "0-60 mph (s)": "18.1",
+    "year": "80"
+  },
+  {
+    "name": "Ford Fiesta",
+    "economy (mpg)": "36.1",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "66",
+    "weight (lb)": "1800",
+    "0-60 mph (s)": "14.4",
+    "year": "78"
+  },
+  {
+    "name": "Ford Futura",
+    "economy (mpg)": "18.1",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "139",
+    "weight (lb)": "3205",
+    "0-60 mph (s)": "11.2",
+    "year": "78"
+  },
+  {
+    "name": "Ford Galaxie 500",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "153",
+    "weight (lb)": "4129",
+    "0-60 mph (s)": "13",
+    "year": "72"
+  },
+  {
+    "name": "Ford Galaxie 500",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "153",
+    "weight (lb)": "4154",
+    "0-60 mph (s)": "13.5",
+    "year": "71"
+  },
+  {
+    "name": "Ford Galaxie 500",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "429",
+    "power (hp)": "198",
+    "weight (lb)": "4341",
+    "0-60 mph (s)": "10",
+    "year": "70"
+  },
+  {
+    "name": "Ford Gran Torino (Wagon)",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "140",
+    "weight (lb)": "4294",
+    "0-60 mph (s)": "16",
+    "year": "72"
+  },
+  {
+    "name": "Ford Gran Torino (Wagon)",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "140",
+    "weight (lb)": "4638",
+    "0-60 mph (s)": "16",
+    "year": "74"
+  },
+  {
+    "name": "Ford Gran Torino",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "137",
+    "weight (lb)": "4042",
+    "0-60 mph (s)": "14.5",
+    "year": "73"
+  },
+  {
+    "name": "Ford Gran Torino",
+    "economy (mpg)": "14.5",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "152",
+    "weight (lb)": "4215",
+    "0-60 mph (s)": "12.8",
+    "year": "76"
+  },
+  {
+    "name": "Ford Gran Torino",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "140",
+    "weight (lb)": "4141",
+    "0-60 mph (s)": "14",
+    "year": "74"
+  },
+  {
+    "name": "Ford Granada Ghia",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "78",
+    "weight (lb)": "3574",
+    "0-60 mph (s)": "21",
+    "year": "76"
+  },
+  {
+    "name": "Ford Granada GL",
+    "economy (mpg)": "20.2",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "88",
+    "weight (lb)": "3060",
+    "0-60 mph (s)": "17.1",
+    "year": "81"
+  },
+  {
+    "name": "Ford Granada L",
+    "economy (mpg)": "22",
+    "cylinders": "6",
+    "displacement (cc)": "232",
+    "power (hp)": "112",
+    "weight (lb)": "2835",
+    "0-60 mph (s)": "14.7",
+    "year": "82"
+  },
+  {
+    "name": "Ford Granada",
+    "economy (mpg)": "18.5",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "98",
+    "weight (lb)": "3525",
+    "0-60 mph (s)": "19",
+    "year": "77"
+  },
+  {
+    "name": "Ford LTD Landau",
+    "economy (mpg)": "17.6",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "129",
+    "weight (lb)": "3725",
+    "0-60 mph (s)": "13.4",
+    "year": "79"
+  },
+  {
+    "name": "Ford LTD",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "158",
+    "weight (lb)": "4363",
+    "0-60 mph (s)": "13",
+    "year": "73"
+  },
+  {
+    "name": "Ford LTD",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "148",
+    "weight (lb)": "4657",
+    "0-60 mph (s)": "13.5",
+    "year": "75"
+  },
+  {
+    "name": "Ford Maverick",
+    "economy (mpg)": "15",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "72",
+    "weight (lb)": "3158",
+    "0-60 mph (s)": "19.5",
+    "year": "75"
+  },
+  {
+    "name": "Ford Maverick",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "88",
+    "weight (lb)": "3021",
+    "0-60 mph (s)": "16.5",
+    "year": "73"
+  },
+  {
+    "name": "Ford Maverick",
+    "economy (mpg)": "21",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "",
+    "weight (lb)": "2875",
+    "0-60 mph (s)": "17",
+    "year": "74"
+  },
+  {
+    "name": "Ford Maverick",
+    "economy (mpg)": "21",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "85",
+    "weight (lb)": "2587",
+    "0-60 mph (s)": "16",
+    "year": "70"
+  },
+  {
+    "name": "Ford Maverick",
+    "economy (mpg)": "24",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "81",
+    "weight (lb)": "3012",
+    "0-60 mph (s)": "17.6",
+    "year": "76"
+  },
+  {
+    "name": "Ford Mustang Boss 302",
+    "economy (mpg)": "",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "140",
+    "weight (lb)": "3353",
+    "0-60 mph (s)": "8",
+    "year": "70"
+  },
+  {
+    "name": "Ford Mustang Cobra",
+    "economy (mpg)": "23.6",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "",
+    "weight (lb)": "2905",
+    "0-60 mph (s)": "14.3",
+    "year": "80"
+  },
+  {
+    "name": "Ford Mustang GL",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "86",
+    "weight (lb)": "2790",
+    "0-60 mph (s)": "15.6",
+    "year": "82"
+  },
+  {
+    "name": "Ford Mustang II 2+2",
+    "economy (mpg)": "25.5",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "89",
+    "weight (lb)": "2755",
+    "0-60 mph (s)": "15.8",
+    "year": "77"
+  },
+  {
+    "name": "Ford Mustang II",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "129",
+    "weight (lb)": "3169",
+    "0-60 mph (s)": "12",
+    "year": "75"
+  },
+  {
+    "name": "Ford Mustang",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "88",
+    "weight (lb)": "3139",
+    "0-60 mph (s)": "14.5",
+    "year": "71"
+  },
+  {
+    "name": "Ford Pinto (Wagon)",
+    "economy (mpg)": "22",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "86",
+    "weight (lb)": "2395",
+    "0-60 mph (s)": "16",
+    "year": "72"
+  },
+  {
+    "name": "Ford Pinto Runabout",
+    "economy (mpg)": "21",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "86",
+    "weight (lb)": "2226",
+    "0-60 mph (s)": "16.5",
+    "year": "72"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "171",
+    "power (hp)": "97",
+    "weight (lb)": "2984",
+    "0-60 mph (s)": "14.5",
+    "year": "75"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "19",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "85",
+    "weight (lb)": "2310",
+    "0-60 mph (s)": "18.5",
+    "year": "73"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "83",
+    "weight (lb)": "2639",
+    "0-60 mph (s)": "17",
+    "year": "75"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "",
+    "weight (lb)": "2046",
+    "0-60 mph (s)": "19",
+    "year": "71"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "80",
+    "weight (lb)": "2451",
+    "0-60 mph (s)": "16.5",
+    "year": "74"
+  },
+  {
+    "name": "Ford Pinto",
+    "economy (mpg)": "26.5",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "72",
+    "weight (lb)": "2565",
+    "0-60 mph (s)": "13.6",
+    "year": "76"
+  },
+  {
+    "name": "Ford Ranger",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "79",
+    "weight (lb)": "2625",
+    "0-60 mph (s)": "18.6",
+    "year": "82"
+  },
+  {
+    "name": "Ford Thunderbird",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "149",
+    "weight (lb)": "4335",
+    "0-60 mph (s)": "14.5",
+    "year": "77"
+  },
+  {
+    "name": "Ford Torino (Wagon)",
+    "economy (mpg)": "",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "153",
+    "weight (lb)": "4034",
+    "0-60 mph (s)": "11",
+    "year": "70"
+  },
+  {
+    "name": "Ford Torino 500",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "88",
+    "weight (lb)": "3302",
+    "0-60 mph (s)": "15.5",
+    "year": "71"
+  },
+  {
+    "name": "Ford Torino",
+    "economy (mpg)": "17",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "140",
+    "weight (lb)": "3449",
+    "0-60 mph (s)": "10.5",
+    "year": "70"
+  },
+  {
+    "name": "Hi 1200D",
+    "economy (mpg)": "9",
+    "cylinders": "8",
+    "displacement (cc)": "304",
+    "power (hp)": "193",
+    "weight (lb)": "4732",
+    "0-60 mph (s)": "18.5",
+    "year": "70"
+  },
+  {
+    "name": "Honda Accord CVCC",
+    "economy (mpg)": "31.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "68",
+    "weight (lb)": "2045",
+    "0-60 mph (s)": "18.5",
+    "year": "77"
+  },
+  {
+    "name": "Honda Accord LX",
+    "economy (mpg)": "29.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "68",
+    "weight (lb)": "2135",
+    "0-60 mph (s)": "16.6",
+    "year": "78"
+  },
+  {
+    "name": "Honda Accord",
+    "economy (mpg)": "32.4",
+    "cylinders": "4",
+    "displacement (cc)": "107",
+    "power (hp)": "72",
+    "weight (lb)": "2290",
+    "0-60 mph (s)": "17",
+    "year": "80"
+  },
+  {
+    "name": "Honda Accord",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "107",
+    "power (hp)": "75",
+    "weight (lb)": "2205",
+    "0-60 mph (s)": "14.5",
+    "year": "82"
+  },
+  {
+    "name": "Honda Civic (Auto)",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "67",
+    "weight (lb)": "1965",
+    "0-60 mph (s)": "15.7",
+    "year": "82"
+  },
+  {
+    "name": "Honda Civic 1300",
+    "economy (mpg)": "35.1",
+    "cylinders": "4",
+    "displacement (cc)": "81",
+    "power (hp)": "60",
+    "weight (lb)": "1760",
+    "0-60 mph (s)": "16.1",
+    "year": "81"
+  },
+  {
+    "name": "Honda Civic 1500 GL",
+    "economy (mpg)": "44.6",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "67",
+    "weight (lb)": "1850",
+    "0-60 mph (s)": "13.8",
+    "year": "80"
+  },
+  {
+    "name": "Honda Civic CVCC",
+    "economy (mpg)": "33",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "53",
+    "weight (lb)": "1795",
+    "0-60 mph (s)": "17.5",
+    "year": "75"
+  },
+  {
+    "name": "Honda Civic CVCC",
+    "economy (mpg)": "36.1",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "60",
+    "weight (lb)": "1800",
+    "0-60 mph (s)": "16.4",
+    "year": "78"
+  },
+  {
+    "name": "Honda Civic",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "97",
+    "weight (lb)": "2489",
+    "0-60 mph (s)": "15",
+    "year": "74"
+  },
+  {
+    "name": "Honda Civic",
+    "economy (mpg)": "33",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "53",
+    "weight (lb)": "1795",
+    "0-60 mph (s)": "17.4",
+    "year": "76"
+  },
+  {
+    "name": "Honda Civic",
+    "economy (mpg)": "38",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "67",
+    "weight (lb)": "1965",
+    "0-60 mph (s)": "15",
+    "year": "82"
+  },
+  {
+    "name": "Honda Prelude",
+    "economy (mpg)": "33.7",
+    "cylinders": "4",
+    "displacement (cc)": "107",
+    "power (hp)": "75",
+    "weight (lb)": "2210",
+    "0-60 mph (s)": "14.4",
+    "year": "81"
+  },
+  {
+    "name": "Maxda GLC Deluxe",
+    "economy (mpg)": "34.1",
+    "cylinders": "4",
+    "displacement (cc)": "86",
+    "power (hp)": "65",
+    "weight (lb)": "1975",
+    "0-60 mph (s)": "15.2",
+    "year": "79"
+  },
+  {
+    "name": "Maxda RX-3",
+    "economy (mpg)": "18",
+    "cylinders": "3",
+    "displacement (cc)": "70",
+    "power (hp)": "90",
+    "weight (lb)": "2124",
+    "0-60 mph (s)": "13.5",
+    "year": "73"
+  },
+  {
+    "name": "Mazda 626",
+    "economy (mpg)": "31.3",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "75",
+    "weight (lb)": "2542",
+    "0-60 mph (s)": "17.5",
+    "year": "80"
+  },
+  {
+    "name": "Mazda 626",
+    "economy (mpg)": "31.6",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "74",
+    "weight (lb)": "2635",
+    "0-60 mph (s)": "18.3",
+    "year": "81"
+  },
+  {
+    "name": "Mazda GLC 4",
+    "economy (mpg)": "34.1",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "68",
+    "weight (lb)": "1985",
+    "0-60 mph (s)": "16",
+    "year": "81"
+  },
+  {
+    "name": "Mazda GLC Custom L",
+    "economy (mpg)": "37",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "68",
+    "weight (lb)": "2025",
+    "0-60 mph (s)": "18.2",
+    "year": "82"
+  },
+  {
+    "name": "Mazda GLC Custom",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "68",
+    "weight (lb)": "1970",
+    "0-60 mph (s)": "17.6",
+    "year": "82"
+  },
+  {
+    "name": "Mazda GLC Deluxe",
+    "economy (mpg)": "32.8",
+    "cylinders": "4",
+    "displacement (cc)": "78",
+    "power (hp)": "52",
+    "weight (lb)": "1985",
+    "0-60 mph (s)": "19.4",
+    "year": "78"
+  },
+  {
+    "name": "Mazda GLC",
+    "economy (mpg)": "46.6",
+    "cylinders": "4",
+    "displacement (cc)": "86",
+    "power (hp)": "65",
+    "weight (lb)": "2110",
+    "0-60 mph (s)": "17.9",
+    "year": "80"
+  },
+  {
+    "name": "Mazda RX-2 Coupe",
+    "economy (mpg)": "19",
+    "cylinders": "3",
+    "displacement (cc)": "70",
+    "power (hp)": "97",
+    "weight (lb)": "2330",
+    "0-60 mph (s)": "13.5",
+    "year": "72"
+  },
+  {
+    "name": "Mazda RX-4",
+    "economy (mpg)": "21.5",
+    "cylinders": "3",
+    "displacement (cc)": "80",
+    "power (hp)": "110",
+    "weight (lb)": "2720",
+    "0-60 mph (s)": "13.5",
+    "year": "77"
+  },
+  {
+    "name": "Mazda RX-7 Gs",
+    "economy (mpg)": "23.7",
+    "cylinders": "3",
+    "displacement (cc)": "70",
+    "power (hp)": "100",
+    "weight (lb)": "2420",
+    "0-60 mph (s)": "12.5",
+    "year": "80"
+  },
+  {
+    "name": "Mercedes-Benz 240D",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "146",
+    "power (hp)": "67",
+    "weight (lb)": "3250",
+    "0-60 mph (s)": "21.8",
+    "year": "80"
+  },
+  {
+    "name": "Mercedes-Benz 280S",
+    "economy (mpg)": "16.5",
+    "cylinders": "6",
+    "displacement (cc)": "168",
+    "power (hp)": "120",
+    "weight (lb)": "3820",
+    "0-60 mph (s)": "16.7",
+    "year": "76"
+  },
+  {
+    "name": "Mercedes-Benz 300D",
+    "economy (mpg)": "25.4",
+    "cylinders": "5",
+    "displacement (cc)": "183",
+    "power (hp)": "77",
+    "weight (lb)": "3530",
+    "0-60 mph (s)": "20.1",
+    "year": "79"
+  },
+  {
+    "name": "Mercury Capri 2000",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "86",
+    "weight (lb)": "2220",
+    "0-60 mph (s)": "14",
+    "year": "71"
+  },
+  {
+    "name": "Mercury Capri V6",
+    "economy (mpg)": "21",
+    "cylinders": "6",
+    "displacement (cc)": "155",
+    "power (hp)": "107",
+    "weight (lb)": "2472",
+    "0-60 mph (s)": "14",
+    "year": "73"
+  },
+  {
+    "name": "Mercury Cougar Brougham",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "130",
+    "weight (lb)": "4295",
+    "0-60 mph (s)": "14.9",
+    "year": "77"
+  },
+  {
+    "name": "Mercury Grand Marquis",
+    "economy (mpg)": "16.5",
+    "cylinders": "8",
+    "displacement (cc)": "351",
+    "power (hp)": "138",
+    "weight (lb)": "3955",
+    "0-60 mph (s)": "13.2",
+    "year": "79"
+  },
+  {
+    "name": "Mercury Lynx L",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "70",
+    "weight (lb)": "2125",
+    "0-60 mph (s)": "17.3",
+    "year": "82"
+  },
+  {
+    "name": "Mercury Marquis Brougham",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "429",
+    "power (hp)": "198",
+    "weight (lb)": "4952",
+    "0-60 mph (s)": "11.5",
+    "year": "73"
+  },
+  {
+    "name": "Mercury Marquis",
+    "economy (mpg)": "11",
+    "cylinders": "8",
+    "displacement (cc)": "429",
+    "power (hp)": "208",
+    "weight (lb)": "4633",
+    "0-60 mph (s)": "11",
+    "year": "72"
+  },
+  {
+    "name": "Mercury Monarch Ghia",
+    "economy (mpg)": "20.2",
+    "cylinders": "8",
+    "displacement (cc)": "302",
+    "power (hp)": "139",
+    "weight (lb)": "3570",
+    "0-60 mph (s)": "12.8",
+    "year": "78"
+  },
+  {
+    "name": "Mercury Monarch",
+    "economy (mpg)": "15",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "72",
+    "weight (lb)": "3432",
+    "0-60 mph (s)": "21",
+    "year": "75"
+  },
+  {
+    "name": "Mercury Zephyr 6",
+    "economy (mpg)": "19.8",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "85",
+    "weight (lb)": "2990",
+    "0-60 mph (s)": "18.2",
+    "year": "79"
+  },
+  {
+    "name": "Mercury Zephyr",
+    "economy (mpg)": "20.8",
+    "cylinders": "6",
+    "displacement (cc)": "200",
+    "power (hp)": "85",
+    "weight (lb)": "3070",
+    "0-60 mph (s)": "16.7",
+    "year": "78"
+  },
+  {
+    "name": "Nissan Stanza XE",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "88",
+    "weight (lb)": "2160",
+    "0-60 mph (s)": "14.5",
+    "year": "82"
+  },
+  {
+    "name": "Oldsmobile Cutlass Ciera (Diesel)",
+    "economy (mpg)": "38",
+    "cylinders": "6",
+    "displacement (cc)": "262",
+    "power (hp)": "85",
+    "weight (lb)": "3015",
+    "0-60 mph (s)": "17",
+    "year": "82"
+  },
+  {
+    "name": "Oldsmobile Cutlass LS",
+    "economy (mpg)": "26.6",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "105",
+    "weight (lb)": "3725",
+    "0-60 mph (s)": "19",
+    "year": "81"
+  },
+  {
+    "name": "Oldsmobile Cutlass Salon Brougham",
+    "economy (mpg)": "19.9",
+    "cylinders": "8",
+    "displacement (cc)": "260",
+    "power (hp)": "110",
+    "weight (lb)": "3365",
+    "0-60 mph (s)": "15.5",
+    "year": "78"
+  },
+  {
+    "name": "Oldsmobile Cutlass Salon Brougham",
+    "economy (mpg)": "23.9",
+    "cylinders": "8",
+    "displacement (cc)": "260",
+    "power (hp)": "90",
+    "weight (lb)": "3420",
+    "0-60 mph (s)": "22.2",
+    "year": "79"
+  },
+  {
+    "name": "Oldsmobile Cutlass Supreme",
+    "economy (mpg)": "17",
+    "cylinders": "8",
+    "displacement (cc)": "260",
+    "power (hp)": "110",
+    "weight (lb)": "4060",
+    "0-60 mph (s)": "19",
+    "year": "77"
+  },
+  {
+    "name": "Oldsmobile Delta 88 Royale",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "160",
+    "weight (lb)": "4456",
+    "0-60 mph (s)": "13.5",
+    "year": "72"
+  },
+  {
+    "name": "Oldsmobile Omega Brougham",
+    "economy (mpg)": "26.8",
+    "cylinders": "6",
+    "displacement (cc)": "173",
+    "power (hp)": "115",
+    "weight (lb)": "2700",
+    "0-60 mph (s)": "12.9",
+    "year": "79"
+  },
+  {
+    "name": "Oldsmobile Omega",
+    "economy (mpg)": "11",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "180",
+    "weight (lb)": "3664",
+    "0-60 mph (s)": "11",
+    "year": "73"
+  },
+  {
+    "name": "Oldsmobile Starfire SX",
+    "economy (mpg)": "23.8",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "85",
+    "weight (lb)": "2855",
+    "0-60 mph (s)": "17.6",
+    "year": "78"
+  },
+  {
+    "name": "Oldsmobile Vista Cruiser",
+    "economy (mpg)": "12",
+    "cylinders": "8",
+    "displacement (cc)": "350",
+    "power (hp)": "180",
+    "weight (lb)": "4499",
+    "0-60 mph (s)": "12.5",
+    "year": "73"
+  },
+  {
+    "name": "Opel 1900",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "116",
+    "power (hp)": "81",
+    "weight (lb)": "2220",
+    "0-60 mph (s)": "16.9",
+    "year": "76"
+  },
+  {
+    "name": "Opel 1900",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "116",
+    "power (hp)": "90",
+    "weight (lb)": "2123",
+    "0-60 mph (s)": "14",
+    "year": "71"
+  },
+  {
+    "name": "Opel Manta",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "116",
+    "power (hp)": "75",
+    "weight (lb)": "2158",
+    "0-60 mph (s)": "15.5",
+    "year": "73"
+  },
+  {
+    "name": "Opel Manta",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "78",
+    "weight (lb)": "2300",
+    "0-60 mph (s)": "14.5",
+    "year": "74"
+  },
+  {
+    "name": "Peugeot 304",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "70",
+    "weight (lb)": "2074",
+    "0-60 mph (s)": "19.5",
+    "year": "71"
+  },
+  {
+    "name": "Peugeot 504 (Wagon)",
+    "economy (mpg)": "21",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "87",
+    "weight (lb)": "2979",
+    "0-60 mph (s)": "19.5",
+    "year": "72"
+  },
+  {
+    "name": "Peugeot 504",
+    "economy (mpg)": "19",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "88",
+    "weight (lb)": "3270",
+    "0-60 mph (s)": "21.9",
+    "year": "76"
+  },
+  {
+    "name": "Peugeot 504",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "88",
+    "weight (lb)": "2957",
+    "0-60 mph (s)": "17",
+    "year": "75"
+  },
+  {
+    "name": "Peugeot 504",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "110",
+    "power (hp)": "87",
+    "weight (lb)": "2672",
+    "0-60 mph (s)": "17.5",
+    "year": "70"
+  },
+  {
+    "name": "Peugeot 504",
+    "economy (mpg)": "27.2",
+    "cylinders": "4",
+    "displacement (cc)": "141",
+    "power (hp)": "71",
+    "weight (lb)": "3190",
+    "0-60 mph (s)": "24.8",
+    "year": "79"
+  },
+  {
+    "name": "Peugeot 505S Turbo Diesel",
+    "economy (mpg)": "28.1",
+    "cylinders": "4",
+    "displacement (cc)": "141",
+    "power (hp)": "80",
+    "weight (lb)": "3230",
+    "0-60 mph (s)": "20.4",
+    "year": "81"
+  },
+  {
+    "name": "Peugeot 604SL",
+    "economy (mpg)": "16.2",
+    "cylinders": "6",
+    "displacement (cc)": "163",
+    "power (hp)": "133",
+    "weight (lb)": "3410",
+    "0-60 mph (s)": "15.8",
+    "year": "78"
+  },
+  {
+    "name": "Plymouth Arrow GS",
+    "economy (mpg)": "25.5",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "96",
+    "weight (lb)": "2300",
+    "0-60 mph (s)": "15.5",
+    "year": "77"
+  },
+  {
+    "name": "Plymouth Barracuda 340",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "340",
+    "power (hp)": "160",
+    "weight (lb)": "3609",
+    "0-60 mph (s)": "8",
+    "year": "70"
+  },
+  {
+    "name": "Plymouth Champ",
+    "economy (mpg)": "39",
+    "cylinders": "4",
+    "displacement (cc)": "86",
+    "power (hp)": "64",
+    "weight (lb)": "1875",
+    "0-60 mph (s)": "16.4",
+    "year": "81"
+  },
+  {
+    "name": "Plymouth Cricket",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "91",
+    "power (hp)": "70",
+    "weight (lb)": "1955",
+    "0-60 mph (s)": "20.5",
+    "year": "71"
+  },
+  {
+    "name": "Plymouth Custom Suburb",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "360",
+    "power (hp)": "170",
+    "weight (lb)": "4654",
+    "0-60 mph (s)": "13",
+    "year": "73"
+  },
+  {
+    "name": "Plymouth Duster",
+    "economy (mpg)": "20",
+    "cylinders": "6",
+    "displacement (cc)": "198",
+    "power (hp)": "95",
+    "weight (lb)": "3102",
+    "0-60 mph (s)": "16.5",
+    "year": "74"
+  },
+  {
+    "name": "Plymouth Duster",
+    "economy (mpg)": "22",
+    "cylinders": "6",
+    "displacement (cc)": "198",
+    "power (hp)": "95",
+    "weight (lb)": "2833",
+    "0-60 mph (s)": "15.5",
+    "year": "70"
+  },
+  {
+    "name": "Plymouth Duster",
+    "economy (mpg)": "23",
+    "cylinders": "6",
+    "displacement (cc)": "198",
+    "power (hp)": "95",
+    "weight (lb)": "2904",
+    "0-60 mph (s)": "16",
+    "year": "73"
+  },
+  {
+    "name": "Plymouth Fury Gran Sedan",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4237",
+    "0-60 mph (s)": "14.5",
+    "year": "73"
+  },
+  {
+    "name": "Plymouth Fury III",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4096",
+    "0-60 mph (s)": "13",
+    "year": "71"
+  },
+  {
+    "name": "Plymouth Fury III",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "440",
+    "power (hp)": "215",
+    "weight (lb)": "4312",
+    "0-60 mph (s)": "8.5",
+    "year": "70"
+  },
+  {
+    "name": "Plymouth Fury III",
+    "economy (mpg)": "15",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4135",
+    "0-60 mph (s)": "13.5",
+    "year": "72"
+  },
+  {
+    "name": "Plymouth Fury",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "95",
+    "weight (lb)": "3785",
+    "0-60 mph (s)": "19",
+    "year": "75"
+  },
+  {
+    "name": "Plymouth Grand Fury",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4498",
+    "0-60 mph (s)": "14.5",
+    "year": "75"
+  },
+  {
+    "name": "Plymouth Horizon 4",
+    "economy (mpg)": "34.7",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "63",
+    "weight (lb)": "2215",
+    "0-60 mph (s)": "14.9",
+    "year": "81"
+  },
+  {
+    "name": "Plymouth Horizon Miser",
+    "economy (mpg)": "38",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "63",
+    "weight (lb)": "2125",
+    "0-60 mph (s)": "14.7",
+    "year": "82"
+  },
+  {
+    "name": "Plymouth Horizon TC3",
+    "economy (mpg)": "34.5",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "70",
+    "weight (lb)": "2150",
+    "0-60 mph (s)": "14.9",
+    "year": "79"
+  },
+  {
+    "name": "Plymouth Horizon",
+    "economy (mpg)": "34.2",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "70",
+    "weight (lb)": "2200",
+    "0-60 mph (s)": "13.2",
+    "year": "79"
+  },
+  {
+    "name": "Plymouth Reliant",
+    "economy (mpg)": "27.2",
+    "cylinders": "4",
+    "displacement (cc)": "135",
+    "power (hp)": "84",
+    "weight (lb)": "2490",
+    "0-60 mph (s)": "15.7",
+    "year": "81"
+  },
+  {
+    "name": "Plymouth Reliant",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "135",
+    "power (hp)": "84",
+    "weight (lb)": "2385",
+    "0-60 mph (s)": "12.9",
+    "year": "81"
+  },
+  {
+    "name": "Plymouth Sapporo",
+    "economy (mpg)": "23.2",
+    "cylinders": "4",
+    "displacement (cc)": "156",
+    "power (hp)": "105",
+    "weight (lb)": "2745",
+    "0-60 mph (s)": "16.7",
+    "year": "78"
+  },
+  {
+    "name": "Plymouth Satellite (Wagon)",
+    "economy (mpg)": "",
+    "cylinders": "8",
+    "displacement (cc)": "383",
+    "power (hp)": "175",
+    "weight (lb)": "4166",
+    "0-60 mph (s)": "10.5",
+    "year": "70"
+  },
+  {
+    "name": "Plymouth Satellite Custom (Wagon)",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "4077",
+    "0-60 mph (s)": "14",
+    "year": "72"
+  },
+  {
+    "name": "Plymouth Satellite Custom",
+    "economy (mpg)": "16",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "105",
+    "weight (lb)": "3439",
+    "0-60 mph (s)": "15.5",
+    "year": "71"
+  },
+  {
+    "name": "Plymouth Satellite Sebring",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "105",
+    "weight (lb)": "3613",
+    "0-60 mph (s)": "16.5",
+    "year": "74"
+  },
+  {
+    "name": "Plymouth Satellite",
+    "economy (mpg)": "18",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "3436",
+    "0-60 mph (s)": "11",
+    "year": "70"
+  },
+  {
+    "name": "Plymouth Valiant Custom",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "95",
+    "weight (lb)": "3264",
+    "0-60 mph (s)": "16",
+    "year": "75"
+  },
+  {
+    "name": "Plymouth Valiant",
+    "economy (mpg)": "18",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "105",
+    "weight (lb)": "3121",
+    "0-60 mph (s)": "16.5",
+    "year": "73"
+  },
+  {
+    "name": "Plymouth Valiant",
+    "economy (mpg)": "22",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "100",
+    "weight (lb)": "3233",
+    "0-60 mph (s)": "15.4",
+    "year": "76"
+  },
+  {
+    "name": "Plymouth Volare Custom",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "100",
+    "weight (lb)": "3630",
+    "0-60 mph (s)": "17.7",
+    "year": "77"
+  },
+  {
+    "name": "Plymouth Volare Premier V8",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "318",
+    "power (hp)": "150",
+    "weight (lb)": "3940",
+    "0-60 mph (s)": "13.2",
+    "year": "76"
+  },
+  {
+    "name": "Plymouth Volare",
+    "economy (mpg)": "20.5",
+    "cylinders": "6",
+    "displacement (cc)": "225",
+    "power (hp)": "100",
+    "weight (lb)": "3430",
+    "0-60 mph (s)": "17.2",
+    "year": "78"
+  },
+  {
+    "name": "Pontiac Astro",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "140",
+    "power (hp)": "78",
+    "weight (lb)": "2592",
+    "0-60 mph (s)": "18.5",
+    "year": "75"
+  },
+  {
+    "name": "Pontiac Catalina Brougham",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "175",
+    "weight (lb)": "4464",
+    "0-60 mph (s)": "11.5",
+    "year": "71"
+  },
+  {
+    "name": "Pontiac Catalina",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "175",
+    "weight (lb)": "4385",
+    "0-60 mph (s)": "12",
+    "year": "72"
+  },
+  {
+    "name": "Pontiac Catalina",
+    "economy (mpg)": "14",
+    "cylinders": "8",
+    "displacement (cc)": "455",
+    "power (hp)": "225",
+    "weight (lb)": "4425",
+    "0-60 mph (s)": "10",
+    "year": "70"
+  },
+  {
+    "name": "Pontiac Catalina",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "170",
+    "weight (lb)": "4668",
+    "0-60 mph (s)": "11.5",
+    "year": "75"
+  },
+  {
+    "name": "Pontiac Firebird",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "100",
+    "weight (lb)": "3282",
+    "0-60 mph (s)": "15",
+    "year": "71"
+  },
+  {
+    "name": "Pontiac Grand Prix Lj",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "180",
+    "weight (lb)": "4220",
+    "0-60 mph (s)": "11.1",
+    "year": "77"
+  },
+  {
+    "name": "Pontiac Grand Prix",
+    "economy (mpg)": "16",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "230",
+    "weight (lb)": "4278",
+    "0-60 mph (s)": "9.5",
+    "year": "73"
+  },
+  {
+    "name": "Pontiac J2000 Se Hatchback",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "112",
+    "power (hp)": "85",
+    "weight (lb)": "2575",
+    "0-60 mph (s)": "16.2",
+    "year": "82"
+  },
+  {
+    "name": "Pontiac Lemans V6",
+    "economy (mpg)": "21.5",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "115",
+    "weight (lb)": "3245",
+    "0-60 mph (s)": "15.4",
+    "year": "79"
+  },
+  {
+    "name": "Pontiac Phoenix LJ",
+    "economy (mpg)": "19.2",
+    "cylinders": "6",
+    "displacement (cc)": "231",
+    "power (hp)": "105",
+    "weight (lb)": "3535",
+    "0-60 mph (s)": "19.2",
+    "year": "78"
+  },
+  {
+    "name": "Pontiac Phoenix",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "2735",
+    "0-60 mph (s)": "18",
+    "year": "82"
+  },
+  {
+    "name": "Pontiac Phoenix",
+    "economy (mpg)": "33.5",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "90",
+    "weight (lb)": "2556",
+    "0-60 mph (s)": "13.2",
+    "year": "79"
+  },
+  {
+    "name": "Pontiac Safari (Wagon)",
+    "economy (mpg)": "13",
+    "cylinders": "8",
+    "displacement (cc)": "400",
+    "power (hp)": "175",
+    "weight (lb)": "5140",
+    "0-60 mph (s)": "12",
+    "year": "71"
+  },
+  {
+    "name": "Pontiac Sunbird Coupe",
+    "economy (mpg)": "24.5",
+    "cylinders": "4",
+    "displacement (cc)": "151",
+    "power (hp)": "88",
+    "weight (lb)": "2740",
+    "0-60 mph (s)": "16",
+    "year": "77"
+  },
+  {
+    "name": "Pontiac Ventura Sj",
+    "economy (mpg)": "18.5",
+    "cylinders": "6",
+    "displacement (cc)": "250",
+    "power (hp)": "110",
+    "weight (lb)": "3645",
+    "0-60 mph (s)": "16.2",
+    "year": "76"
+  },
+  {
+    "name": "Renault 12 (Wagon)",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "96",
+    "power (hp)": "69",
+    "weight (lb)": "2189",
+    "0-60 mph (s)": "18",
+    "year": "72"
+  },
+  {
+    "name": "Renault 12TL",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "101",
+    "power (hp)": "83",
+    "weight (lb)": "2202",
+    "0-60 mph (s)": "15.3",
+    "year": "76"
+  },
+  {
+    "name": "Renault 18I",
+    "economy (mpg)": "34.5",
+    "cylinders": "4",
+    "displacement (cc)": "100",
+    "power (hp)": "",
+    "weight (lb)": "2320",
+    "0-60 mph (s)": "15.8",
+    "year": "81"
+  },
+  {
+    "name": "Renault 5 Gtl",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "58",
+    "weight (lb)": "1825",
+    "0-60 mph (s)": "18.6",
+    "year": "77"
+  },
+  {
+    "name": "Renault Lecar Deluxe",
+    "economy (mpg)": "40.9",
+    "cylinders": "4",
+    "displacement (cc)": "85",
+    "power (hp)": "",
+    "weight (lb)": "1835",
+    "0-60 mph (s)": "17.3",
+    "year": "80"
+  },
+  {
+    "name": "Saab 900S",
+    "economy (mpg)": "",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "110",
+    "weight (lb)": "2800",
+    "0-60 mph (s)": "15.4",
+    "year": "81"
+  },
+  {
+    "name": "Saab 99E",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "104",
+    "power (hp)": "95",
+    "weight (lb)": "2375",
+    "0-60 mph (s)": "17.5",
+    "year": "70"
+  },
+  {
+    "name": "Saab 99GLE",
+    "economy (mpg)": "21.6",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "115",
+    "weight (lb)": "2795",
+    "0-60 mph (s)": "15.7",
+    "year": "78"
+  },
+  {
+    "name": "Saab 99LE",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "110",
+    "weight (lb)": "2660",
+    "0-60 mph (s)": "14",
+    "year": "73"
+  },
+  {
+    "name": "Saab 99LE",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "115",
+    "weight (lb)": "2671",
+    "0-60 mph (s)": "13.5",
+    "year": "75"
+  },
+  {
+    "name": "Subaru DL",
+    "economy (mpg)": "30",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "67",
+    "weight (lb)": "1985",
+    "0-60 mph (s)": "16.4",
+    "year": "77"
+  },
+  {
+    "name": "Subaru DL",
+    "economy (mpg)": "33.8",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "67",
+    "weight (lb)": "2145",
+    "0-60 mph (s)": "18",
+    "year": "80"
+  },
+  {
+    "name": "Subaru",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "108",
+    "power (hp)": "93",
+    "weight (lb)": "2391",
+    "0-60 mph (s)": "15.5",
+    "year": "74"
+  },
+  {
+    "name": "Subaru",
+    "economy (mpg)": "32.3",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "67",
+    "weight (lb)": "2065",
+    "0-60 mph (s)": "17.8",
+    "year": "81"
+  },
+  {
+    "name": "Toyota Carina",
+    "economy (mpg)": "20",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "88",
+    "weight (lb)": "2279",
+    "0-60 mph (s)": "19",
+    "year": "73"
+  },
+  {
+    "name": "Toyota Celica GT Liftback",
+    "economy (mpg)": "21.1",
+    "cylinders": "4",
+    "displacement (cc)": "134",
+    "power (hp)": "95",
+    "weight (lb)": "2515",
+    "0-60 mph (s)": "14.8",
+    "year": "78"
+  },
+  {
+    "name": "Toyota Celica GT",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "144",
+    "power (hp)": "96",
+    "weight (lb)": "2665",
+    "0-60 mph (s)": "13.9",
+    "year": "82"
+  },
+  {
+    "name": "Toyota Corolla 1200",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "71",
+    "power (hp)": "65",
+    "weight (lb)": "1773",
+    "0-60 mph (s)": "19",
+    "year": "71"
+  },
+  {
+    "name": "Toyota Corolla 1200",
+    "economy (mpg)": "32",
+    "cylinders": "4",
+    "displacement (cc)": "71",
+    "power (hp)": "65",
+    "weight (lb)": "1836",
+    "0-60 mph (s)": "21",
+    "year": "74"
+  },
+  {
+    "name": "Toyota Corolla 1600 (Wagon)",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "88",
+    "weight (lb)": "2100",
+    "0-60 mph (s)": "16.5",
+    "year": "72"
+  },
+  {
+    "name": "Toyota Corolla Liftback",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "75",
+    "weight (lb)": "2265",
+    "0-60 mph (s)": "18.2",
+    "year": "77"
+  },
+  {
+    "name": "Toyota Corolla Tercel",
+    "economy (mpg)": "38.1",
+    "cylinders": "4",
+    "displacement (cc)": "89",
+    "power (hp)": "60",
+    "weight (lb)": "1968",
+    "0-60 mph (s)": "18.8",
+    "year": "80"
+  },
+  {
+    "name": "Toyota Corolla",
+    "economy (mpg)": "28",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "75",
+    "weight (lb)": "2155",
+    "0-60 mph (s)": "16.4",
+    "year": "76"
+  },
+  {
+    "name": "Toyota Corolla",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "75",
+    "weight (lb)": "2171",
+    "0-60 mph (s)": "16",
+    "year": "75"
+  },
+  {
+    "name": "Toyota Corolla",
+    "economy (mpg)": "32.2",
+    "cylinders": "4",
+    "displacement (cc)": "108",
+    "power (hp)": "75",
+    "weight (lb)": "2265",
+    "0-60 mph (s)": "15.2",
+    "year": "80"
+  },
+  {
+    "name": "Toyota Corolla",
+    "economy (mpg)": "32.4",
+    "cylinders": "4",
+    "displacement (cc)": "108",
+    "power (hp)": "75",
+    "weight (lb)": "2350",
+    "0-60 mph (s)": "16.8",
+    "year": "81"
+  },
+  {
+    "name": "Toyota Corolla",
+    "economy (mpg)": "34",
+    "cylinders": "4",
+    "displacement (cc)": "108",
+    "power (hp)": "70",
+    "weight (lb)": "2245",
+    "0-60 mph (s)": "16.9",
+    "year": "82"
+  },
+  {
+    "name": "Toyota Corona Hardtop",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "113",
+    "power (hp)": "95",
+    "weight (lb)": "2278",
+    "0-60 mph (s)": "15.5",
+    "year": "72"
+  },
+  {
+    "name": "Toyota Corona Liftback",
+    "economy (mpg)": "29.8",
+    "cylinders": "4",
+    "displacement (cc)": "134",
+    "power (hp)": "90",
+    "weight (lb)": "2711",
+    "0-60 mph (s)": "15.5",
+    "year": "80"
+  },
+  {
+    "name": "Toyota Corona Mark II",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "113",
+    "power (hp)": "95",
+    "weight (lb)": "2372",
+    "0-60 mph (s)": "15",
+    "year": "70"
+  },
+  {
+    "name": "Toyota Corona",
+    "economy (mpg)": "24",
+    "cylinders": "4",
+    "displacement (cc)": "134",
+    "power (hp)": "96",
+    "weight (lb)": "2702",
+    "0-60 mph (s)": "13.5",
+    "year": "75"
+  },
+  {
+    "name": "Toyota Corona",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "113",
+    "power (hp)": "95",
+    "weight (lb)": "2228",
+    "0-60 mph (s)": "14",
+    "year": "71"
+  },
+  {
+    "name": "Toyota Corona",
+    "economy (mpg)": "27.5",
+    "cylinders": "4",
+    "displacement (cc)": "134",
+    "power (hp)": "95",
+    "weight (lb)": "2560",
+    "0-60 mph (s)": "14.2",
+    "year": "78"
+  },
+  {
+    "name": "Toyota Corona",
+    "economy (mpg)": "31",
+    "cylinders": "4",
+    "displacement (cc)": "76",
+    "power (hp)": "52",
+    "weight (lb)": "1649",
+    "0-60 mph (s)": "16.5",
+    "year": "74"
+  },
+  {
+    "name": "Toyota Cressida",
+    "economy (mpg)": "25.4",
+    "cylinders": "6",
+    "displacement (cc)": "168",
+    "power (hp)": "116",
+    "weight (lb)": "2900",
+    "0-60 mph (s)": "12.6",
+    "year": "81"
+  },
+  {
+    "name": "Toyota Mark II",
+    "economy (mpg)": "19",
+    "cylinders": "6",
+    "displacement (cc)": "156",
+    "power (hp)": "108",
+    "weight (lb)": "2930",
+    "0-60 mph (s)": "15.5",
+    "year": "76"
+  },
+  {
+    "name": "Toyota Mark II",
+    "economy (mpg)": "20",
+    "cylinders": "6",
+    "displacement (cc)": "156",
+    "power (hp)": "122",
+    "weight (lb)": "2807",
+    "0-60 mph (s)": "13.5",
+    "year": "73"
+  },
+  {
+    "name": "Toyota Starlet",
+    "economy (mpg)": "39.1",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "58",
+    "weight (lb)": "1755",
+    "0-60 mph (s)": "16.9",
+    "year": "81"
+  },
+  {
+    "name": "Toyota Tercel",
+    "economy (mpg)": "37.7",
+    "cylinders": "4",
+    "displacement (cc)": "89",
+    "power (hp)": "62",
+    "weight (lb)": "2050",
+    "0-60 mph (s)": "17.3",
+    "year": "81"
+  },
+  {
+    "name": "Toyouta Corona Mark II (Wagon)",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "120",
+    "power (hp)": "97",
+    "weight (lb)": "2506",
+    "0-60 mph (s)": "14.5",
+    "year": "72"
+  },
+  {
+    "name": "Triumph TR7 Coupe",
+    "economy (mpg)": "35",
+    "cylinders": "4",
+    "displacement (cc)": "122",
+    "power (hp)": "88",
+    "weight (lb)": "2500",
+    "0-60 mph (s)": "15.1",
+    "year": "80"
+  },
+  {
+    "name": "Vokswagen Rabbit",
+    "economy (mpg)": "29.8",
+    "cylinders": "4",
+    "displacement (cc)": "89",
+    "power (hp)": "62",
+    "weight (lb)": "1845",
+    "0-60 mph (s)": "15.3",
+    "year": "80"
+  },
+  {
+    "name": "Volkswagen 1131 Deluxe Sedan",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "46",
+    "weight (lb)": "1835",
+    "0-60 mph (s)": "20.5",
+    "year": "70"
+  },
+  {
+    "name": "Volkswagen 411 (Wagon)",
+    "economy (mpg)": "22",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "76",
+    "weight (lb)": "2511",
+    "0-60 mph (s)": "18",
+    "year": "72"
+  },
+  {
+    "name": "Volkswagen Dasher (Diesel)",
+    "economy (mpg)": "43.4",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "48",
+    "weight (lb)": "2335",
+    "0-60 mph (s)": "23.7",
+    "year": "80"
+  },
+  {
+    "name": "Volkswagen Dasher",
+    "economy (mpg)": "25",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "71",
+    "weight (lb)": "2223",
+    "0-60 mph (s)": "16.5",
+    "year": "75"
+  },
+  {
+    "name": "Volkswagen Dasher",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "79",
+    "power (hp)": "67",
+    "weight (lb)": "1963",
+    "0-60 mph (s)": "15.5",
+    "year": "74"
+  },
+  {
+    "name": "Volkswagen Dasher",
+    "economy (mpg)": "30.5",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "78",
+    "weight (lb)": "2190",
+    "0-60 mph (s)": "14.1",
+    "year": "77"
+  },
+  {
+    "name": "Volkswagen Jetta",
+    "economy (mpg)": "33",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "74",
+    "weight (lb)": "2190",
+    "0-60 mph (s)": "14.2",
+    "year": "81"
+  },
+  {
+    "name": "Volkswagen Model 111",
+    "economy (mpg)": "27",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "60",
+    "weight (lb)": "1834",
+    "0-60 mph (s)": "19",
+    "year": "71"
+  },
+  {
+    "name": "Volkswagen Pickup",
+    "economy (mpg)": "44",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "52",
+    "weight (lb)": "2130",
+    "0-60 mph (s)": "24.6",
+    "year": "82"
+  },
+  {
+    "name": "Volkswagen Rabbit C (Diesel)",
+    "economy (mpg)": "44.3",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "48",
+    "weight (lb)": "2085",
+    "0-60 mph (s)": "21.7",
+    "year": "80"
+  },
+  {
+    "name": "Volkswagen Rabbit Custom Diesel",
+    "economy (mpg)": "43.1",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "48",
+    "weight (lb)": "1985",
+    "0-60 mph (s)": "21.5",
+    "year": "78"
+  },
+  {
+    "name": "Volkswagen Rabbit Custom",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "78",
+    "weight (lb)": "1940",
+    "0-60 mph (s)": "14.5",
+    "year": "77"
+  },
+  {
+    "name": "Volkswagen Rabbit Custom",
+    "economy (mpg)": "31.9",
+    "cylinders": "4",
+    "displacement (cc)": "89",
+    "power (hp)": "71",
+    "weight (lb)": "1925",
+    "0-60 mph (s)": "14",
+    "year": "79"
+  },
+  {
+    "name": "Volkswagen Rabbit L",
+    "economy (mpg)": "36",
+    "cylinders": "4",
+    "displacement (cc)": "105",
+    "power (hp)": "74",
+    "weight (lb)": "1980",
+    "0-60 mph (s)": "15.3",
+    "year": "82"
+  },
+  {
+    "name": "Volkswagen Rabbit",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "70",
+    "weight (lb)": "1937",
+    "0-60 mph (s)": "14",
+    "year": "75"
+  },
+  {
+    "name": "Volkswagen Rabbit",
+    "economy (mpg)": "29",
+    "cylinders": "4",
+    "displacement (cc)": "90",
+    "power (hp)": "70",
+    "weight (lb)": "1937",
+    "0-60 mph (s)": "14.2",
+    "year": "76"
+  },
+  {
+    "name": "Volkswagen Rabbit",
+    "economy (mpg)": "29.5",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "71",
+    "weight (lb)": "1825",
+    "0-60 mph (s)": "12.2",
+    "year": "76"
+  },
+  {
+    "name": "Volkswagen Rabbit",
+    "economy (mpg)": "41.5",
+    "cylinders": "4",
+    "displacement (cc)": "98",
+    "power (hp)": "76",
+    "weight (lb)": "2144",
+    "0-60 mph (s)": "14.7",
+    "year": "80"
+  },
+  {
+    "name": "Volkswagen Scirocco",
+    "economy (mpg)": "31.5",
+    "cylinders": "4",
+    "displacement (cc)": "89",
+    "power (hp)": "71",
+    "weight (lb)": "1990",
+    "0-60 mph (s)": "14.9",
+    "year": "78"
+  },
+  {
+    "name": "Volkswagen Super Beetle 117",
+    "economy (mpg)": "",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "48",
+    "weight (lb)": "1978",
+    "0-60 mph (s)": "20",
+    "year": "71"
+  },
+  {
+    "name": "Volkswagen Super Beetle",
+    "economy (mpg)": "26",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "46",
+    "weight (lb)": "1950",
+    "0-60 mph (s)": "21",
+    "year": "73"
+  },
+  {
+    "name": "Volkswagen Type 3",
+    "economy (mpg)": "23",
+    "cylinders": "4",
+    "displacement (cc)": "97",
+    "power (hp)": "54",
+    "weight (lb)": "2254",
+    "0-60 mph (s)": "23.5",
+    "year": "72"
+  },
+  {
+    "name": "Volvo 144EA",
+    "economy (mpg)": "19",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "112",
+    "weight (lb)": "2868",
+    "0-60 mph (s)": "15.5",
+    "year": "73"
+  },
+  {
+    "name": "Volvo 145E (Wagon)",
+    "economy (mpg)": "18",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "112",
+    "weight (lb)": "2933",
+    "0-60 mph (s)": "14.5",
+    "year": "72"
+  },
+  {
+    "name": "Volvo 244DL",
+    "economy (mpg)": "22",
+    "cylinders": "4",
+    "displacement (cc)": "121",
+    "power (hp)": "98",
+    "weight (lb)": "2945",
+    "0-60 mph (s)": "14.5",
+    "year": "75"
+  },
+  {
+    "name": "Volvo 245",
+    "economy (mpg)": "20",
+    "cylinders": "4",
+    "displacement (cc)": "130",
+    "power (hp)": "102",
+    "weight (lb)": "3150",
+    "0-60 mph (s)": "15.7",
+    "year": "76"
+  },
+  {
+    "name": "Volvo 264GL",
+    "economy (mpg)": "17",
+    "cylinders": "6",
+    "displacement (cc)": "163",
+    "power (hp)": "125",
+    "weight (lb)": "3140",
+    "0-60 mph (s)": "13.6",
+    "year": "78"
+  },
+  {
+    "name": "Volvo Diesel",
+    "economy (mpg)": "30.7",
+    "cylinders": "6",
+    "displacement (cc)": "145",
+    "power (hp)": "76",
+    "weight (lb)": "3160",
+    "0-60 mph (s)": "19.6",
+    "year": "81"
+  }
+]
+}
+
+    </script>
+  </body>
+</html>
diff --git a/examples/pie.html b/examples/pie.html
new file mode 100644
index 0000000..3ba3f2b
--- /dev/null
+++ b/examples/pie.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<svg id="test2"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/pie.js"></script>
+<script> 
+
+  var testdata = [
+    { 
+      key: "One",
+      y: 5
+    },
+    { 
+      key: "Two",
+      y: 2
+    },
+    { 
+      key: "Three",
+      y: 9
+    },
+    { 
+      key: "Four",
+      y: 7
+    },
+    { 
+      key: "Five",
+      y: 4
+    },
+    {
+        key: "Six",
+        y: 3
+    }
+  ];
+
+
+nv.addGraph(function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height / 2 - 40;
+
+    var chart = nv.models.pie()
+        .values(function(d) { return d })
+        .width(width)
+        .height(height);
+
+    d3.select("#test1")
+        .datum([testdata])
+      .transition().duration(1200)
+        .attr('width', width)
+        .attr('height', height)
+        .call(chart);
+
+    return chart;
+});
+
+nv.addGraph(function() {
+    var width = nv.utils.windowSize().width - 40,
+        height = nv.utils.windowSize().height / 2 - 40;
+
+    var chart = nv.models.pie()
+        .values(function(d) { return d })
+        .width(width)
+        .height(height)
+        .donut(true);
+
+    d3.select("#test2")
+        .datum([testdata])
+      .transition().duration(1200)
+        .attr('width', width)
+        .attr('height', height)
+        .call(chart);
+
+    return chart;
+});
+
+</script>
diff --git a/examples/pieChart.html b/examples/pieChart.html
new file mode 100644
index 0000000..bdb3de9
--- /dev/null
+++ b/examples/pieChart.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+.mypiechart {
+  width: 500px;
+  border: 2px;
+}
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+<h2>Test1</h2>
+<svg id="test1" class="mypiechart"></svg>
+
+<h2>Test2</h2>
+<svg id="test2" class="mypiechart"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/pie.js"></script>
+<script src="../src/models/pieChart.js"></script>
+<script src="../src/utils.js"></script>
+<script>
+
+  var testdata = [
+    {
+      key: "One",
+      y: 5
+    },
+    {
+      key: "Two",
+      y: 2
+    },
+    {
+      key: "Three",
+      y: 9
+    },
+    {
+      key: "Four",
+      y: 7
+    },
+    {
+      key: "Five",
+      y: 4
+    },
+    {
+      key: "Six",
+      y: 3
+    },
+    {
+      key: "Seven",
+      y: .5
+    }
+  ];
+
+
+nv.addGraph(function() {
+    var width = 500,
+        height = 500;
+
+    var chart = nv.models.pieChart()
+        .x(function(d) { return d.key })
+        .y(function(d) { return d.y })
+        .color(d3.scale.category10().range())
+        .width(width)
+        .height(height);
+
+      d3.select("#test1")
+          .datum(testdata)
+        .transition().duration(1200)
+          .attr('width', width)
+          .attr('height', height)
+          .call(chart);
+
+    chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+    return chart;
+});
+
+nv.addGraph(function() {
+
+    var width = 500,
+        height = 500;
+
+    var chart = nv.models.pieChart()
+        .x(function(d) { return d.key })
+        //.y(function(d) { return d.value })
+        //.labelThreshold(.08)
+        //.showLabels(false)
+        .color(d3.scale.category10().range())
+        .width(width)
+        .height(height)
+        .donut(true);
+
+    chart.pie
+        .startAngle(function(d) { return d.startAngle/2 -Math.PI/2 })
+        .endAngle(function(d) { return d.endAngle/2 -Math.PI/2 });
+
+      //chart.pie.donutLabelsOutside(true).donut(true);
+
+      d3.select("#test2")
+          //.datum(historicalBarChart)
+          .datum(testdata)
+        .transition().duration(1200)
+          .attr('width', width)
+          .attr('height', height)
+          .call(chart);
+
+    return chart;
+});
+
+</script>
diff --git a/examples/scatter.html b/examples/scatter.html
new file mode 100644
index 0000000..2c27767
--- /dev/null
+++ b/examples/scatter.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+</style>
+<body>
+
+<svg id="test1"></svg>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/fisheye.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script>
+
+
+//Format A
+nv.addGraph({
+  generate: function() {
+      var width = nv.utils.windowSize().width - 40,
+          height = nv.utils.windowSize().height - 40;
+
+      var chart = nv.models.scatter()
+                .width(width)
+                .height(height)
+                .margin({top: 20, right: 20, bottom: 20, left: 20})
+                .size(function(d) { return d.z })
+                .useVoronoi(false)
+                //.interactive(false)
+
+
+    d3.select('#test1')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(randomData())
+    .transition().duration(500)
+      .call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+    window.onresize = function() {
+        var width = nv.utils.windowSize().width - 40,
+             height = nv.utils.windowSize().height - 40,
+        margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#test1')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+
+    };
+  }
+});
+
+
+
+
+function randomData() {
+  var data = [];
+
+  for (i = 0; i < 2; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: []
+    });
+
+    for (j = 0; j < 100; j++) {
+      data[i].values.push({x: Math.random(), y: Math.random(), z: Math.random()});
+    }
+  }
+
+  return data;
+}
+
+
+</script>
diff --git a/examples/scatterChart.html b/examples/scatterChart.html
new file mode 100644
index 0000000..57a8b91
--- /dev/null
+++ b/examples/scatterChart.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+  margin: 0;
+  padding: 0;
+}
+
+svg {
+  overflow: hidden;
+}
+
+div {
+  border: 0;
+  margin: 0;
+}
+
+/*
+#offsetDiv {
+  margin-left: 100px;
+  margin-top: 100px;
+}
+*/
+
+
+#test1 {
+  margin: 0;
+}
+
+#test1 svg {
+  height: 500px;
+}
+
+</style>
+
+<body>
+
+<div id="offsetDiv">
+  <div id="test1" class='with-3d-shadow with-transitions'>
+    <svg></svg>
+  </div>
+</div>
+
+<script src="../lib/d3.v3.js"></script>
+<!--<script src="../lib/fisheye.js"></script>-->
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/distribution.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/scatterChart.js"></script>
+<script>
+
+
+
+//Format A
+var chart;
+nv.addGraph(function() {
+  chart = nv.models.scatterChart()
+                .showDistX(true)
+                .showDistY(true)
+                .useVoronoi(true)
+                .color(d3.scale.category10().range())
+                .transitionDuration(300)
+                ;
+
+  chart.xAxis.tickFormat(d3.format('.02f'));
+  chart.yAxis.tickFormat(d3.format('.02f'));
+  chart.tooltipContent(function(key) {
+      return '<h2>' + key + '</h2>';
+  });
+
+  d3.select('#test1 svg')
+      .datum(randomData(4,40))
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { ('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+
+function randomData(groups, points) { //# groups,# points per group
+  var data = [],
+      shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
+      random = d3.random.normal();
+
+  for (i = 0; i < groups; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: []
+    });
+
+    for (j = 0; j < points; j++) {
+      data[i].values.push({
+        x: random(), 
+        y: random(), 
+        size: Math.random(), 
+        shape: shapes[j % 6]
+      });
+    }
+  }
+
+  return data;
+}
+
+
+
+</script>
diff --git a/examples/scatterPlusLineChart.html b/examples/scatterPlusLineChart.html
new file mode 100644
index 0000000..d09cc9a
--- /dev/null
+++ b/examples/scatterPlusLineChart.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+  margin: 0;
+  padding: 0;
+}
+
+svg {
+  overflow: hidden;
+}
+
+div {
+  border: 0;
+  margin: 0;
+}
+
+/*
+#offsetDiv {
+  margin-left: 100px;
+  margin-top: 100px;
+}
+*/
+
+
+#test1 {
+  margin: 0;
+}
+
+#test1 svg {
+  height: 500px;
+}
+
+</style>
+
+<body class='with-3d-shadow with-transitions'>
+
+<div id="offsetDiv">
+  <div id="test1" class="chartWrap">
+    <svg></svg>
+  </div>
+</div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../lib/fisheye.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/distribution.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/scatterPlusLineChart.js"></script>
+<script>
+
+
+
+//Format A
+var chart;
+nv.addGraph(function() {
+  chart = nv.models.scatterPlusLineChart()
+                .showDistX(true)
+                .showDistY(true)
+                .transitionDuration(300)
+                .color(d3.scale.category10().range());
+
+  chart.xAxis.tickFormat(d3.format('.02f'))
+  chart.yAxis.tickFormat(d3.format('.02f'))
+
+  d3.select('#test1 svg')
+      .datum(nv.log(randomData(4,40)))
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+
+function randomData(groups, points) { //# groups,# points per group
+  var data = [],
+      shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
+      random = d3.random.normal();
+
+  for (i = 0; i < groups; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: [],
+      slope: Math.random() - .01,
+      intercept: Math.random() - .5
+    });
+
+    for (j = 0; j < points; j++) {
+      data[i].values.push({
+        x: random(), 
+        y: random(), 
+        size: Math.random(), 
+        shape: shapes[j % 6]
+      });
+    }
+  }
+
+  return data;
+}
+
+
+
+</script>
diff --git a/examples/sparkline.html b/examples/sparkline.html
new file mode 100644
index 0000000..b7412ec
--- /dev/null
+++ b/examples/sparkline.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+.sparkline path {
+  fill: none;
+  stroke: #444;
+}
+
+text {
+  font: 10px sans-serif;
+}
+
+#chart1 {
+  width: 300px;
+  height: 32px;
+}
+
+</style>
+<body>
+
+  <h2>Sparkline: <svg id="chart1" class="sparkline"></svg></h2>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/models/sparkline.js"></script>
+<script src="../src/utils.js"></script>
+<script>
+
+//Format A
+nv.addGraph({
+  generate: function() {
+    var chart = nv.models.sparkline()
+                  .width(400)
+                  .height(30)
+
+    d3.select("#chart1")
+      .datum(sine())
+      .call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+    //log("Sparkline rendered");
+  }
+});
+
+
+
+function sine() {
+  var sin = [];
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: Math.sin(i/10)});
+  }
+
+  return sin;
+}
+
+
+</script>
diff --git a/examples/sparklinePlus.html b/examples/sparklinePlus.html
new file mode 100644
index 0000000..f04e6e9
--- /dev/null
+++ b/examples/sparklinePlus.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<style>
+
+svg.sparkline {
+  width: 500px;
+  height: 70px;
+  font-size: 14px;
+  margin-top: -6px;
+}
+
+
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+<h2>SparklinePlus:</h2>
+<p><svg id="chart1" class="sparkline"></svg></p>
+<br/>
+<p>APPL:<svg id="chart2" class="sparkline"></svg></p>
+
+<p>GOOG:<svg id="chart3" class="sparkline"></svg></p>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/sparkline.js"></script>
+<script src="../src/models/sparklinePlus.js"></script>
+<script>
+
+function defaultChartConfig(containerId, data) {
+  nv.addGraph(function() {
+
+    var chart = nv.models.sparklinePlus()
+
+    chart
+      .margin({left:70})
+      .x(function(d,i) { return i })
+      .xTickFormat(function(d) {
+        return d3.time.format('%x')(new Date(data[d].x))
+      })
+
+    d3.select(containerId)
+        .datum(data)
+      .transition().duration(250)
+        .call(chart);
+
+
+    return chart;
+  });
+}
+
+defaultChartConfig("#chart1",sine());
+defaultChartConfig("#chart2", volatileChart(130.0, 0.02));
+defaultChartConfig("#chart3", volatileChart(25.0, 0.09,30));
+
+
+function sine() {
+  var sin = [];
+  var now =+new Date();
+
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: now + i * 1000 * 60 * 60 * 24, y: Math.sin(i/10)});
+  }
+
+  return sin;
+}
+
+function volatileChart(startPrice, volatility, numPoints) {
+     var rval =  [];
+     var now =+new Date();
+     numPoints = numPoints || 100;
+     for(var i = 1; i < numPoints; i++) {
+
+        rval.push({x: now + i * 1000 * 60 * 60 * 24, y: startPrice});
+        var rnd = Math.random();
+        var changePct = 2 * volatility * rnd;
+        if ( changePct > volatility) {
+           changePct -= (2*volatility);
+        }
+        startPrice = startPrice + startPrice * changePct;
+     }
+     return rval;
+}
+
+</script>
diff --git a/examples/stackedArea.html b/examples/stackedArea.html
new file mode 100644
index 0000000..43a959b
--- /dev/null
+++ b/examples/stackedArea.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body>
+
+  <div id="chart">
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script>
+
+
+//Format A
+nv.addGraph({
+  generate: function() {
+    var n = 10, // number of layers
+        m = 200; // number of samples per layer
+        //color = d3.interpolateRgb("#aad", "#556");
+
+    var data = stream_layers(n,m).map(function(data, i) {
+      return { 
+        key: 'Stream' + i,
+        values: data
+      };
+    });
+
+
+    var width = nv.utils.windowSize().width - 20,
+        height = nv.utils.windowSize().height - 20;
+
+    var chart = nv.models.stackedArea()
+                .width(width)
+                .height(height)
+                //.offset('wiggle')
+                //.order('default')
+
+
+    var svg = d3.select('#chart svg')
+      .attr('width', width)
+      .attr('height', height)
+      .datum(data)
+
+    svg.transition().duration(500).call(chart);
+
+    return chart;
+  },
+  callback: function(graph) {
+
+
+
+    graph.dispatch.on('tooltipShow', function(e) {
+        var offsetElement = document.getElementById("chart"),
+                left = e.pos[0] + offsetElement.offsetLeft,
+                top = e.pos[1] + offsetElement.offsetTop,
+                formatterY = d3.format(",.2%"),
+          formatterX = function(d) {
+            return   d3.time.format('%x')(new Date(d))
+          };
+
+      var content = '<h3>' + e.series.key + '</h3>' +
+                    '<p>' +
+                    formatterY(graph.y()(e.point)) + ' at ' + formatterX(graph.x()(e.point)) +
+                    '</p>';
+
+      nv.tooltip.show([left, top], content);
+    });
+
+    graph.dispatch.on('tooltipHide', function(e) {
+      nv.tooltip.cleanup();
+    });
+
+
+
+	window.onResize = function() {
+      var width = nv.utils.windowSize().width - 20,
+          height = nv.utils.windowSize().height - 20,
+          margin = graph.margin();
+
+
+      if (width < margin.left + margin.right + 20)
+        width = margin.left + margin.right + 20;
+
+      if (height < margin.top + margin.bottom + 20)
+        height = margin.top + margin.bottom + 20;
+
+
+      graph
+         .width(width)
+         .height(height);
+
+      d3.select('#chart svg')
+        .attr('width', width)
+        .attr('height', height)
+        .call(graph);
+
+    }
+  }
+});
+
+
+
+
+/* Inspired by Lee Byron's test data generator. */
+function stream_layers(n, m, o) {
+  if (arguments.length < 3) o = 0;
+  function bump(a) {
+    var x = 1 / (.1 + Math.random()),
+        y = 2 * Math.random() - .5,
+        z = 10 / (.1 + Math.random());
+    for (var i = 0; i < m; i++) {
+      var w = (i / m - y) * z;
+      a[i] += x * Math.exp(-w * w);
+    }
+  }
+  return d3.range(n).map(function() {
+      var a = [], i;
+      for (i = 0; i < m; i++) a[i] = o + o * Math.random();
+      for (i = 0; i < 5; i++) bump(a);
+      return a.map(stream_index);
+    });
+}
+
+/* Another layer generator using gamma distributions. */
+function stream_waves(n, m) {
+  return d3.range(n).map(function(i) {
+    return d3.range(m).map(function(j) {
+        var x = 20 * j / m - i / 3;
+        return 2 * x * Math.exp(-.5 * x);
+      }).map(stream_index);
+    });
+}
+
+function stream_index(d, i) {
+  return {x: i, y: Math.max(0, d)};
+}
+
+
+</script>
diff --git a/examples/stackedAreaChart.html b/examples/stackedAreaChart.html
new file mode 100644
index 0000000..e1dd192
--- /dev/null
+++ b/examples/stackedAreaChart.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+
+<style>
+
+body {
+  overflow-y:scroll;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+#chart1, #chart2 {
+  height: 500px;
+}
+
+</style>
+<body class='with-3d-shadow with-transitions'>
+
+  <div>
+    <svg id="chart1"></svg>
+  </div>
+
+  <div>
+    <!--<svg id="chart2"></svg>-->
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script src="../src/models/stackedAreaChart.js"></script>
+<script>
+
+
+var histcatexplong = [ 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218208] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957521] , [ 1149048000000 , 26.823411519395] , [ 1151640000000 , 23.850443591584] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393694] , [ 1159588800000 , 27.977128511299] , [ 1162270800000 , 29.073672469721] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687638] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271051] , [ 1175313600000 , 17.558388444186] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201302] , [ 1183176000000 , 18.729632971228] , [ 1185854400000 , 18.814523318848] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575715] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 17.175388025298] , [ 1201755600000 , 17.286592443521] , [ 1204261200000 , 16.323141626569] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391094] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.539366475979] , [ 1217476800000 , 15.255131790216] , [ 1220155200000 , 15.660963922593] , [ 1222747200000 , 13.254482273697] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090925] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672229] , [ 1241064000000 , 14.6314458648] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367016] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.75602606542] , [ 1259557200000 , 19.385804443147] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793023] , [ 1280548800000 , 29.46138169384] , [ 1283227200000 , 27.357322961862] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379723] , [ 1293771600000 , 29.449241421597] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449189] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.079662545409] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.41800274293] , [ 1312084800000 , 23.243644138871] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.672380820431] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213899] , [ 1330491600000 , 20.366462219462] , [ 1333166400000 , 17.429019937289] , [ 1335758400000 , 16.75543633539] , [ 1338436800000 , 16.182906906042]]
+  } , 
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220792] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 8.5658461590953] , [ 1335758400000 , 8.6135447714243] , [ 1338436800000 , 8.0231460925212]]
+  } , 
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1138683600000 , 1.544303464167] , [ 1141102800000 , 1.4387289432421] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 1.328626801128] , [ 1154318400000 , 1.2874050802627] , [ 1156996800000 , 1.0872743105593] , [ 1159588800000 , 0.96042562635813] , [ 1162270800000 , 0.93139372870616] , [ 1164862800000 , 0.94432167305385] , [ 1167541200000 , 1.277750166208] , [ 1170219600000 , 1.2204893886811] , [ 1172638800000 , 1.207489123122] , [ 1175313600000 , 1.2490651414113] , [ 1177905600000 , 1.2593129913052] , [ 1180584000000 , 1.373329808388] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 1.4516108933695] , [ 1225425600000 , 1.1856025268225] , [ 1228021200000 , 1.3430470355439] , [ 1230699600000 , 2.2752595354509] , [ 1233378000000 , 2.4031560010523] , [ 1235797200000 , 2.0822430731926] , [ 1238472000000 , 1.5640902826938] , [ 1241064000000 , 1.5812873972356] , [ 1243742400000 , 1.9462448548894] , [ 1246334400000 , 2.9464870223957] , [ 1249012800000 , 3.0744699383222] , [ 1251691200000 , 2.9422304628446] , [ 1254283200000 , 2.7503075599999] , [ 1256961600000 , 2.6506701800427] , [ 1259557200000 , 2.8005425319977] , [ 1262235600000 , 2.6816184971185] , [ 1264914000000 , 2.681206271327] , [ 1267333200000 , 2.8195488011259] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 1.0687057346382] , [ 1280548800000 , 1.2539400544134] , [ 1283227200000 , 1.1862969445955] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 1.941972859484] , [ 1298869200000 , 2.1142247697552] , [ 1301544000000 , 2.3788590206824] , [ 1304136000000 , 2.5337302877545] , [ 1306814400000 , 2.3163370395199] , [ 1309406400000 , 2.0645451843195] , [ 1312084800000 , 2.1004446672411] , [ 1314763200000 , 3.6301875804303] , [ 1317355200000 , 2.454204664652] , [ 1320033600000 , 2.196082370894] , [ 1322629200000 , 2.3358418255202] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0.39001201038526] , [ 1335758400000 , 0.30945472725559] , [ 1338436800000 , 0.31062439305591]]
+  } , 
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1138683600000 , 13.356778764352] , [ 1141102800000 , 13.611196863271] , [ 1143781200000 , 6.895903006119] , [ 1146369600000 , 6.9939633271352] , [ 1149048000000 , 6.7241510257675] , [ 1151640000000 , 5.5611293669516] , [ 1154318400000 , 5.6086488714041] , [ 1156996800000 , 5.4962849907033] , [ 1159588800000 , 6.9193153169279] , [ 1162270800000 , 7.0016334389777] , [ 1164862800000 , 6.7865422443273] , [ 1167541200000 , 9.0006454225383] , [ 1170219600000 , 9.2233916171431] , [ 1172638800000 , 8.8929316009479] , [ 1175313600000 , 10.345937520404] , [ 1177905600000 , 10.075914677026] , [ 1180584000000 , 10.089006188111] , [ 1183176000000 , 10.598330295008] , [ 1185854400000 , 9.968954653301] , [ 1188532800000 , 9.7740580198146] , [ 1191124800000 , 10.558483060626] , [ 1193803200000 , 9.9314651823603] , [ 1196398800000 , 9.3997715873769] , [ 1199077200000 , 8.4086493387262] , [ 1201755600000 , 8.9698309085926] , [ 1204261200000 , 8.2778357995396] , [ 1206936000000 , 8.8585045600123] , [ 1209528000000 , 8.7013756413322] , [ 1212206400000 , 7.7933605469443] , [ 1214798400000 , 7.0236183483064] , [ 1217476800000 , 6.9873088186829] , [ 1220155200000 , 6.8031713070097] , [ 1222747200000 , 6.6869531315723] , [ 1225425600000 , 6.138256993963] , [ 1228021200000 , 5.6434994016354] , [ 1230699600000 , 5.495220262512] , [ 1233378000000 , 4.6885326869846] , [ 1235797200000 , 4.4524349883438] , [ 1238472000000 , 5.6766520778185] , [ 1241064000000 , 5.7675774480752] , [ 1243742400000 , 5.7882863168337] , [ 1246334400000 , 7.2666010034924] , [ 1249012800000 , 7.519182132226] , [ 1251691200000 , 7.849651451445] , [ 1254283200000 , 10.383992037985] , [ 1256961600000 , 9.0653691861818] , [ 1259557200000 , 9.6705248324159] , [ 1262235600000 , 10.856380561349] , [ 1264914000000 , 11.27452370892] , [ 1267333200000 , 11.754156529088] , [ 1270008000000 , 8.2870811422456] , [ 1272600000000 , 8.0210264360699] , [ 1275278400000 , 7.5375074474865] , [ 1277870400000 , 8.3419527338039] , [ 1280548800000 , 9.4197471818443] , [ 1283227200000 , 8.7321733185797] , [ 1285819200000 , 9.6627062648126] , [ 1288497600000 , 10.187962234549] , [ 1291093200000 , 9.8144201733476] , [ 1293771600000 , 10.275723361713] , [ 1296450000000 , 16.796066079353] , [ 1298869200000 , 17.543254984075] , [ 1301544000000 , 16.673660675084] , [ 1304136000000 , 17.963944353609] , [ 1306814400000 , 16.637740867211] , [ 1309406400000 , 15.84857094609] , [ 1312084800000 , 14.767303362182] , [ 1314763200000 , 24.778452182432] , [ 1317355200000 , 18.370353229999] , [ 1320033600000 , 15.2531374291] , [ 1322629200000 , 14.989600840649] , [ 1325307600000 , 16.052539160125] , [ 1327986000000 , 16.424390322793] , [ 1330491600000 , 17.884020741105] , [ 1333166400000 , 7.1424929577921] , [ 1335758400000 , 7.8076213051482] , [ 1338436800000 , 7.2462684949232]]
+  } , 
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1138683600000 , 14.212410956029] , [ 1141102800000 , 13.973193618249] , [ 1143781200000 , 15.218233920665] , [ 1146369600000 , 14.38210972745] , [ 1149048000000 , 13.894310878491] , [ 1151640000000 , 15.593086090032] , [ 1154318400000 , 16.244839695188] , [ 1156996800000 , 16.017088850646] , [ 1159588800000 , 14.183951830055] , [ 1162270800000 , 14.148523245697] , [ 1164862800000 , 13.424326059972] , [ 1167541200000 , 12.974450435753] , [ 1170219600000 , 13.23247041802] , [ 1172638800000 , 13.318762655574] , [ 1175313600000 , 15.961407746104] , [ 1177905600000 , 16.287714639805] , [ 1180584000000 , 16.246590583889] , [ 1183176000000 , 17.564505594809] , [ 1185854400000 , 17.872725373165] , [ 1188532800000 , 18.018998508757] , [ 1191124800000 , 15.584518016603] , [ 1193803200000 , 15.480850647181] , [ 1196398800000 , 15.699120036984] , [ 1199077200000 , 19.184281817226] , [ 1201755600000 , 19.691226605207] , [ 1204261200000 , 18.982314051295] , [ 1206936000000 , 18.707820309008] , [ 1209528000000 , 17.459630929761] , [ 1212206400000 , 16.500616076782] , [ 1214798400000 , 18.086324003979] , [ 1217476800000 , 18.929464156258] , [ 1220155200000 , 18.233728682084] , [ 1222747200000 , 16.315776297325] , [ 1225425600000 , 14.63289219025] , [ 1228021200000 , 14.667835024478] , [ 1230699600000 , 13.946993947308] , [ 1233378000000 , 14.394304684397] , [ 1235797200000 , 13.724462792967] , [ 1238472000000 , 10.930879035806] , [ 1241064000000 , 9.8339915513708] , [ 1243742400000 , 10.053858541872] , [ 1246334400000 , 11.786998438287] , [ 1249012800000 , 11.780994901769] , [ 1251691200000 , 11.305889670276] , [ 1254283200000 , 10.918452290083] , [ 1256961600000 , 9.6811395055706] , [ 1259557200000 , 10.971529744038] , [ 1262235600000 , 13.330210480209] , [ 1264914000000 , 14.592637568961] , [ 1267333200000 , 14.605329141157] , [ 1270008000000 , 13.936853794037] , [ 1272600000000 , 12.189480759072] , [ 1275278400000 , 11.676151385046] , [ 1277870400000 , 13.058852800017] , [ 1280548800000 , 13.62891543203] , [ 1283227200000 , 13.811107569918] , [ 1285819200000 , 13.786494560787] , [ 1288497600000 , 14.04516285753] , [ 1291093200000 , 13.697412447288] , [ 1293771600000 , 13.677681376221] , [ 1296450000000 , 19.961511864531] , [ 1298869200000 , 21.049198298158] , [ 1301544000000 , 22.687631094008] , [ 1304136000000 , 25.469010617433] , [ 1306814400000 , 24.883799437121] , [ 1309406400000 , 24.203843814248] , [ 1312084800000 , 22.138760964038] , [ 1314763200000 , 16.034636966228] , [ 1317355200000 , 15.394958944556] , [ 1320033600000 , 12.625642461969] , [ 1322629200000 , 12.973735699739] , [ 1325307600000 , 15.786018336149] , [ 1327986000000 , 15.227368020134] , [ 1330491600000 , 15.899752650734] , [ 1333166400000 , 18.994731295388] , [ 1335758400000 , 18.450055817702] , [ 1338436800000 , 17.863719889669]]
+  } , 
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1138683600000 , 7.1590087090398] , [ 1141102800000 , 7.1297210970108] , [ 1143781200000 , 5.5774588290586] , [ 1146369600000 , 5.4977254491156] , [ 1149048000000 , 5.5138153113634] , [ 1151640000000 , 4.3198084032122] , [ 1154318400000 , 3.9179295839125] , [ 1156996800000 , 3.8110093051479] , [ 1159588800000 , 5.5629020916939] , [ 1162270800000 , 5.7241673711336] , [ 1164862800000 , 5.4715049695004] , [ 1167541200000 , 4.9193763571618] , [ 1170219600000 , 5.136053947247] , [ 1172638800000 , 5.1327258759766] , [ 1175313600000 , 5.1888943925082] , [ 1177905600000 , 5.5191481293345] , [ 1180584000000 , 5.6093625614921] , [ 1183176000000 , 4.2706312987397] , [ 1185854400000 , 4.4453235132117] , [ 1188532800000 , 4.6228003109761] , [ 1191124800000 , 5.0645764756954] , [ 1193803200000 , 5.0723447230959] , [ 1196398800000 , 5.1457765818846] , [ 1199077200000 , 5.4067851597282] , [ 1201755600000 , 5.472241916816] , [ 1204261200000 , 5.3742740389688] , [ 1206936000000 , 6.251751933664] , [ 1209528000000 , 6.1406852153472] , [ 1212206400000 , 5.8164385627465] , [ 1214798400000 , 5.4255846656171] , [ 1217476800000 , 5.3738499417204] , [ 1220155200000 , 5.1815627753979] , [ 1222747200000 , 5.0305983235349] , [ 1225425600000 , 4.6823058607165] , [ 1228021200000 , 4.5941481589093] , [ 1230699600000 , 5.4669598474575] , [ 1233378000000 , 5.1249037357] , [ 1235797200000 , 4.3504421250742] , [ 1238472000000 , 4.6260881026002] , [ 1241064000000 , 5.0140402458946] , [ 1243742400000 , 4.7458462454774] , [ 1246334400000 , 6.0437019654564] , [ 1249012800000 , 6.4595216249754] , [ 1251691200000 , 6.6420468254155] , [ 1254283200000 , 5.8927271960913] , [ 1256961600000 , 5.4712108838003] , [ 1259557200000 , 6.1220254207747] , [ 1262235600000 , 5.5385935169255] , [ 1264914000000 , 5.7383377612639] , [ 1267333200000 , 6.1715976730415] , [ 1270008000000 , 4.0102262681174] , [ 1272600000000 , 3.769389679692] , [ 1275278400000 , 3.5301571031152] , [ 1277870400000 , 2.7660252652526] , [ 1280548800000 , 3.1409983385775] , [ 1283227200000 , 3.0528024863055] , [ 1285819200000 , 4.3126123157971] , [ 1288497600000 , 4.594654041683] , [ 1291093200000 , 4.5424126126793] , [ 1293771600000 , 4.7790043987302] , [ 1296450000000 , 7.4969154058289] , [ 1298869200000 , 7.9424751557821] , [ 1301544000000 , 7.1560736250547] , [ 1304136000000 , 7.9478117337855] , [ 1306814400000 , 7.4109214848895] , [ 1309406400000 , 7.5966457641101] , [ 1312084800000 , 7.165754444071] , [ 1314763200000 , 5.4816702524302] , [ 1317355200000 , 4.9893656089584] , [ 1320033600000 , 4.498385105327] , [ 1322629200000 , 4.6776090358151] , [ 1325307600000 , 8.1350814368063] , [ 1327986000000 , 8.0732769990652] , [ 1330491600000 , 8.5602340387277] , [ 1333166400000 , 5.1293714074325] , [ 1335758400000 , 5.2586794619016] , [ 1338436800000 , 5.1100853569977]]
+  } , 
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1138683600000 , 13.242301508051] , [ 1141102800000 , 12.863536342042] , [ 1143781200000 , 21.034044171629] , [ 1146369600000 , 21.419084618803] , [ 1149048000000 , 21.142678863691] , [ 1151640000000 , 26.568489677529] , [ 1154318400000 , 24.839144939905] , [ 1156996800000 , 25.456187462167] , [ 1159588800000 , 26.350164502826] , [ 1162270800000 , 26.47833320519] , [ 1164862800000 , 26.425979547847] , [ 1167541200000 , 28.191461582256] , [ 1170219600000 , 28.930307448808] , [ 1172638800000 , 29.521413891117] , [ 1175313600000 , 28.188285966466] , [ 1177905600000 , 27.704619625832] , [ 1180584000000 , 27.490862424829] , [ 1183176000000 , 28.770679721286] , [ 1185854400000 , 29.060480671449] , [ 1188532800000 , 28.240998844973] , [ 1191124800000 , 33.004893194127] , [ 1193803200000 , 34.075180359928] , [ 1196398800000 , 32.548560664833] , [ 1199077200000 , 30.629727432728] , [ 1201755600000 , 28.642858788159] , [ 1204261200000 , 27.973575227842] , [ 1206936000000 , 27.393351882726] , [ 1209528000000 , 28.476095288523] , [ 1212206400000 , 29.29667866426] , [ 1214798400000 , 29.222333802896] , [ 1217476800000 , 28.092966093843] , [ 1220155200000 , 28.107159262922] , [ 1222747200000 , 25.482974832098] , [ 1225425600000 , 21.208115993834] , [ 1228021200000 , 20.295043095268] , [ 1230699600000 , 15.925754618401] , [ 1233378000000 , 17.162864628346] , [ 1235797200000 , 17.084345773174] , [ 1238472000000 , 22.246007102281] , [ 1241064000000 , 24.530543998509] , [ 1243742400000 , 25.084184918242] , [ 1246334400000 , 16.606166527358] , [ 1249012800000 , 17.239620011628] , [ 1251691200000 , 17.336739127379] , [ 1254283200000 , 25.478492475753] , [ 1256961600000 , 23.017152085245] , [ 1259557200000 , 25.617745423683] , [ 1262235600000 , 24.061133998642] , [ 1264914000000 , 23.223933318644] , [ 1267333200000 , 24.425887263937] , [ 1270008000000 , 35.501471156693] , [ 1272600000000 , 33.775013878676] , [ 1275278400000 , 30.417993630285] , [ 1277870400000 , 30.023598978467] , [ 1280548800000 , 33.327519522436] , [ 1283227200000 , 31.963388450371] , [ 1285819200000 , 30.498967232092] , [ 1288497600000 , 32.403696817912] , [ 1291093200000 , 31.47736071922] , [ 1293771600000 , 31.53259666241] , [ 1296450000000 , 41.760282761548] , [ 1298869200000 , 45.605771243237] , [ 1301544000000 , 39.986557966215] , [ 1304136000000 , 43.846330510051] , [ 1306814400000 , 39.857316881857] , [ 1309406400000 , 37.675127768208] , [ 1312084800000 , 35.775077970313] , [ 1314763200000 , 48.631009702577] , [ 1317355200000 , 42.830831754505] , [ 1320033600000 , 35.611502589362] , [ 1322629200000 , 35.320136981738] , [ 1325307600000 , 31.564136901516] , [ 1327986000000 , 32.074407502433] , [ 1330491600000 , 35.053013769976] , [ 1333166400000 , 26.434568573937] , [ 1335758400000 , 25.305617871002] , [ 1338436800000 , 24.520919418236]]
+  } , 
+  { 
+    "key" : "Materials" , 
+    "values" : [ [ 1138683600000 , 5.5806167415681] , [ 1141102800000 , 5.4539047069985] , [ 1143781200000 , 7.6728842432362] , [ 1146369600000 , 7.719946716654] , [ 1149048000000 , 8.0144619912942] , [ 1151640000000 , 7.942223133434] , [ 1154318400000 , 8.3998279827444] , [ 1156996800000 , 8.532324572605] , [ 1159588800000 , 4.7324285199763] , [ 1162270800000 , 4.7402397487697] , [ 1164862800000 , 4.9042069355168] , [ 1167541200000 , 5.9583963430882] , [ 1170219600000 , 6.3693899239171] , [ 1172638800000 , 6.261153903813] , [ 1175313600000 , 5.3443942184584] , [ 1177905600000 , 5.4932111235361] , [ 1180584000000 , 5.5747393101109] , [ 1183176000000 , 5.3833633060013] , [ 1185854400000 , 5.5125898831832] , [ 1188532800000 , 5.8116112661327] , [ 1191124800000 , 4.3962296939996] , [ 1193803200000 , 4.6967663605521] , [ 1196398800000 , 4.7963004350914] , [ 1199077200000 , 4.1817985183351] , [ 1201755600000 , 4.3797643870182] , [ 1204261200000 , 4.6966642197965] , [ 1206936000000 , 4.3609995132565] , [ 1209528000000 , 4.4736290996496] , [ 1212206400000 , 4.3749762738128] , [ 1214798400000 , 3.3274661194507] , [ 1217476800000 , 3.0316184691337] , [ 1220155200000 , 2.5718140204728] , [ 1222747200000 , 2.7034994044603] , [ 1225425600000 , 2.2033786591364] , [ 1228021200000 , 1.9850621240805] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0.44495950017788] , [ 1256961600000 , 0.33945469262483] , [ 1259557200000 , 0.38348269455195] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0.52216435716176] , [ 1298869200000 , 0.59275786698454] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } , 
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1138683600000 , 3.7056975170243] , [ 1141102800000 , 3.7561118692318] , [ 1143781200000 , 2.861913700854] , [ 1146369600000 , 2.9933744103381] , [ 1149048000000 , 2.7127537218463] , [ 1151640000000 , 3.1195497076283] , [ 1154318400000 , 3.4066964004508] , [ 1156996800000 , 3.3754571113569] , [ 1159588800000 , 2.2965579982924] , [ 1162270800000 , 2.4486818633018] , [ 1164862800000 , 2.4002308848517] , [ 1167541200000 , 1.9649579750349] , [ 1170219600000 , 1.9385263638056] , [ 1172638800000 , 1.9128975336387] , [ 1175313600000 , 2.3412869836298] , [ 1177905600000 , 2.4337870351445] , [ 1180584000000 , 2.62179703171] , [ 1183176000000 , 3.2642864957929] , [ 1185854400000 , 3.3200396223709] , [ 1188532800000 , 3.3934212707572] , [ 1191124800000 , 4.2822327088179] , [ 1193803200000 , 4.1474964228541] , [ 1196398800000 , 4.1477082879801] , [ 1199077200000 , 5.2947122916128] , [ 1201755600000 , 5.2919843508028] , [ 1204261200000 , 5.1989783050309] , [ 1206936000000 , 3.5603057673513] , [ 1209528000000 , 3.3009087690692] , [ 1212206400000 , 3.1784852603792] , [ 1214798400000 , 4.5889503538868] , [ 1217476800000 , 4.401779617494] , [ 1220155200000 , 4.2208301828278] , [ 1222747200000 , 3.89396671475] , [ 1225425600000 , 3.0423832241354] , [ 1228021200000 , 3.135520611578] , [ 1230699600000 , 1.9631418164089] , [ 1233378000000 , 1.8963543874958] , [ 1235797200000 , 1.8266636017025] , [ 1238472000000 , 0.93136635895188] , [ 1241064000000 , 0.92737801918888] , [ 1243742400000 , 0.97591889805002] , [ 1246334400000 , 2.6841193805515] , [ 1249012800000 , 2.5664341140531] , [ 1251691200000 , 2.3887523699873] , [ 1254283200000 , 1.1737801663681] , [ 1256961600000 , 1.0953582317281] , [ 1259557200000 , 1.2495674976653] , [ 1262235600000 , 0.36607452464754] , [ 1264914000000 , 0.3548719047291] , [ 1267333200000 , 0.36769242398939] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0.85450741275337] , [ 1288497600000 , 0.91360317921637] , [ 1291093200000 , 0.89647678692269] , [ 1293771600000 , 0.87800687192639] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0.43668720882994] , [ 1304136000000 , 0.4756523602692] , [ 1306814400000 , 0.46947368328469] , [ 1309406400000 , 0.45138896152316] , [ 1312084800000 , 0.43828726648117] , [ 1314763200000 , 2.0820861395316] , [ 1317355200000 , 0.9364411075395] , [ 1320033600000 , 0.60583907839773] , [ 1322629200000 , 0.61096950747437] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } , 
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 0] , [ 1225425600000 , 0] , [ 1228021200000 , 0] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } 
+];
+
+/*
+// for testing single data point
+var histcatexplong = [
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , 27.38478809681]]
+  } ,
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 7.2800122043237]]
+  } ,
+  {
+    "key" : "Energy" ,
+    "values" : [ [ 1138683600000 , 1.544303464167]]
+  } , 
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1138683600000 , 13.356778764352]]
+  } , 
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1138683600000 , 14.212410956029]]
+  } , 
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1138683600000 , 7.1590087090398]]
+  } , 
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1138683600000 , 13.242301508051]]
+  } , 
+  { 
+    "key" : "Materials" , 
+    "values" : [ [ 1138683600000 , 5.5806167415681]]
+  } , 
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1138683600000 , 3.7056975170243]]
+  } , 
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1138683600000 , 0]]
+  } 
+];
+*/
+
+
+
+var histcatexpshort = [ 
+  { 
+    "key" : "Consumer Staples" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , -0.24102139376003] , [ 1170219600000 , -0.69960584365035] , [ 1172638800000 , -0.67365051426185] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.31429312464988] , [ 1185854400000 , -0.90018700397153] , [ 1188532800000 , -0.96926214328714] , [ 1191124800000 , -1.1343386468131] , [ 1193803200000 , -1.1335426595455] , [ 1196398800000 , -1.2327663032424] , [ 1199077200000 , -0.41027135492155] , [ 1201755600000 , -0.41779167524802] , [ 1204261200000 , -0.38133883625885] , [ 1206936000000 , 0] , [ 1209528000000 , -0.32550520320253] , [ 1212206400000 , -0.33185144615505] , [ 1214798400000 , -0.68609668877894] , [ 1217476800000 , -0.70001207744308] , [ 1220155200000 , -0.68378680840919] , [ 1222747200000 , -0.40908783182034] , [ 1225425600000 , -0.39074266525646] , [ 1228021200000 , -0.40358490474562] , [ 1230699600000 , -0.85752207262267] , [ 1233378000000 , -0.74395750438805] , [ 1235797200000 , -0.70718832429489] , [ 1238472000000 , -0.76244465406965] , [ 1241064000000 , -0.67618572591984] , [ 1243742400000 , -0.67649596761402] , [ 1246334400000 , -0.94618002703247] , [ 1249012800000 , -0.95408485581014] , [ 1251691200000 , -0.96272139504276] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , -0.25516420149471] , [ 1272600000000 , -0.24106264576017] , [ 1275278400000 , -0.22802547751448] , [ 1277870400000 , -0.62187524046697] , [ 1280548800000 , -0.72155608677106] , [ 1283227200000 , -0.70221659944774] , [ 1285819200000 , -1.1117002584543] , [ 1288497600000 , -1.190911001336] , [ 1291093200000 , -1.1781082003972] , [ 1293771600000 , -1.2125860264875] , [ 1296450000000 , -1.7748010365657] , [ 1298869200000 , -1.8919594178596] , [ 1301544000000 , -1.7077946421533] , [ 1304136000000 , -2.024238803094] , [ 1306814400000 , -1.9769844081819] , [ 1309406400000 , -2.0730275464065] , [ 1312084800000 , -1.9690128240888] , [ 1314763200000 , -5.5557852269348] , [ 1317355200000 , -7.2527933190641] , [ 1320033600000 , -5.7367677053109] , [ 1322629200000 , -6.0409316206662] , [ 1325307600000 , -4.6511525539195] , [ 1327986000000 , -4.526116059083] , [ 1330491600000 , -4.846292325197] , [ 1333166400000 , -2.2663198779425] , [ 1335758400000 , -2.4172072568564] , [ 1338436800000 , -2.3204729601189]]
+  } , 
+  { 
+    "key" : "Consumer Discretionary" , 
+    "values" : [ [ 1138683600000 , -0.62238434102863] , [ 1141102800000 , -0.61484565039024] , [ 1143781200000 , -1.0769367918668] , [ 1146369600000 , -1.2221156604129] , [ 1149048000000 , -1.2434858263377] , [ 1151640000000 , -0.58606435489597] , [ 1154318400000 , -0.61478911495141] , [ 1156996800000 , -0.61429362688591] , [ 1159588800000 , -1.1168614112788] , [ 1162270800000 , -1.1510268716612] , [ 1164862800000 , -1.1104724164222] , [ 1167541200000 , -1.2298338563471] , [ 1170219600000 , -1.5053664389104] , [ 1172638800000 , -1.5535266372193] , [ 1175313600000 , -3.1690472535854] , [ 1177905600000 , -3.1273013967041] , [ 1180584000000 , -3.155466271777] , [ 1183176000000 , -3.7158562579437] , [ 1185854400000 , -3.8244546635586] , [ 1188532800000 , -3.5524464859972] , [ 1191124800000 , -3.0472339109128] , [ 1193803200000 , -3.064978140815] , [ 1196398800000 , -3.0818130124986] , [ 1199077200000 , -2.9806791138312] , [ 1201755600000 , -3.7360958775824] , [ 1204261200000 , -3.4687841733263] , [ 1206936000000 , -3.3702018615806] , [ 1209528000000 , -3.1982756208679] , [ 1212206400000 , -3.0489433155104] , [ 1214798400000 , -3.7008275605963] , [ 1217476800000 , -3.8980507260892] , [ 1220155200000 , -3.7680083260241] , [ 1222747200000 , -3.2061890012391] , [ 1225425600000 , -2.6727551440484] , [ 1228021200000 , -2.4469327462935] , [ 1230699600000 , -3.0192419668784] , [ 1233378000000 , -2.892958553476] , [ 1235797200000 , -3.1153570053479] , [ 1238472000000 , -2.9927580570711] , [ 1241064000000 , -3.5061796706294] , [ 1243742400000 , -3.2944159516725] , [ 1246334400000 , -3.4154213240617] , [ 1249012800000 , -3.6492125438171] , [ 1251691200000 , -3.6674164998394] , [ 1254283200000 , -4.6271484977727] , [ 1256961600000 , -4.2433407292676] , [ 1259557200000 , -4.4742625247274] , [ 1262235600000 , -5.2078214612359] , [ 1264914000000 , -5.2209579214469] , [ 1267333200000 , -5.4596395756061] , [ 1270008000000 , -5.6906459276584] , [ 1272600000000 , -6.4981737808665] , [ 1275278400000 , -6.2563044048578] , [ 1277870400000 , -6.175479487959] , [ 1280548800000 , -6.6641002427295] , [ 1283227200000 , -6.3648667745556] , [ 1285819200000 , -5.0270168607884] , [ 1288497600000 , -5.1186072976233] , [ 1291093200000 , -5.1127601587872] , [ 1293771600000 , -5.3015262972641] , [ 1296450000000 , -4.4295728671596] , [ 1298869200000 , -4.5488139745696] , [ 1301544000000 , -2.9021260315957] , [ 1304136000000 , -3.1482096241139] , [ 1306814400000 , -2.8648831814763] , [ 1309406400000 , -2.8149423433441] , [ 1312084800000 , -2.6350669145713] , [ 1314763200000 , -5.9871754759038] , [ 1317355200000 , -8.6127555816399] , [ 1320033600000 , -7.0712887348892] , [ 1322629200000 , -7.3930257999857] , [ 1325307600000 , -6.5183071556304] , [ 1327986000000 , -7.4388913793503] , [ 1330491600000 , -8.2134465182649] , [ 1333166400000 , -7.7836036697105] , [ 1335758400000 , -8.0955053683936] , [ 1338436800000 , -8.0981845818893]]
+  } , 
+  { 
+    "key" : "Energy" , 
+    "values" : [ [ 1138683600000 , -0.95707527558303] , [ 1141102800000 , -0.78324346694487] , [ 1143781200000 , -1.2905241058019] , [ 1146369600000 , -1.3880880486779] , [ 1149048000000 , -1.3337247185993] , [ 1151640000000 , -1.0342112071924] , [ 1154318400000 , -1.1264764100183] , [ 1156996800000 , -1.0001002640852] , [ 1159588800000 , -0.85341153093953] , [ 1162270800000 , -0.88452017844596] , [ 1164862800000 , -0.84305725300642] , [ 1167541200000 , -1.0874455682301] , [ 1170219600000 , -1.1714969043168] , [ 1172638800000 , -1.1445856467934] , [ 1175313600000 , -1.1928513334073] , [ 1177905600000 , -1.2365691634265] , [ 1180584000000 , -1.2690940962478] , [ 1183176000000 , -1.662233774695] , [ 1185854400000 , -1.745760538781] , [ 1188532800000 , -1.5209200931271] , [ 1191124800000 , -1.7874791820886] , [ 1193803200000 , -1.7755668105117] , [ 1196398800000 , -1.5456069064618] , [ 1199077200000 , -1.7077541586335] , [ 1201755600000 , -1.6462081650757] , [ 1204261200000 , -1.8624735339628] , [ 1206936000000 , -0.71073453533048] , [ 1209528000000 , -0.75380709640219] , [ 1212206400000 , -0.71020554911716] , [ 1214798400000 , -1.2077850914504] , [ 1217476800000 , -1.0505576787644] , [ 1220155200000 , -0.97804595164878] , [ 1222747200000 , -0.34591294663671] , [ 1225425600000 , -0.19958331514025] , [ 1228021200000 , -0.17599782216296] , [ 1230699600000 , -0.49577714121027] , [ 1233378000000 , -0.51644059173978] , [ 1235797200000 , -0.48576859637083] , [ 1238472000000 , -0.75596531126452] , [ 1241064000000 , -0.72073358315801] , [ 1243742400000 , -0.82125996732294] , [ 1246334400000 , -1.4933216860121] , [ 1249012800000 , -1.5003760525933] , [ 1251691200000 , -1.4744921420596] , [ 1254283200000 , -1.8197844060652] , [ 1256961600000 , -1.6558574419626] , [ 1259557200000 , -1.7256149254159] , [ 1262235600000 , -2.7667194124217] , [ 1264914000000 , -2.9113351806903] , [ 1267333200000 , -3.0172806042796] , [ 1270008000000 , -2.8607175559701] , [ 1272600000000 , -2.629226972169] , [ 1275278400000 , -2.1855196883832] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -1.3788733828844] , [ 1288497600000 , -1.4136792139765] , [ 1291093200000 , -1.5176522942901] , [ 1293771600000 , -1.5776651933208] , [ 1296450000000 , -1.7171675182182] , [ 1298869200000 , -1.8121885250566] , [ 1301544000000 , -1.2221934283206] , [ 1304136000000 , -1.2910715239439] , [ 1306814400000 , -1.1492301612576] , [ 1309406400000 , -1.0613891302841] , [ 1312084800000 , -0.99605193205308] , [ 1314763200000 , -1.7324212072278] , [ 1317355200000 , -1.5226856867477] , [ 1320033600000 , -1.3159138896549] , [ 1322629200000 , -1.3925952659299] , [ 1325307600000 , -1.59624913621] , [ 1327986000000 , -1.5235879880296] , [ 1330491600000 , -1.7315573519279] , [ 1333166400000 , -0.86883431220926] , [ 1335758400000 , -0.90144871282829] , [ 1338436800000 , -0.7010492182517]]
+  } , 
+  { 
+    "key" : "Financials" , 
+    "values" : [ [ 1138683600000 , -0.56797103580254] , [ 1141102800000 , -0.57324319174933] , [ 1143781200000 , -1.1014818753272] , [ 1146369600000 , -1.1480256918118] , [ 1149048000000 , -1.0709335336775] , [ 1151640000000 , -0.84876993929658] , [ 1154318400000 , -0.88122638919979] , [ 1156996800000 , -0.86421146074279] , [ 1159588800000 , -0.95093689377974] , [ 1162270800000 , -0.96646862382248] , [ 1164862800000 , -0.96726919442167] , [ 1167541200000 , -0.99874655234936] , [ 1170219600000 , -1.0004843898938] , [ 1172638800000 , -0.9925349676815] , [ 1175313600000 , -1.1888941931287] , [ 1177905600000 , -1.9402228220929] , [ 1180584000000 , -2.03915987194] , [ 1183176000000 , -2.4620526931074] , [ 1185854400000 , -2.2423544651877] , [ 1188532800000 , -1.8790998536037] , [ 1191124800000 , -0.43246873489492] , [ 1193803200000 , -0.40142684216371] , [ 1196398800000 , -0.35646635110466] , [ 1199077200000 , -0.90385702817642] , [ 1201755600000 , -0.86997575249605] , [ 1204261200000 , -0.80101406775415] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.31816167663298] , [ 1217476800000 , -0.309250081849] , [ 1220155200000 , -0.27723698582762] , [ 1222747200000 , -0.32001379372079] , [ 1225425600000 , -0.1940212908561] , [ 1228021200000 , -0.051964569203423] , [ 1230699600000 , -0.68342686502452] , [ 1233378000000 , -0.57645644730726] , [ 1235797200000 , -0.50860972184555] , [ 1238472000000 , -0.44405217759605] , [ 1241064000000 , -0.45224333626901] , [ 1243742400000 , -0.41691818252313] , [ 1246334400000 , -2.4654561579904] , [ 1249012800000 , -2.5473566378551] , [ 1251691200000 , -2.8340604021307] , [ 1254283200000 , -1.8452445924041] , [ 1256961600000 , -1.5626544265386] , [ 1259557200000 , -1.707842764916] , [ 1262235600000 , -1.2237258567344] , [ 1264914000000 , -1.9756896168227] , [ 1267333200000 , -2.0920321696833] , [ 1270008000000 , -1.9782327706952] , [ 1272600000000 , -2.0416328165753] , [ 1275278400000 , -1.7816736134798] , [ 1277870400000 , -0.66092275437689] , [ 1280548800000 , -0.73608099025756] , [ 1283227200000 , -0.63686713461189] , [ 1285819200000 , -0.0024159482973197] , [ 1288497600000 , -0.0023052643588188] , [ 1291093200000 , -0.0023008251965446] , [ 1293771600000 , -0.002247807834351] , [ 1296450000000 , -0.62004345920743] , [ 1298869200000 , -0.69634926653235] , [ 1301544000000 , -0.76013525555354] , [ 1304136000000 , -1.505368495849] , [ 1306814400000 , -1.3456949237707] , [ 1309406400000 , -1.3013934898695] , [ 1312084800000 , -1.183199519395] , [ 1314763200000 , -0.0074317809719494] , [ 1317355200000 , -0.019430458325379] , [ 1320033600000 , -0.015777413509084] , [ 1322629200000 , -0.016463879837718] , [ 1325307600000 , -0.0031338919976225] , [ 1327986000000 , -0.0029770278967514] , [ 1330491600000 , -0.003048902987439] , [ 1333166400000 , -0.71171545945298] , [ 1335758400000 , -0.72003299240508] , [ 1338436800000 , -0.72961974845039]]
+  } , 
+  { 
+    "key" : "Health Care" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16816074963595] , [ 1185854400000 , -0.19318598121302] , [ 1188532800000 , -0.20130864403797] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.30476443991021] , [ 1217476800000 , -0.31836730824777] , [ 1220155200000 , -0.30797427879366] , [ 1222747200000 , -0.48318623977865] , [ 1225425600000 , -0.50834562674351] , [ 1228021200000 , -0.47936068182503] , [ 1230699600000 , -0.61753010081956] , [ 1233378000000 , -0.59493587396819] , [ 1235797200000 , -0.62664324339064] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -1.3076157801726] , [ 1256961600000 , -1.2306204787628] , [ 1259557200000 , -1.4728435992801] , [ 1262235600000 , -1.7729831226837] , [ 1264914000000 , -1.7711733839842] , [ 1267333200000 , -1.8233584472099] , [ 1270008000000 , -1.8505979461969] , [ 1272600000000 , -1.5989071613823] , [ 1275278400000 , -1.6636770720413] , [ 1277870400000 , -1.4523909758725] , [ 1280548800000 , -1.503771584105] , [ 1283227200000 , -1.5458561450475] , [ 1285819200000 , -1.457331837483] , [ 1288497600000 , -1.4217332434071] , [ 1291093200000 , -1.4687927303394] , [ 1293771600000 , -1.437223057967] , [ 1296450000000 , -0.72221871524334] , [ 1298869200000 , -0.7399575414588] , [ 1301544000000 , -1.9712239746745] , [ 1304136000000 , -2.2360949351942] , [ 1306814400000 , -2.2147572530541] , [ 1309406400000 , -2.0440932285023] , [ 1312084800000 , -1.9438209561938] , [ 1314763200000 , -4.9035620630386] , [ 1317355200000 , -4.9036674804213] , [ 1320033600000 , -4.1900706458801] , [ 1322629200000 , -4.5602615827955] , [ 1325307600000 , -1.9194421885814] , [ 1327986000000 , -1.8854470816382] , [ 1330491600000 , -1.9514785018245] , [ 1333166400000 , -0.65282205870454] , [ 1335758400000 , -0.57068368199209] , [ 1338436800000 , -0.55902563384907]]
+  } , 
+  { 
+    "key" : "Industrials" , 
+    "values" : [ [ 1138683600000 , -0.390983707093] , [ 1141102800000 , -0.38471122730537] , [ 1143781200000 , -0.22897173467143] , [ 1146369600000 , -0.23798946472286] , [ 1149048000000 , -0.20721233428173] , [ 1151640000000 , -0.54577697700394] , [ 1154318400000 , -0.50300252995937] , [ 1156996800000 , -0.49609518628103] , [ 1159588800000 , -0.19582276889273] , [ 1162270800000 , -0.60399139945108] , [ 1164862800000 , -0.61477368082886] , [ 1167541200000 , -0.13665869881705] , [ 1170219600000 , -0.13147565243332] , [ 1172638800000 , -0.11819441593356] , [ 1175313600000 , -0.41610825689528] , [ 1177905600000 , -0.38815419659358] , [ 1180584000000 , -0.3703838943035] , [ 1183176000000 , -1.6193903804534] , [ 1185854400000 , -1.6502660417328] , [ 1188532800000 , -1.481875010149] , [ 1191124800000 , -0.96180099322536] , [ 1193803200000 , -0.97017301394967] , [ 1196398800000 , -0.97432971260093] , [ 1199077200000 , -0.36071934518387] , [ 1201755600000 , -0.42150070991777] , [ 1204261200000 , -0.41784042793202] , [ 1206936000000 , -0.70494708349169] , [ 1209528000000 , -0.73449590911984] , [ 1212206400000 , -0.7400163600788] , [ 1214798400000 , -0.52584502195668] , [ 1217476800000 , -0.56224806965368] , [ 1220155200000 , -0.50830855192741] , [ 1222747200000 , -0.79494637898049] , [ 1225425600000 , -0.70391433947286] , [ 1228021200000 , -0.61420660317009] , [ 1230699600000 , -0.41699636242004] , [ 1233378000000 , -0.3779041158185] , [ 1235797200000 , -0.34282498854047] , [ 1238472000000 , -0.83845630450592] , [ 1241064000000 , -0.85937944918912] , [ 1243742400000 , -0.85530287999615] , [ 1246334400000 , -1.2819866264007] , [ 1249012800000 , -1.4598491663715] , [ 1251691200000 , -1.5261472177779] , [ 1254283200000 , -1.2503948993549] , [ 1256961600000 , -1.1767079775724] , [ 1259557200000 , -1.2585538260386] , [ 1262235600000 , -3.420972598165] , [ 1264914000000 , -3.3381337072954] , [ 1267333200000 , -3.7043129330694] , [ 1270008000000 , -4.6924500756609] , [ 1272600000000 , -4.6880683704908] , [ 1275278400000 , -4.3335249071719] , [ 1277870400000 , -3.6545810416445] , [ 1280548800000 , -4.1639787701262] , [ 1283227200000 , -3.8249597612047] , [ 1285819200000 , -0.33221815335641] , [ 1288497600000 , -0.33346468179047] , [ 1291093200000 , -0.34546911228789] , [ 1293771600000 , -0.36609971997147] , [ 1296450000000 , -0.42502545672607] , [ 1298869200000 , -0.38192733348507] , [ 1301544000000 , -0.01991033447621] , [ 1304136000000 , -0.020319195299659] , [ 1306814400000 , -0.018147820835144] , [ 1309406400000 , -0.017923186209383] , [ 1312084800000 , -0.016133999253684] , [ 1314763200000 , -0.72058656278977] , [ 1317355200000 , -0.42812646564889] , [ 1320033600000 , -0.35896134792589] , [ 1322629200000 , -0.38637896444549] , [ 1325307600000 , -0.31794663984021] , [ 1327986000000 , -0.32220831831888] , [ 1330491600000 , -0.37107872672214] , [ 1333166400000 , -0.81968633933695] , [ 1335758400000 , -0.77148300885994] , [ 1338436800000 , -0.77392261735539]]
+  } , 
+  { 
+    "key" : "Information Technology" , 
+    "values" : [ [ 1138683600000 , -0.86346955704548] , [ 1141102800000 , -0.88352373534584] , [ 1143781200000 , -1.2630802711685] , [ 1146369600000 , -1.2352593999242] , [ 1149048000000 , -1.2086379045093] , [ 1151640000000 , -1.0416778473647] , [ 1154318400000 , -0.99326278105154] , [ 1156996800000 , -1.0095045907007] , [ 1159588800000 , -2.0762515478576] , [ 1162270800000 , -2.13066829429] , [ 1164862800000 , -2.2458400474235] , [ 1167541200000 , -2.1315262677135] , [ 1170219600000 , -2.4063108252146] , [ 1172638800000 , -2.3753290631454] , [ 1175313600000 , -2.1119577565913] , [ 1177905600000 , -2.1546804750397] , [ 1180584000000 , -2.3768374034303] , [ 1183176000000 , -1.244878330098] , [ 1185854400000 , -1.2233210265236] , [ 1188532800000 , -1.1715073644317] , [ 1191124800000 , -1.0036136395928] , [ 1193803200000 , -0.9510676777939] , [ 1196398800000 , -0.97553526602196] , [ 1199077200000 , -1.9083849411912] , [ 1201755600000 , -1.855965027796] , [ 1204261200000 , -1.7343633512402] , [ 1206936000000 , -2.1847032903649] , [ 1209528000000 , -2.2095446284368] , [ 1212206400000 , -2.2060678671735] , [ 1214798400000 , -1.0941627910924] , [ 1217476800000 , -1.0004352405294] , [ 1220155200000 , -0.93563501378075] , [ 1222747200000 , 0] , [ 1225425600000 , -0.65155092645953] , [ 1228021200000 , -0.66021585164047] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -0.29297573068109] , [ 1256961600000 , -0.75043756379084] , [ 1259557200000 , -0.85690846482745] , [ 1262235600000 , -0.21937480770873] , [ 1264914000000 , -0.93232569935343] , [ 1267333200000 , -0.94180327525084] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -0.21253553193891] , [ 1288497600000 , -0.23178244747722] , [ 1291093200000 , -0.21481706129968] , [ 1293771600000 , -0.23306463011242] , [ 1296450000000 , -0.90244048159158] , [ 1298869200000 , -1.0410052083529] , [ 1301544000000 , -2.209350937089] , [ 1304136000000 , -2.6540796712932] , [ 1306814400000 , -3.2481210590957] , [ 1309406400000 , -3.0717986354635] , [ 1312084800000 , -2.7493296528921] , [ 1314763200000 , -2.1973991293256] , [ 1317355200000 , -0.86403111842659] , [ 1320033600000 , -0.87824756160219] , [ 1322629200000 , -0.80812571482871] , [ 1325307600000 , -1.6419820357151] , [ 1327986000000 , -1.6893790342619] , [ 1330491600000 , -1.8614499455474] , [ 1333166400000 , -1.814727017516] , [ 1335758400000 , -1.8744942128618] , [ 1338436800000 , -1.7880124850882]]
+  } , 
+  { 
+    "key" : "Materials" , 
+    "values" : [ [ 1138683600000 , -0.26079769654951] , [ 1141102800000 , -0.23368425410881] , [ 1143781200000 , -0.46285283466193] , [ 1146369600000 , -0.4588429059205] , [ 1149048000000 , -0.43055120080853] , [ 1151640000000 , -0.26428963363642] , [ 1154318400000 , -0.26203611963364] , [ 1156996800000 , -0.26706156717825] , [ 1159588800000 , -0.024613610779192] , [ 1162270800000 , -0.024351047945929] , [ 1164862800000 , -0.031497065480344] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , -0.83875613435932] , [ 1209528000000 , -0.84367445572656] , [ 1212206400000 , -0.78928126005463] , [ 1214798400000 , -1.1075954825404] , [ 1217476800000 , -1.2704836497926] , [ 1220155200000 , -1.307504052056] , [ 1222747200000 , -0.70440409992826] , [ 1225425600000 , -0.74122140007729] , [ 1228021200000 , -0.82224393045109] , [ 1230699600000 , -1.8719055314571] , [ 1233378000000 , -1.5200311233975] , [ 1235797200000 , -1.5552386899059] , [ 1238472000000 , -1.1576593040773] , [ 1241064000000 , -1.0757811060575] , [ 1243742400000 , -1.0250125722511] , [ 1246334400000 , -2.2747597224127] , [ 1249012800000 , -2.3125499227974] , [ 1251691200000 , -2.2784386530745] , [ 1254283200000 , -1.1518806233757] , [ 1256961600000 , -1.0075503399018] , [ 1259557200000 , -1.1400577929481] , [ 1262235600000 , -0.50677891891165] , [ 1264914000000 , -0.54332908490051] , [ 1267333200000 , -0.55473181189807] , [ 1270008000000 , -0.3633796157757] , [ 1272600000000 , -0.30361861470847] , [ 1275278400000 , -0.24614951229153] , [ 1277870400000 , -1.0959443687647] , [ 1280548800000 , -1.1881529264637] , [ 1283227200000 , -1.1835349242596] , [ 1285819200000 , -0.92507477884561] , [ 1288497600000 , -0.94531016133473] , [ 1291093200000 , -0.93519433603434] , [ 1293771600000 , -1.009221344252] , [ 1296450000000 , -2.3640716285835] , [ 1298869200000 , -2.4914494188556] , [ 1301544000000 , -1.7979456141716] , [ 1304136000000 , -2.1389760840247] , [ 1306814400000 , -1.9721362241269] , [ 1309406400000 , -1.9170229522382] , [ 1312084800000 , -1.8076246545605] , [ 1314763200000 , -2.1010686108381] , [ 1317355200000 , -2.2396373791195] , [ 1320033600000 , -1.8469012813015] , [ 1322629200000 , -2.0079125997321] , [ 1325307600000 , -1.9170007806182] , [ 1327986000000 , -1.9239118384243] , [ 1330491600000 , -2.0649464738798] , [ 1333166400000 , -0.88385747789351] , [ 1335758400000 , -0.91438087144161] , [ 1338436800000 , -0.96513752020965]]
+  } , 
+  { 
+    "key" : "Telecommunication Services" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.077395192503573] , [ 1146369600000 , -0.079342784160835] , [ 1149048000000 , -0.07376956808809] , [ 1151640000000 , -0.041850521681201] , [ 1154318400000 , -0.037598545052499] , [ 1156996800000 , -0.040984079427717] , [ 1159588800000 , -0.19335817797448] , [ 1162270800000 , -0.18578493919925] , [ 1164862800000 , -0.1769473933101] , [ 1167541200000 , -0.57245352054975] , [ 1170219600000 , -0.61554187332911] , [ 1172638800000 , -0.63016714701151] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.12118014109021] , [ 1185854400000 , -0.11085831487208] , [ 1188532800000 , -0.10901265358445] , [ 1191124800000 , -0.17205583275088] , [ 1193803200000 , -0.16573676303991] , [ 1196398800000 , -0.17954841680392] , [ 1199077200000 , -0.82703336198161] , [ 1201755600000 , -0.76741763304227] , [ 1204261200000 , -0.79430844816827] , [ 1206936000000 , -1.0279404050708] , [ 1209528000000 , -1.0342425093761] , [ 1212206400000 , -1.0903083860383] , [ 1214798400000 , -1.0895432841007] , [ 1217476800000 , -1.1392703218146] , [ 1220155200000 , -0.98872086340391] , [ 1222747200000 , -1.227654651568] , [ 1225425600000 , -1.0527419580394] , [ 1228021200000 , -0.84338280322309] , [ 1230699600000 , -0.5982617279246] , [ 1233378000000 , -0.74123723862634] , [ 1235797200000 , -0.81665712408277] , [ 1238472000000 , -0.89868760705228] , [ 1241064000000 , -0.86338472153689] , [ 1243742400000 , -0.85040889603889] , [ 1246334400000 , -0.82872733882926] , [ 1249012800000 , -1.2797824676355] , [ 1251691200000 , -1.152043882336] , [ 1254283200000 , -0.70125890680538] , [ 1256961600000 , -0.69496338525418] , [ 1259557200000 , -0.81982038022784] , [ 1262235600000 , -0.42841700219624] , [ 1264914000000 , -0.43298861575253] , [ 1267333200000 , -0.46951194437705] , [ 1270008000000 , -0.46723980191721] , [ 1272600000000 , -0.43139262322841] , [ 1275278400000 , -0.4052075794202] , [ 1277870400000 , -0.45399431179247] , [ 1280548800000 , -0.50492374473014] , [ 1283227200000 , -0.49032976375464] , [ 1285819200000 , -0.95769381063728] , [ 1288497600000 , -0.92968381683254] , [ 1291093200000 , -0.90984207437415] , [ 1293771600000 , -0.91448295661871] , [ 1296450000000 , -1.3204103334172] , [ 1298869200000 , -1.3896989018] , [ 1301544000000 , -1.8536993972883] , [ 1304136000000 , -1.9901582471947] , [ 1306814400000 , -1.8731097808809] , [ 1309406400000 , -1.8109819859122] , [ 1312084800000 , -1.7946593386661] , [ 1314763200000 , -1.6002716669781] , [ 1317355200000 , -0.056479286204019] , [ 1320033600000 , -0.046232413998891] , [ 1322629200000 , -0.051182355563531] , [ 1325307600000 , -0.032858749040145] , [ 1327986000000 , -0.032326418106178] , [ 1330491600000 , -0.033980477379241] , [ 1333166400000 , -0.053069550536519] , [ 1335758400000 , -0.055741850564434] , [ 1338436800000 , -0.055851808568252]]
+  } , 
+  { 
+    "key" : "Utilities" , 
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.073769471773675] , [ 1146369600000 , -0.077824496315782] , [ 1149048000000 , -0.080696288096361] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16073291656515] , [ 1185854400000 , -0.1646253606633] , [ 1188532800000 , -0.1655815581449] , [ 1191124800000 , -0.74417496631713] , [ 1193803200000 , -0.76230340423681] , [ 1196398800000 , -0.73882938190048] , [ 1199077200000 , -0.3820573391806] , [ 1201755600000 , -0.360757285179] , [ 1204261200000 , -0.38081058463615] , [ 1206936000000 , -0.92767439811083] , [ 1209528000000 , -0.92774728028789] , [ 1212206400000 , -0.85273481694714] , [ 1214798400000 , -1.69407085613] , [ 1217476800000 , -1.5179726219101] , [ 1220155200000 , -1.3576700600738] , [ 1222747200000 , -1.0404839864076] , [ 1225425600000 , -0.95251478838915] , [ 1228021200000 , -1.0610509118017] , [ 1230699600000 , -0.3316792294278] , [ 1233378000000 , -0.33745002288524] , [ 1235797200000 , -0.28806366796683] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , -0.6338555382785] , [ 1249012800000 , -0.62797265130959] , [ 1251691200000 , -0.60264057253794] , [ 1254283200000 , -0.28687231077181] , [ 1256961600000 , -0.22215649778327] , [ 1259557200000 , -0.24027664555676] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } 
+];
+
+/*
+.map(function(series) {
+  series.values = series.values.map(function(d) {
+    return { x: d[0], y: d[1] }
+  });
+  return series;
+});
+*/
+
+//an example of harmonizing colors between visualizations
+//observe that Consumer Discretionary and Consumer Staples have 
+//been flipped in the second chart
+var colors = d3.scale.category20();
+keyColor = function(d, i) {return colors(d.key)};
+
+var chart;
+nv.addGraph(function() {
+  chart = nv.models.stackedAreaChart()
+               // .width(600).height(500)
+                .useInteractiveGuideline(true)
+                .x(function(d) { return d[0] })
+                .y(function(d) { return d[1] })
+                .color(keyColor)
+                .transitionDuration(300);
+                //.clipEdge(true);
+
+// chart.stacked.scatter.clipVoronoi(false);
+
+  chart.xAxis
+      .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart1')
+    .datum(histcatexplong)
+    .transition().duration(0)
+    .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+  return chart;
+});
+
+nv.addGraph(function() {
+  var chart = nv.models.stackedAreaChart()
+                .x(function(d) { return d[0] })
+                .y(function(d) { return d[1] })
+                .color(keyColor)
+                ;
+                //.clipEdge(true);
+
+  chart.xAxis
+      .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart2')
+    .datum(histcatexpshort)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+
+
+</script>
diff --git a/examples/stream_layers.js b/examples/stream_layers.js
new file mode 100644
index 0000000..43d7cfe
--- /dev/null
+++ b/examples/stream_layers.js
@@ -0,0 +1,35 @@
+
+/* Inspired by Lee Byron's test data generator. */
+function stream_layers(n, m, o) {
+  if (arguments.length < 3) o = 0;
+  function bump(a) {
+    var x = 1 / (.1 + Math.random()),
+        y = 2 * Math.random() - .5,
+        z = 10 / (.1 + Math.random());
+    for (var i = 0; i < m; i++) {
+      var w = (i / m - y) * z;
+      a[i] += x * Math.exp(-w * w);
+    }
+  }
+  return d3.range(n).map(function() {
+      var a = [], i;
+      for (i = 0; i < m; i++) a[i] = o + o * Math.random();
+      for (i = 0; i < 5; i++) bump(a);
+      return a.map(stream_index);
+    });
+}
+
+/* Another layer generator using gamma distributions. */
+function stream_waves(n, m) {
+  return d3.range(n).map(function(i) {
+    return d3.range(m).map(function(j) {
+        var x = 20 * j / m - i / 3;
+        return 2 * x * Math.exp(-.5 * x);
+      }).map(stream_index);
+    });
+}
+
+function stream_index(d, i) {
+  return {x: i, y: Math.max(0, d)};
+}
+
diff --git a/lib/cie.js b/lib/cie.js
new file mode 100644
index 0000000..45f0132
--- /dev/null
+++ b/lib/cie.js
@@ -0,0 +1,155 @@
+(function(d3) {
+  var cie = d3.cie = {};
+
+  cie.lab = function(l, a, b) {
+    return arguments.length === 1
+        ? (l instanceof Lab ? lab(l.l, l.a, l.b)
+        : (l instanceof Lch ? lch_lab(l.l, l.c, l.h)
+        : rgb_lab((l = d3.rgb(l)).r, l.g, l.b)))
+        : lab(+l, +a, +b);
+  };
+
+  cie.lch = function(l, c, h) {
+    return arguments.length === 1
+        ? (l instanceof Lch ? lch(l.l, l.c, l.h)
+        : (l instanceof Lab ? lab_lch(l.l, l.a, l.b)
+        : lab_lch((l = rgb_lab((l = d3.rgb(l)).r, l.g, l.b)).l, l.a, l.b)))
+        : lch(+l, +c, +h);
+  };
+
+  cie.interpolateLab = function(a, b) {
+    a = cie.lab(a);
+    b = cie.lab(b);
+    var al = a.l,
+        aa = a.a,
+        ab = a.b,
+        bl = b.l - al,
+        ba = b.a - aa,
+        bb = b.b - ab;
+    return function(t) {
+      return lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
+    };
+  };
+
+  cie.interpolateLch = function(a, b) {
+    a = cie.lch(a);
+    b = cie.lch(b);
+    var al = a.l,
+        ac = a.c,
+        ah = a.h,
+        bl = b.l - al,
+        bc = b.c - ac,
+        bh = b.h - ah;
+    if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; // shortest path
+    return function(t) {
+      return lch_lab(al + bl * t, ac + bc * t, ah + bh * t) + "";
+    };
+  };
+
+  function lab(l, a, b) {
+    return new Lab(l, a, b);
+  }
+
+  function Lab(l, a, b) {
+    this.l = l;
+    this.a = a;
+    this.b = b;
+  }
+
+  Lab.prototype.brighter = function(k) {
+    return lab(Math.min(100, this.l + K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+
+  Lab.prototype.darker = function(k) {
+    return lab(Math.max(0, this.l - K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+
+  Lab.prototype.rgb = function() {
+    return lab_rgb(this.l, this.a, this.b);
+  };
+
+  Lab.prototype.toString = function() {
+    return this.rgb() + "";
+  };
+
+  function lch(l, c, h) {
+    return new Lch(l, c, h);
+  }
+
+  function Lch(l, c, h) {
+    this.l = l;
+    this.c = c;
+    this.h = h;
+  }
+
+  Lch.prototype.brighter = function(k) {
+    return lch(Math.min(100, this.l + K * (arguments.length ? k : 1)), this.c, this.h);
+  };
+
+  Lch.prototype.darker = function(k) {
+    return lch(Math.max(0, this.l - K * (arguments.length ? k : 1)), this.c, this.h);
+  };
+
+  Lch.prototype.rgb = function() {
+    return lch_lab(this.l, this.c, this.h).rgb();
+  };
+
+  Lch.prototype.toString = function() {
+    return this.rgb() + "";
+  };
+
+  // Corresponds roughly to RGB brighter/darker
+  var K = 18;
+
+  // D65 standard referent
+  var X = 0.950470, Y = 1, Z = 1.088830;
+
+  function lab_rgb(l, a, b) {
+    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
+    x = lab_xyz(x) * X;
+    y = lab_xyz(y) * Y;
+    z = lab_xyz(z) * Z;
+    return d3.rgb(
+      xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
+      xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
+      xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
+    );
+  }
+
+  function rgb_lab(r, g, b) {
+    r = rgb_xyz(r);
+    g = rgb_xyz(g);
+    b = rgb_xyz(b);
+    var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / X),
+        y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / Y),
+        z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / Z);
+    return lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
+  }
+
+  function lab_lch(l, a, b) {
+    var c = Math.sqrt(a * a + b * b),
+        h = Math.atan2(b, a) / Math.PI * 180;
+    return lch(l, c, h);
+  }
+
+  function lch_lab(l, c, h) {
+    h = h * Math.PI / 180;
+    return lab(l, Math.cos(h) * c, Math.sin(h) * c);
+  }
+
+  function lab_xyz(x) {
+    return x > 0.206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
+  }
+
+  function xyz_lab(x) {
+    return x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
+  }
+
+  function xyz_rgb(r) {
+    return Math.round(255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));
+  }
+
+  function rgb_xyz(r) {
+    return (r /= 255) <= 0.04045 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
+  }
+})(d3);
diff --git a/lib/colorbrewer.js b/lib/colorbrewer.js
new file mode 100644
index 0000000..2295527
--- /dev/null
+++ b/lib/colorbrewer.js
@@ -0,0 +1,302 @@
+// This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/).
+var colorbrewer = {YlGn: {
+3: ["#f7fcb9","#addd8e","#31a354"],
+4: ["#ffffcc","#c2e699","#78c679","#238443"],
+5: ["#ffffcc","#c2e699","#78c679","#31a354","#006837"],
+6: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#31a354","#006837"],
+7: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
+8: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
+9: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]
+},YlGnBu: {
+3: ["#edf8b1","#7fcdbb","#2c7fb8"],
+4: ["#ffffcc","#a1dab4","#41b6c4","#225ea8"],
+5: ["#ffffcc","#a1dab4","#41b6c4","#2c7fb8","#253494"],
+6: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#2c7fb8","#253494"],
+7: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
+8: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
+9: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]
+},GnBu: {
+3: ["#e0f3db","#a8ddb5","#43a2ca"],
+4: ["#f0f9e8","#bae4bc","#7bccc4","#2b8cbe"],
+5: ["#f0f9e8","#bae4bc","#7bccc4","#43a2ca","#0868ac"],
+6: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#43a2ca","#0868ac"],
+7: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
+8: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
+9: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]
+},BuGn: {
+3: ["#e5f5f9","#99d8c9","#2ca25f"],
+4: ["#edf8fb","#b2e2e2","#66c2a4","#238b45"],
+5: ["#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c"],
+6: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#2ca25f","#006d2c"],
+7: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
+8: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
+9: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"]
+},PuBuGn: {
+3: ["#ece2f0","#a6bddb","#1c9099"],
+4: ["#f6eff7","#bdc9e1","#67a9cf","#02818a"],
+5: ["#f6eff7","#bdc9e1","#67a9cf","#1c9099","#016c59"],
+6: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#1c9099","#016c59"],
+7: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
+8: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
+9: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"]
+},PuBu: {
+3: ["#ece7f2","#a6bddb","#2b8cbe"],
+4: ["#f1eef6","#bdc9e1","#74a9cf","#0570b0"],
+5: ["#f1eef6","#bdc9e1","#74a9cf","#2b8cbe","#045a8d"],
+6: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#2b8cbe","#045a8d"],
+7: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
+8: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
+9: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"]
+},BuPu: {
+3: ["#e0ecf4","#9ebcda","#8856a7"],
+4: ["#edf8fb","#b3cde3","#8c96c6","#88419d"],
+5: ["#edf8fb","#b3cde3","#8c96c6","#8856a7","#810f7c"],
+6: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8856a7","#810f7c"],
+7: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
+8: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
+9: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"]
+},RdPu: {
+3: ["#fde0dd","#fa9fb5","#c51b8a"],
+4: ["#feebe2","#fbb4b9","#f768a1","#ae017e"],
+5: ["#feebe2","#fbb4b9","#f768a1","#c51b8a","#7a0177"],
+6: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#c51b8a","#7a0177"],
+7: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
+8: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
+9: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"]
+},PuRd: {
+3: ["#e7e1ef","#c994c7","#dd1c77"],
+4: ["#f1eef6","#d7b5d8","#df65b0","#ce1256"],
+5: ["#f1eef6","#d7b5d8","#df65b0","#dd1c77","#980043"],
+6: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#dd1c77","#980043"],
+7: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
+8: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
+9: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"]
+},OrRd: {
+3: ["#fee8c8","#fdbb84","#e34a33"],
+4: ["#fef0d9","#fdcc8a","#fc8d59","#d7301f"],
+5: ["#fef0d9","#fdcc8a","#fc8d59","#e34a33","#b30000"],
+6: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#e34a33","#b30000"],
+7: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
+8: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
+9: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"]
+},YlOrRd: {
+3: ["#ffeda0","#feb24c","#f03b20"],
+4: ["#ffffb2","#fecc5c","#fd8d3c","#e31a1c"],
+5: ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
+6: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#f03b20","#bd0026"],
+7: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
+8: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
+9: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]
+},YlOrBr: {
+3: ["#fff7bc","#fec44f","#d95f0e"],
+4: ["#ffffd4","#fed98e","#fe9929","#cc4c02"],
+5: ["#ffffd4","#fed98e","#fe9929","#d95f0e","#993404"],
+6: ["#ffffd4","#fee391","#fec44f","#fe9929","#d95f0e","#993404"],
+7: ["#ffffd4","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
+8: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
+9: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"]
+},Purples: {
+3: ["#efedf5","#bcbddc","#756bb1"],
+4: ["#f2f0f7","#cbc9e2","#9e9ac8","#6a51a3"],
+5: ["#f2f0f7","#cbc9e2","#9e9ac8","#756bb1","#54278f"],
+6: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#756bb1","#54278f"],
+7: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
+8: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
+9: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]
+},Blues: {
+3: ["#deebf7","#9ecae1","#3182bd"],
+4: ["#eff3ff","#bdd7e7","#6baed6","#2171b5"],
+5: ["#eff3ff","#bdd7e7","#6baed6","#3182bd","#08519c"],
+6: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#3182bd","#08519c"],
+7: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
+8: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
+9: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]
+},Greens: {
+3: ["#e5f5e0","#a1d99b","#31a354"],
+4: ["#edf8e9","#bae4b3","#74c476","#238b45"],
+5: ["#edf8e9","#bae4b3","#74c476","#31a354","#006d2c"],
+6: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#31a354","#006d2c"],
+7: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
+8: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
+9: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]
+},Oranges: {
+3: ["#fee6ce","#fdae6b","#e6550d"],
+4: ["#feedde","#fdbe85","#fd8d3c","#d94701"],
+5: ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"],
+6: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#e6550d","#a63603"],
+7: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
+8: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
+9: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]
+},Reds: {
+3: ["#fee0d2","#fc9272","#de2d26"],
+4: ["#fee5d9","#fcae91","#fb6a4a","#cb181d"],
+5: ["#fee5d9","#fcae91","#fb6a4a","#de2d26","#a50f15"],
+6: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#de2d26","#a50f15"],
+7: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
+8: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
+9: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]
+},Greys: {
+3: ["#f0f0f0","#bdbdbd","#636363"],
+4: ["#f7f7f7","#cccccc","#969696","#525252"],
+5: ["#f7f7f7","#cccccc","#969696","#636363","#252525"],
+6: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#636363","#252525"],
+7: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
+8: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
+9: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
+},PuOr: {
+3: ["#f1a340","#f7f7f7","#998ec3"],
+4: ["#e66101","#fdb863","#b2abd2","#5e3c99"],
+5: ["#e66101","#fdb863","#f7f7f7","#b2abd2","#5e3c99"],
+6: ["#b35806","#f1a340","#fee0b6","#d8daeb","#998ec3","#542788"],
+7: ["#b35806","#f1a340","#fee0b6","#f7f7f7","#d8daeb","#998ec3","#542788"],
+8: ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"],
+9: ["#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788"],
+10: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],
+11: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"]
+},BrBG: {
+3: ["#d8b365","#f5f5f5","#5ab4ac"],
+4: ["#a6611a","#dfc27d","#80cdc1","#018571"],
+5: ["#a6611a","#dfc27d","#f5f5f5","#80cdc1","#018571"],
+6: ["#8c510a","#d8b365","#f6e8c3","#c7eae5","#5ab4ac","#01665e"],
+7: ["#8c510a","#d8b365","#f6e8c3","#f5f5f5","#c7eae5","#5ab4ac","#01665e"],
+8: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
+9: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"],
+10: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],
+11: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]
+},PRGn: {
+3: ["#af8dc3","#f7f7f7","#7fbf7b"],
+4: ["#7b3294","#c2a5cf","#a6dba0","#008837"],
+5: ["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],
+6: ["#762a83","#af8dc3","#e7d4e8","#d9f0d3","#7fbf7b","#1b7837"],
+7: ["#762a83","#af8dc3","#e7d4e8","#f7f7f7","#d9f0d3","#7fbf7b","#1b7837"],
+8: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
+9: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
+10: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],
+11: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]
+},PiYG: {
+3: ["#e9a3c9","#f7f7f7","#a1d76a"],
+4: ["#d01c8b","#f1b6da","#b8e186","#4dac26"],
+5: ["#d01c8b","#f1b6da","#f7f7f7","#b8e186","#4dac26"],
+6: ["#c51b7d","#e9a3c9","#fde0ef","#e6f5d0","#a1d76a","#4d9221"],
+7: ["#c51b7d","#e9a3c9","#fde0ef","#f7f7f7","#e6f5d0","#a1d76a","#4d9221"],
+8: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
+9: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
+10: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],
+11: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]
+},RdBu: {
+3: ["#ef8a62","#f7f7f7","#67a9cf"],
+4: ["#ca0020","#f4a582","#92c5de","#0571b0"],
+5: ["#ca0020","#f4a582","#f7f7f7","#92c5de","#0571b0"],
+6: ["#b2182b","#ef8a62","#fddbc7","#d1e5f0","#67a9cf","#2166ac"],
+7: ["#b2182b","#ef8a62","#fddbc7","#f7f7f7","#d1e5f0","#67a9cf","#2166ac"],
+8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
+9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
+10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],
+11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]
+},RdGy: {
+3: ["#ef8a62","#ffffff","#999999"],
+4: ["#ca0020","#f4a582","#bababa","#404040"],
+5: ["#ca0020","#f4a582","#ffffff","#bababa","#404040"],
+6: ["#b2182b","#ef8a62","#fddbc7","#e0e0e0","#999999","#4d4d4d"],
+7: ["#b2182b","#ef8a62","#fddbc7","#ffffff","#e0e0e0","#999999","#4d4d4d"],
+8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
+9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d"],
+10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],
+11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"]
+},RdYlBu: {
+3: ["#fc8d59","#ffffbf","#91bfdb"],
+4: ["#d7191c","#fdae61","#abd9e9","#2c7bb6"],
+5: ["#d7191c","#fdae61","#ffffbf","#abd9e9","#2c7bb6"],
+6: ["#d73027","#fc8d59","#fee090","#e0f3f8","#91bfdb","#4575b4"],
+7: ["#d73027","#fc8d59","#fee090","#ffffbf","#e0f3f8","#91bfdb","#4575b4"],
+8: ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
+9: ["#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4"],
+10: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],
+11: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]
+},Spectral: {
+3: ["#fc8d59","#ffffbf","#99d594"],
+4: ["#d7191c","#fdae61","#abdda4","#2b83ba"],
+5: ["#d7191c","#fdae61","#ffffbf","#abdda4","#2b83ba"],
+6: ["#d53e4f","#fc8d59","#fee08b","#e6f598","#99d594","#3288bd"],
+7: ["#d53e4f","#fc8d59","#fee08b","#ffffbf","#e6f598","#99d594","#3288bd"],
+8: ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
+9: ["#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd"],
+10: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],
+11: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]
+},RdYlGn: {
+3: ["#fc8d59","#ffffbf","#91cf60"],
+4: ["#d7191c","#fdae61","#a6d96a","#1a9641"],
+5: ["#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"],
+6: ["#d73027","#fc8d59","#fee08b","#d9ef8b","#91cf60","#1a9850"],
+7: ["#d73027","#fc8d59","#fee08b","#ffffbf","#d9ef8b","#91cf60","#1a9850"],
+8: ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
+9: ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
+10: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],
+11: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]
+},Accent: {
+3: ["#7fc97f","#beaed4","#fdc086"],
+4: ["#7fc97f","#beaed4","#fdc086","#ffff99"],
+5: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0"],
+6: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"],
+7: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"],
+8: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"]
+},Dark2: {
+3: ["#1b9e77","#d95f02","#7570b3"],
+4: ["#1b9e77","#d95f02","#7570b3","#e7298a"],
+5: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e"],
+6: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02"],
+7: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],
+8: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"]
+},Paired: {
+3: ["#a6cee3","#1f78b4","#b2df8a"],
+4: ["#a6cee3","#1f78b4","#b2df8a","#33a02c"],
+5: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99"],
+6: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c"],
+7: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f"],
+8: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
+9: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6"],
+10: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"],
+11: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99"],
+12: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"]
+},Pastel1: {
+3: ["#fbb4ae","#b3cde3","#ccebc5"],
+4: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4"],
+5: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6"],
+6: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc"],
+7: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd"],
+8: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
+9: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]
+},Pastel2: {
+3: ["#b3e2cd","#fdcdac","#cbd5e8"],
+4: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4"],
+5: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9"],
+6: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae"],
+7: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],
+8: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"]
+},Set1: {
+3: ["#e41a1c","#377eb8","#4daf4a"],
+4: ["#e41a1c","#377eb8","#4daf4a","#984ea3"],
+5: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"],
+6: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33"],
+7: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628"],
+8: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
+9: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"]
+},Set2: {
+3: ["#66c2a5","#fc8d62","#8da0cb"],
+4: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3"],
+5: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854"],
+6: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"],
+7: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494"],
+8: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"]
+},Set3: {
+3: ["#8dd3c7","#ffffb3","#bebada"],
+4: ["#8dd3c7","#ffffb3","#bebada","#fb8072"],
+5: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3"],
+6: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462"],
+7: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69"],
+8: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
+9: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9"],
+10: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],
+11: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5"],
+12: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
+}};
diff --git a/lib/crossfilter.js b/lib/crossfilter.js
new file mode 100644
index 0000000..1aaabca
--- /dev/null
+++ b/lib/crossfilter.js
@@ -0,0 +1,1180 @@
+(function(exports){
+crossfilter.version = "1.0.3";
+function crossfilter_identity(d) {
+  return d;
+}
+crossfilter.permute = permute;
+
+function permute(array, index) {
+  for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) {
+    copy[i] = array[index[i]];
+  }
+  return copy;
+}
+var bisect = crossfilter.bisect = bisect_by(crossfilter_identity);
+
+bisect.by = bisect_by;
+
+function bisect_by(f) {
+
+  // Locate the insertion point for x in a to maintain sorted order. The
+  // arguments lo and hi may be used to specify a subset of the array which
+  // should be considered; by default the entire array is used. If x is already
+  // present in a, the insertion point will be before (to the left of) any
+  // existing entries. The return value is suitable for use as the first
+  // argument to `array.splice` assuming that a is already sorted.
+  //
+  // The returned insertion point i partitions the array a into two halves so
+  // that all v < x for v in a[lo:i] for the left side and all v >= x for v in
+  // a[i:hi] for the right side.
+  function bisectLeft(a, x, lo, hi) {
+    while (lo < hi) {
+      var mid = lo + hi >> 1;
+      if (f(a[mid]) < x) lo = mid + 1;
+      else hi = mid;
+    }
+    return lo;
+  }
+
+  // Similar to bisectLeft, but returns an insertion point which comes after (to
+  // the right of) any existing entries of x in a.
+  //
+  // The returned insertion point i partitions the array into two halves so that
+  // all v <= x for v in a[lo:i] for the left side and all v > x for v in
+  // a[i:hi] for the right side.
+  function bisectRight(a, x, lo, hi) {
+    while (lo < hi) {
+      var mid = lo + hi >> 1;
+      if (x < f(a[mid])) hi = mid;
+      else lo = mid + 1;
+    }
+    return lo;
+  }
+
+  bisectRight.right = bisectRight;
+  bisectRight.left = bisectLeft;
+  return bisectRight;
+}
+var heap = crossfilter.heap = heap_by(crossfilter_identity);
+
+heap.by = heap_by;
+
+function heap_by(f) {
+
+  // Builds a binary heap within the specified array a[lo:hi]. The heap has the
+  // property such that the parent a[lo+i] is always less than or equal to its
+  // two children: a[lo+2*i+1] and a[lo+2*i+2].
+  function heap(a, lo, hi) {
+    var n = hi - lo,
+        i = (n >>> 1) + 1;
+    while (--i > 0) sift(a, i, n, lo);
+    return a;
+  }
+
+  // Sorts the specified array a[lo:hi] in descending order, assuming it is
+  // already a heap.
+  function sort(a, lo, hi) {
+    var n = hi - lo,
+        t;
+    while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo);
+    return a;
+  }
+
+  // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous
+  // slice of array a[lo:lo+n]. This method can also be used to update the heap
+  // incrementally, without incurring the full cost of reconstructing the heap.
+  function sift(a, i, n, lo) {
+    var d = a[--lo + i],
+        x = f(d),
+        child;
+    while ((child = i << 1) <= n) {
+      if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++;
+      if (x <= f(a[lo + child])) break;
+      a[lo + i] = a[lo + child];
+      i = child;
+    }
+    a[lo + i] = d;
+  }
+
+  heap.sort = sort;
+  return heap;
+}
+var heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity);
+
+heapselect.by = heapselect_by;
+
+function heapselect_by(f) {
+  var heap = heap_by(f);
+
+  // Returns a new array containing the top k elements in the array a[lo:hi].
+  // The returned array is not sorted, but maintains the heap property. If k is
+  // greater than hi - lo, then fewer than k elements will be returned. The
+  // order of elements in a is unchanged by this operation.
+  function heapselect(a, lo, hi, k) {
+    var queue = new Array(k = Math.min(hi - lo, k)),
+        min,
+        i,
+        x,
+        d;
+
+    for (i = 0; i < k; ++i) queue[i] = a[lo++];
+    heap(queue, 0, k);
+
+    if (lo < hi) {
+      min = f(queue[0]);
+      do {
+        if (x = f(d = a[lo]) > min) {
+          queue[0] = d;
+          min = f(heap(queue, 0, k)[0]);
+        }
+      } while (++lo < hi);
+    }
+
+    return queue;
+  }
+
+  return heapselect;
+}
+var insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity);
+
+insertionsort.by = insertionsort_by;
+
+function insertionsort_by(f) {
+
+  function insertionsort(a, lo, hi) {
+    for (var i = lo + 1; i < hi; ++i) {
+      for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) {
+        a[j] = a[j - 1];
+      }
+      a[j] = t;
+    }
+    return a;
+  }
+
+  return insertionsort;
+}
+// Algorithm designed by Vladimir Yaroslavskiy.
+// Implementation based on the Dart project; see lib/dart/LICENSE for details.
+
+var quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity);
+
+quicksort.by = quicksort_by;
+
+function quicksort_by(f) {
+  var insertionsort = insertionsort_by(f);
+
+  function sort(a, lo, hi) {
+    return (hi - lo < quicksort_sizeThreshold
+        ? insertionsort
+        : quicksort)(a, lo, hi);
+  }
+
+  function quicksort(a, lo, hi) {
+
+    // Compute the two pivots by looking at 5 elements.
+    var sixth = (hi - lo) / 6 | 0,
+        i1 = lo + sixth,
+        i5 = hi - 1 - sixth,
+        i3 = lo + hi - 1 >> 1,  // The midpoint.
+        i2 = i3 - sixth,
+        i4 = i3 + sixth;
+
+    var e1 = a[i1], x1 = f(e1),
+        e2 = a[i2], x2 = f(e2),
+        e3 = a[i3], x3 = f(e3),
+        e4 = a[i4], x4 = f(e4),
+        e5 = a[i5], x5 = f(e5);
+
+    var t;
+
+    // Sort the selected 5 elements using a sorting network.
+    if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t;
+    if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;
+    if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t;
+    if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;
+    if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t;
+    if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t;
+    if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t;
+    if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t;
+    if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t;
+
+    var pivot1 = e2, pivotValue1 = x2,
+        pivot2 = e4, pivotValue2 = x4;
+
+    // e2 and e4 have been saved in the pivot variables. They will be written
+    // back, once the partitioning is finished.
+    a[i1] = e1;
+    a[i2] = a[lo];
+    a[i3] = e3;
+    a[i4] = a[hi - 1];
+    a[i5] = e5;
+
+    var less = lo + 1,   // First element in the middle partition.
+        great = hi - 2;  // Last element in the middle partition.
+
+    // Note that for value comparison, <, <=, >= and > coerce to a primitive via
+    // Object.prototype.valueOf; == and === do not, so in order to be consistent
+    // with natural order (such as for Date objects), we must do two compares.
+    var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2;
+    if (pivotsEqual) {
+
+      // Degenerated case where the partitioning becomes a dutch national flag
+      // problem.
+      //
+      // [ |  < pivot  | == pivot | unpartitioned | > pivot  | ]
+      //  ^             ^          ^             ^            ^
+      // left         less         k           great         right
+      //
+      // a[left] and a[right] are undefined and are filled after the
+      // partitioning.
+      //
+      // Invariants:
+      //   1) for x in ]left, less[ : x < pivot.
+      //   2) for x in [less, k[ : x == pivot.
+      //   3) for x in ]great, right[ : x > pivot.
+      for (var k = less; k <= great; ++k) {
+        var ek = a[k], xk = f(ek);
+        if (xk < pivotValue1) {
+          if (k !== less) {
+            a[k] = a[less];
+            a[less] = ek;
+          }
+          ++less;
+        } else if (xk > pivotValue1) {
+
+          // Find the first element <= pivot in the range [k - 1, great] and
+          // put [:ek:] there. We know that such an element must exist:
+          // When k == less, then el3 (which is equal to pivot) lies in the
+          // interval. Otherwise a[k - 1] == pivot and the search stops at k-1.
+          // Note that in the latter case invariant 2 will be violated for a
+          // short amount of time. The invariant will be restored when the
+          // pivots are put into their final positions.
+          while (true) {
+            var greatValue = f(a[great]);
+            if (greatValue > pivotValue1) {
+              great--;
+              // This is the only location in the while-loop where a new
+              // iteration is started.
+              continue;
+            } else if (greatValue < pivotValue1) {
+              // Triple exchange.
+              a[k] = a[less];
+              a[less++] = a[great];
+              a[great--] = ek;
+              break;
+            } else {
+              a[k] = a[great];
+              a[great--] = ek;
+              // Note: if great < k then we will exit the outer loop and fix
+              // invariant 2 (which we just violated).
+              break;
+            }
+          }
+        }
+      }
+    } else {
+
+      // We partition the list into three parts:
+      //  1. < pivot1
+      //  2. >= pivot1 && <= pivot2
+      //  3. > pivot2
+      //
+      // During the loop we have:
+      // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned  | > pivot2  | ]
+      //  ^            ^                        ^              ^             ^
+      // left         less                     k              great        right
+      //
+      // a[left] and a[right] are undefined and are filled after the
+      // partitioning.
+      //
+      // Invariants:
+      //   1. for x in ]left, less[ : x < pivot1
+      //   2. for x in [less, k[ : pivot1 <= x && x <= pivot2
+      //   3. for x in ]great, right[ : x > pivot2
+      for (var k = less; k <= great; k++) {
+        var ek = a[k], xk = f(ek);
+        if (xk < pivotValue1) {
+          if (k !== less) {
+            a[k] = a[less];
+            a[less] = ek;
+          }
+          ++less;
+        } else {
+          if (xk > pivotValue2) {
+            while (true) {
+              var greatValue = f(a[great]);
+              if (greatValue > pivotValue2) {
+                great--;
+                if (great < k) break;
+                // This is the only location inside the loop where a new
+                // iteration is started.
+                continue;
+              } else {
+                // a[great] <= pivot2.
+                if (greatValue < pivotValue1) {
+                  // Triple exchange.
+                  a[k] = a[less];
+                  a[less++] = a[great];
+                  a[great--] = ek;
+                } else {
+                  // a[great] >= pivot1.
+                  a[k] = a[great];
+                  a[great--] = ek;
+                }
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // Move pivots into their final positions.
+    // We shrunk the list from both sides (a[left] and a[right] have
+    // meaningless values in them) and now we move elements from the first
+    // and third partition into these locations so that we can store the
+    // pivots.
+    a[lo] = a[less - 1];
+    a[less - 1] = pivot1;
+    a[hi - 1] = a[great + 1];
+    a[great + 1] = pivot2;
+
+    // The list is now partitioned into three partitions:
+    // [ < pivot1   | >= pivot1 && <= pivot2   |  > pivot2   ]
+    //  ^            ^                        ^             ^
+    // left         less                     great        right
+
+    // Recursive descent. (Don't include the pivot values.)
+    sort(a, lo, less - 1);
+    sort(a, great + 2, hi);
+
+    if (pivotsEqual) {
+      // All elements in the second partition are equal to the pivot. No
+      // need to sort them.
+      return a;
+    }
+
+    // In theory it should be enough to call _doSort recursively on the second
+    // partition.
+    // The Android source however removes the pivot elements from the recursive
+    // call if the second partition is too large (more than 2/3 of the list).
+    if (less < i1 && great > i5) {
+      var lessValue, greatValue;
+      while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less;
+      while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great;
+
+      // Copy paste of the previous 3-way partitioning with adaptions.
+      //
+      // We partition the list into three parts:
+      //  1. == pivot1
+      //  2. > pivot1 && < pivot2
+      //  3. == pivot2
+      //
+      // During the loop we have:
+      // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned  | == pivot2 ]
+      //              ^                      ^              ^
+      //            less                     k              great
+      //
+      // Invariants:
+      //   1. for x in [ *, less[ : x == pivot1
+      //   2. for x in [less, k[ : pivot1 < x && x < pivot2
+      //   3. for x in ]great, * ] : x == pivot2
+      for (var k = less; k <= great; k++) {
+        var ek = a[k], xk = f(ek);
+        if (xk <= pivotValue1 && xk >= pivotValue1) {
+          if (k !== less) {
+            a[k] = a[less];
+            a[less] = ek;
+          }
+          less++;
+        } else {
+          if (xk <= pivotValue2 && xk >= pivotValue2) {
+            while (true) {
+              var greatValue = f(a[great]);
+              if (greatValue <= pivotValue2 && greatValue >= pivotValue2) {
+                great--;
+                if (great < k) break;
+                // This is the only location inside the loop where a new
+                // iteration is started.
+                continue;
+              } else {
+                // a[great] < pivot2.
+                if (greatValue < pivotValue1) {
+                  // Triple exchange.
+                  a[k] = a[less];
+                  a[less++] = a[great];
+                  a[great--] = ek;
+                } else {
+                  // a[great] == pivot1.
+                  a[k] = a[great];
+                  a[great--] = ek;
+                }
+                break;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // The second partition has now been cleared of pivot elements and looks
+    // as follows:
+    // [  *  |  > pivot1 && < pivot2  | * ]
+    //        ^                      ^
+    //       less                  great
+    // Sort the second partition using recursive descent.
+
+    // The second partition looks as follows:
+    // [  *  |  >= pivot1 && <= pivot2  | * ]
+    //        ^                        ^
+    //       less                    great
+    // Simply sort it by recursive descent.
+
+    return sort(a, less, great + 1);
+  }
+
+  return sort;
+}
+
+var quicksort_sizeThreshold = 32;
+var crossfilter_array8 = crossfilter_arrayUntyped,
+    crossfilter_array16 = crossfilter_arrayUntyped,
+    crossfilter_array32 = crossfilter_arrayUntyped,
+    crossfilter_arrayLengthen = crossfilter_identity,
+    crossfilter_arrayWiden = crossfilter_identity;
+
+if (typeof Uint8Array !== "undefined") {
+  crossfilter_array8 = function(n) { return new Uint8Array(n); };
+  crossfilter_array16 = function(n) { return new Uint16Array(n); };
+  crossfilter_array32 = function(n) { return new Uint32Array(n); };
+
+  crossfilter_arrayLengthen = function(array, length) {
+    var copy = new array.constructor(length);
+    copy.set(array);
+    return copy;
+  };
+
+  crossfilter_arrayWiden = function(array, width) {
+    var copy;
+    switch (width) {
+      case 16: copy = crossfilter_array16(array.length); break;
+      case 32: copy = crossfilter_array32(array.length); break;
+      default: throw new Error("invalid array width!");
+    }
+    copy.set(array);
+    return copy;
+  };
+}
+
+function crossfilter_arrayUntyped(n) {
+  return new Array(n);
+}
+function crossfilter_filterExact(bisect, value) {
+  return function(values) {
+    var n = values.length;
+    return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)];
+  };
+}
+
+function crossfilter_filterRange(bisect, range) {
+  var min = range[0],
+      max = range[1];
+  return function(values) {
+    var n = values.length;
+    return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)];
+  };
+}
+
+function crossfilter_filterAll(values) {
+  return [0, values.length];
+}
+function crossfilter_null() {
+  return null;
+}
+function crossfilter_zero() {
+  return 0;
+}
+function crossfilter_reduceIncrement(p) {
+  return p + 1;
+}
+
+function crossfilter_reduceDecrement(p) {
+  return p - 1;
+}
+
+function crossfilter_reduceAdd(f) {
+  return function(p, v) {
+    return p + +f(v);
+  };
+}
+
+function crossfilter_reduceSubtract(f) {
+  return function(p, v) {
+    return p - f(v);
+  };
+}
+exports.crossfilter = crossfilter;
+
+function crossfilter() {
+  var crossfilter = {
+    add: add,
+    dimension: dimension,
+    groupAll: groupAll,
+    size: size
+  };
+
+  var data = [], // the records
+      n = 0, // the number of records; data.length
+      m = 0, // number of dimensions in use
+      M = 8, // number of dimensions that can fit in `filters`
+      filters = crossfilter_array8(0), // M bits per record; 1 is filtered out
+      filterListeners = [], // when the filters change
+      dataListeners = []; // when data is added
+
+  // Adds the specified new records to this crossfilter.
+  function add(newData) {
+    var n0 = n,
+        n1 = newData.length;
+
+    // If there's actually new data to add…
+    // Merge the new data into the existing data.
+    // Lengthen the filter bitset to handle the new records.
+    // Notify listeners (dimensions and groups) that new data is available.
+    if (n1) {
+      data = data.concat(newData);
+      filters = crossfilter_arrayLengthen(filters, n += n1);
+      dataListeners.forEach(function(l) { l(newData, n0, n1); });
+    }
+
+    return crossfilter;
+  }
+
+  // Adds a new dimension with the specified value accessor function.
+  function dimension(value) {
+    var dimension = {
+      filter: filter,
+      filterExact: filterExact,
+      filterRange: filterRange,
+      filterAll: filterAll,
+      top: top,
+      group: group,
+      groupAll: groupAll
+    };
+
+    var one = 1 << m++, // bit mask, e.g., 00001000
+        zero = ~one, // inverted one, e.g., 11110111
+        values, // sorted, cached array
+        index, // value rank ↦ object id
+        newValues, // temporary array storing newly-added values
+        newIndex, // temporary array storing newly-added index
+        sort = quicksort_by(function(i) { return newValues[i]; }),
+        refilter = crossfilter_filterAll, // for recomputing filter
+        indexListeners = [], // when data is added
+        lo0 = 0,
+        hi0 = 0;
+
+    // Updating a dimension is a two-stage process. First, we must update the
+    // associated filters for the newly-added records. Once all dimensions have
+    // updated their filters, the groups are notified to update.
+    dataListeners.unshift(preAdd);
+    dataListeners.push(postAdd);
+
+    // Incorporate any existing data into this dimension, and make sure that the
+    // filter bitset is wide enough to handle the new dimension.
+    if (m > M) filters = crossfilter_arrayWiden(filters, M <<= 1);
+    preAdd(data, 0, n);
+    postAdd(data, 0, n);
+
+    // Incorporates the specified new records into this dimension.
+    // This function is responsible for updating filters, values, and index.
+    function preAdd(newData, n0, n1) {
+
+      // Permute new values into natural order using a sorted index.
+      newValues = newData.map(value);
+      newIndex = sort(crossfilter_range(n1), 0, n1);
+      newValues = permute(newValues, newIndex);
+
+      // Bisect newValues to determine which new records are selected.
+      var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i;
+      for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one;
+      for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one;
+
+      // If this dimension previously had no data, then we don't need to do the
+      // more expensive merge operation; use the new values and index as-is.
+      if (!n0) {
+        values = newValues;
+        index = newIndex;
+        lo0 = lo1;
+        hi0 = hi1;
+        return;
+      }
+
+      var oldValues = values,
+          oldIndex = index,
+          i0 = 0,
+          i1 = 0;
+
+      // Otherwise, create new arrays into which to merge new and old.
+      values = new Array(n);
+      index = crossfilter_index(n, n);
+
+      // Merge the old and new sorted values, and old and new index.
+      for (i = 0; i0 < n0 && i1 < n1; ++i) {
+        if (oldValues[i0] < newValues[i1]) {
+          values[i] = oldValues[i0];
+          index[i] = oldIndex[i0++];
+        } else {
+          values[i] = newValues[i1];
+          index[i] = newIndex[i1++] + n0;
+        }
+      }
+
+      // Add any remaining old values.
+      for (; i0 < n0; ++i0, ++i) {
+        values[i] = oldValues[i0];
+        index[i] = oldIndex[i0];
+      }
+
+      // Add any remaining new values.
+      for (; i1 < n1; ++i1, ++i) {
+        values[i] = newValues[i1];
+        index[i] = newIndex[i1] + n0;
+      }
+
+      // Bisect again to recompute lo0 and hi0.
+      bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1];
+    }
+
+    // When all filters have updated, notify index listeners of the new values.
+    function postAdd(newData, n0, n1) {
+      indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); });
+      newValues = newIndex = null;
+    }
+
+    // Updates the selected values based on the specified bounds [lo, hi].
+    // This implementation is used by all the public filter methods.
+    function filterIndex(bounds) {
+      var i,
+          j,
+          k,
+          lo1 = bounds[0],
+          hi1 = bounds[1],
+          added = [],
+          removed = [];
+
+      // Fast incremental update based on previous lo index.
+      if (lo1 < lo0) {
+        for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {
+          filters[k = index[i]] ^= one;
+          added.push(k);
+        }
+      } else if (lo1 > lo0) {
+        for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {
+          filters[k = index[i]] ^= one;
+          removed.push(k);
+        }
+      }
+
+      // Fast incremental update based on previous hi index.
+      if (hi1 > hi0) {
+        for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {
+          filters[k = index[i]] ^= one;
+          added.push(k);
+        }
+      } else if (hi1 < hi0) {
+        for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {
+          filters[k = index[i]] ^= one;
+          removed.push(k);
+        }
+      }
+
+      lo0 = lo1;
+      hi0 = hi1;
+      filterListeners.forEach(function(l) { l(one, added, removed); });
+      return dimension;
+    }
+
+    // Filters this dimension using the specified range, value, or null.
+    // If the range is null, this is equivalent to filterAll.
+    // If the range is an array, this is equivalent to filterRange.
+    // Otherwise, this is equivalent to filterExact.
+    function filter(range) {
+      return range == null
+          ? filterAll() : Array.isArray(range)
+          ? filterRange(range)
+          : filterExact(range);
+    }
+
+    // Filters this dimension to select the exact value.
+    function filterExact(value) {
+      return filterIndex((refilter = crossfilter_filterExact(bisect, value))(values));
+    }
+
+    // Filters this dimension to select the specified range [lo, hi].
+    // The lower bound is inclusive, and the upper bound is exclusive.
+    function filterRange(range) {
+      return filterIndex((refilter = crossfilter_filterRange(bisect, range))(values));
+    }
+
+    // Clears any filters on this dimension.
+    function filterAll() {
+      return filterIndex((refilter = crossfilter_filterAll)(values));
+    }
+
+    // Returns the top K selected records, based on this dimension's order.
+    // Note: observes this dimension's filter, unlike group and groupAll.
+    function top(k) {
+      var array = [],
+          i = hi0,
+          j;
+
+      while (--i >= lo0 && k > 0) {
+        if (!filters[j = index[i]]) {
+          array.push(data[j]);
+          --k;
+        }
+      }
+
+      return array;
+    }
+
+    // Adds a new group to this dimension, using the specified key function.
+    function group(key) {
+      var group = {
+        top: top,
+        all: all,
+        reduce: reduce,
+        reduceCount: reduceCount,
+        reduceSum: reduceSum,
+        order: order,
+        orderNatural: orderNatural,
+        size: size
+      };
+
+      var groups, // array of {key, value}
+          groupIndex, // object id ↦ group id
+          groupWidth = 8,
+          groupCapacity = crossfilter_capacity(groupWidth),
+          k = 0, // cardinality
+          select,
+          heap,
+          reduceAdd,
+          reduceRemove,
+          reduceInitial,
+          update = crossfilter_null,
+          reset = crossfilter_null,
+          resetNeeded = true;
+
+      if (arguments.length < 1) key = crossfilter_identity;
+
+      // The group listens to the crossfilter for when any dimension changes, so
+      // that it can update the associated reduce values. It must also listen to
+      // the parent dimension for when data is added, and compute new keys.
+      filterListeners.push(update);
+      indexListeners.push(add);
+
+      // Incorporate any existing data into the grouping.
+      add(values, index, 0, n);
+
+      // Incorporates the specified new values into this group.
+      // This function is responsible for updating groups and groupIndex.
+      function add(newValues, newIndex, n0, n1) {
+        var oldGroups = groups,
+            reIndex = crossfilter_index(k, groupCapacity),
+            add = reduceAdd,
+            initial = reduceInitial,
+            k0 = k, // old cardinality
+            i0 = 0, // index of old group
+            i1 = 0, // index of new record
+            j, // object id
+            g0, // old group
+            x0, // old key
+            x1, // new key
+            g, // group to add
+            x; // key of group to add
+
+        // If a reset is needed, we don't need to update the reduce values.
+        if (resetNeeded) add = initial = crossfilter_null;
+
+        // Reset the new groups (k is a lower bound).
+        // Also, make sure that groupIndex exists and is long enough.
+        groups = new Array(k), k = 0;
+        groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity);
+
+        // Get the first old key (x0 of g0), if it exists.
+        if (k0) x0 = (g0 = oldGroups[0]).key;
+
+        // Find the first new key (x1), skipping NaN keys.
+        while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1;
+
+        // While new keys remain…
+        while (i1 < n1) {
+
+          // Determine the lesser of the two current keys; new and old.
+          // If there are no old keys remaining, then always add the new key.
+          if (g0 && x0 <= x1) {
+            g = g0, x = x0;
+
+            // Record the new index of the old group.
+            reIndex[i0] = k;
+
+            // Retrieve the next old key.
+            if (g0 = oldGroups[++i0]) x0 = g0.key;
+          } else {
+            g = {key: x1, value: initial()}, x = x1;
+          }
+
+          // Add the lesser group.
+          groups[k] = g;
+
+          // Add any selected records belonging to the added group, while
+          // advancing the new key and populating the associated group index.
+          while (!(x1 > x)) {
+            groupIndex[j = newIndex[i1] + n0] = k;
+            if (!(filters[j] & zero)) g.value = add(g.value, data[j]);
+            if (++i1 >= n1) break;
+            x1 = key(newValues[i1]);
+          }
+
+          groupIncrement();
+        }
+
+        // Add any remaining old groups that were greater than all new keys.
+        // No incremental reduce is needed; these groups have no new records.
+        // Also record the new index of the old group.
+        while (i0 < k0) {
+          groups[reIndex[i0] = k] = oldGroups[i0++];
+          groupIncrement();
+        }
+
+        // If we added any new groups before any old groups,
+        // update the group index of all the old records.
+        if (k > i0) for (i0 = 0; i0 < n0; ++i0) {
+          groupIndex[i0] = reIndex[groupIndex[i0]];
+        }
+
+        // Modify the update and reset behavior based on the cardinality.
+        // If the cardinality is less than or equal to one, then the groupIndex
+        // is not needed. If the cardinality is zero, then there are no records
+        // and therefore no groups to update or reset. Note that we also must
+        // change the registered listener to point to the new method.
+        j = filterListeners.indexOf(update);
+        if (k > 1) {
+          update = updateMany;
+          reset = resetMany;
+        } else {
+          if (k === 1) {
+            update = updateOne;
+            reset = resetOne;
+          } else {
+            update = crossfilter_null;
+            reset = crossfilter_null;
+          }
+          groupIndex = null;
+        }
+        filterListeners[j] = update;
+
+        // Count the number of added groups,
+        // and widen the group index as needed.
+        function groupIncrement() {
+          if (++k === groupCapacity) {
+            reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1);
+            groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth);
+            groupCapacity = crossfilter_capacity(groupWidth);
+          }
+        }
+      }
+
+      // Reduces the specified selected or deselected records.
+      // This function is only used when the cardinality is greater than 1.
+      function updateMany(filterOne, added, removed) {
+        if (filterOne === one || resetNeeded) return;
+
+        var i,
+            k,
+            n,
+            g;
+
+        // Add the added values.
+        for (i = 0, n = added.length; i < n; ++i) {
+          if (!(filters[k = added[i]] & zero)) {
+            g = groups[groupIndex[k]];
+            g.value = reduceAdd(g.value, data[k]);
+          }
+        }
+
+        // Remove the removed values.
+        for (i = 0, n = removed.length; i < n; ++i) {
+          if ((filters[k = removed[i]] & zero) === filterOne) {
+            g = groups[groupIndex[k]];
+            g.value = reduceRemove(g.value, data[k]);
+          }
+        }
+      }
+
+      // Reduces the specified selected or deselected records.
+      // This function is only used when the cardinality is 1.
+      function updateOne(filterOne, added, removed) {
+        if (filterOne === one || resetNeeded) return;
+
+        var i,
+            k,
+            n,
+            g = groups[0];
+
+        // Add the added values.
+        for (i = 0, n = added.length; i < n; ++i) {
+          if (!(filters[k = added[i]] & zero)) {
+            g.value = reduceAdd(g.value, data[k]);
+          }
+        }
+
+        // Remove the removed values.
+        for (i = 0, n = removed.length; i < n; ++i) {
+          if ((filters[k = removed[i]] & zero) === filterOne) {
+            g.value = reduceRemove(g.value, data[k]);
+          }
+        }
+      }
+
+      // Recomputes the group reduce values from scratch.
+      // This function is only used when the cardinality is greater than 1.
+      function resetMany() {
+        var i,
+            g;
+
+        // Reset all group values.
+        for (i = 0; i < k; ++i) {
+          groups[i].value = reduceInitial();
+        }
+
+        // Add any selected records.
+        for (i = 0; i < n; ++i) {
+          if (!(filters[i] & zero)) {
+            g = groups[groupIndex[i]];
+            g.value = reduceAdd(g.value, data[i]);
+          }
+        }
+      }
+
+      // Recomputes the group reduce values from scratch.
+      // This function is only used when the cardinality is 1.
+      function resetOne() {
+        var i,
+            g = groups[0];
+
+        // Reset the singleton group values.
+        g.value = reduceInitial();
+
+        // Add any selected records.
+        for (i = 0; i < n; ++i) {
+          if (!(filters[i] & zero)) {
+            g.value = reduceAdd(g.value, data[i]);
+          }
+        }
+      }
+
+      // Returns the array of group values, in the dimension's natural order.
+      function all() {
+        if (resetNeeded) reset(), resetNeeded = false;
+        return groups;
+      }
+
+      // Returns a new array containing the top K group values, in reduce order.
+      function top(k) {
+        var top = select(all(), 0, groups.length, k);
+        return heap.sort(top, 0, top.length);
+      }
+
+      // Sets the reduce behavior for this group to use the specified functions.
+      // This method lazily recomputes the reduce values, waiting until needed.
+      function reduce(add, remove, initial) {
+        reduceAdd = add;
+        reduceRemove = remove;
+        reduceInitial = initial;
+        resetNeeded = true;
+        return group;
+      }
+
+      // A convenience method for reducing by count.
+      function reduceCount() {
+        return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);
+      }
+
+      // A convenience method for reducing by sum(value).
+      function reduceSum(value) {
+        return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);
+      }
+
+      // Sets the reduce order, using the specified accessor.
+      function order(value) {
+        select = heapselect_by(valueOf);
+        heap = heap_by(valueOf);
+        function valueOf(d) { return value(d.value); }
+        return group;
+      }
+
+      // A convenience method for natural ordering by reduce value.
+      function orderNatural() {
+        return order(crossfilter_identity);
+      }
+
+      // Returns the cardinality of this group, irrespective of any filters.
+      function size() {
+        return k;
+      }
+
+      return reduceCount().orderNatural();
+    }
+
+    // A convenience function for generating a singleton group.
+    function groupAll() {
+      var g = group(crossfilter_null), all = g.all;
+      delete g.all;
+      delete g.top;
+      delete g.order;
+      delete g.orderNatural;
+      delete g.size;
+      g.value = function() { return all()[0].value; };
+      return g;
+    }
+
+    return dimension;
+  }
+
+  // A convenience method for groupAll on a dummy dimension.
+  // This implementation can be optimized since it is always cardinality 1.
+  function groupAll() {
+    var group = {
+      reduce: reduce,
+      reduceCount: reduceCount,
+      reduceSum: reduceSum,
+      value: value
+    };
+
+    var reduceValue,
+        reduceAdd,
+        reduceRemove,
+        reduceInitial,
+        resetNeeded = true;
+
+    // The group listens to the crossfilter for when any dimension changes, so
+    // that it can update the reduce value. It must also listen to the parent
+    // dimension for when data is added.
+    filterListeners.push(update);
+    dataListeners.push(add);
+
+    // For consistency; actually a no-op since resetNeeded is true.
+    add(data, 0, n);
+
+    // Incorporates the specified new values into this group.
+    function add(newData, n0, n1) {
+      var i;
+
+      if (resetNeeded) return;
+
+      // Add the added values.
+      for (i = n0; i < n; ++i) {
+        if (!filters[i]) {
+          reduceValue = reduceAdd(reduceValue, data[i]);
+        }
+      }
+    }
+
+    // Reduces the specified selected or deselected records.
+    function update(filterOne, added, removed) {
+      var i,
+          k,
+          n;
+
+      if (resetNeeded) return;
+
+      // Add the added values.
+      for (i = 0, n = added.length; i < n; ++i) {
+        if (!filters[k = added[i]]) {
+          reduceValue = reduceAdd(reduceValue, data[k]);
+        }
+      }
+
+      // Remove the removed values.
+      for (i = 0, n = removed.length; i < n; ++i) {
+        if (filters[k = removed[i]] === filterOne) {
+          reduceValue = reduceRemove(reduceValue, data[k]);
+        }
+      }
+    }
+
+    // Recomputes the group reduce value from scratch.
+    function reset() {
+      var i;
+
+      reduceValue = reduceInitial();
+
+      for (i = 0; i < n; ++i) {
+        if (!filters[i]) {
+          reduceValue = reduceAdd(reduceValue, data[i]);
+        }
+      }
+    }
+
+    // Sets the reduce behavior for this group to use the specified functions.
+    // This method lazily recomputes the reduce value, waiting until needed.
+    function reduce(add, remove, initial) {
+      reduceAdd = add;
+      reduceRemove = remove;
+      reduceInitial = initial;
+      resetNeeded = true;
+      return group;
+    }
+
+    // A convenience method for reducing by count.
+    function reduceCount() {
+      return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero);
+    }
+
+    // A convenience method for reducing by sum(value).
+    function reduceSum(value) {
+      return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero);
+    }
+
+    // Returns the computed reduce value.
+    function value() {
+      if (resetNeeded) reset(), resetNeeded = false;
+      return reduceValue;
+    }
+
+    return reduceCount();
+  }
+
+  // Returns the number of records in this crossfilter, irrespective of any filters.
+  function size() {
+    return n;
+  }
+
+  return arguments.length
+      ? add(arguments[0])
+      : crossfilter;
+}
+
+// Returns an array of size n, big enough to store ids up to m.
+function crossfilter_index(n, m) {
+  return (m < 0x101
+      ? crossfilter_array8 : m < 0x10001
+      ? crossfilter_array16
+      : crossfilter_array32)(n);
+}
+
+// Constructs a new array of size n, with sequential values from 0 to n - 1.
+function crossfilter_range(n) {
+  var range = crossfilter_index(n, n);
+  for (var i = -1; ++i < n;) range[i] = i;
+  return range;
+}
+
+function crossfilter_capacity(w) {
+  return w === 8
+      ? 0x100 : w === 16
+      ? 0x10000
+      : 0x100000000;
+}
+})(this);
diff --git a/lib/crossfilter.min.js b/lib/crossfilter.min.js
new file mode 100644
index 0000000..981f0d6
--- /dev/null
+++ b/lib/crossfilter.min.js
@@ -0,0 +1 @@
+(function(a){function b(a){return a}function c(a,b){for(var c=0,d=b.length,e=new Array(d);c<d;++c)e[c]=a[b[c]];return e}function e(a){function b(b,c,d,e){while(d<e){var f=d+e>>1;a(b[f])<c?d=f+1:e=f}return d}function c(b,c,d,e){while(d<e){var f=d+e>>1;c<a(b[f])?e=f:d=f+1}return d}return c.right=c,c.left=b,c}function g(a){function b(a,b,c){var e=c-b,f=(e>>>1)+1;while(--f>0)d(a,f,e,b);return a}function c(a,b,c){var e=c-b,f;while(--e>0)f=a[b],a[b]=a[b+e],a[b+e]=f,d(a,1,e,b);return a}function d(b,c,d,e){var f=b[--e+c],g=a(f),h;while((h=c<<1)<=d){h<d&&a(b[e+h])>a(b[e+h+1])&&h++;if(g<=a(b[e+h]))break;b[e+c]=b[e+h],c=h}b[e+c]=f}return b.sort=c,b}function i(a){function c(c,d,e,f){var g=new Array(f=Math.min(e-d,f)),h,i,j,k;for(i=0;i<f;++i)g[i]=c[d++];b(g,0,f);if(d<e){h=a(g[0]);do if(j=a(k=c[d])>h)g[0]=k,h=a(b(g,0,f)[0]);while(++d<e)}return g}var b=g(a);return c}function k(a){function b(b,c,d){for(var e=c+1;e<d;++e){for(var f=e,g=b[e],h=a(g);f>c&&a(b[f-1])>h;--f)b[f]=b[f-1];b[f]=g}return b}return b}function m(a){function c(a,c,e){return(e-c<n?b:d)(a,c,e)}function d(b,d,e){var f=(e-d)/6|0,g=d+f,h=e-1-f,i=d+e-1>>1,j=i-f,k=i+f,l=b[g],m=a(l),n=b[j],o=a(n),p=b[i],q=a(p),r=b[k],s=a(r),t=b[h],u=a(t),v;m>o&&(v=l,l=n,n=v,v=m,m=o,o=v),s>u&&(v=r,r=t,t=v,v=s,s=u,u=v),m>q&&(v=l,l=p,p=v,v=m,m=q,q=v),o>q&&(v=n,n=p,p=v,v=o,o=q,q=v),m>s&&(v=l,l=r,r=v,v=m,m=s,s=v),q>s&&(v=p,p=r,r=v,v=q,q=s,s=v),o>u&&(v=n,n=t,t=v,v=o,o=u,u=v),o>q&&(v=n,n=p,p=v,v=o,o=q,q=v),s>u&&(v=r,r=t,t=v,v=s,s=u,u=v);var w=n,x=o,y=r,z=s;b[g]=l,b[j]=b[d],b[i]=p,b[k]=b[e-1],b[h]=t;var A=d+1,B=e-2,C=x<=z&&x>=z;if(C)for(var D=A;D<=B;++D){var E=b[D],F=a(E);if(F<x)D!==A&&(b[D]=b[A],b[A]=E),++A;else if(F>x)for(;;){var G=a(b[B]);if(G>x){B--;continue}if(G<x){b[D]=b[A],b[A++]=b[B],b[B--]=E;break}b[D]=b[B],b[B--]=E;break}}else for(var D=A;D<=B;D++){var E=b[D],F=a(E);if(F<x)D!==A&&(b[D]=b[A],b[A]=E),++A;else if(F>z)for(;;){var G=a(b[B]);if(G>z){B--;if(B<D)break;continue}G<x?(b[D]=b[A],b[A++]=b[B],b[B--]=E):(b[D]=b[B],b[B--]=E);break}}b[d]=b[A-1],b[A-1]=w,b[e-1]=b[B+1],b[B+1]=y,c(b,d,A-1),c(b,B+2,e);if(C)return b;if(A<g&&B>h){var H,G;while((H=a(b[A]))<=x&&H>=x)++A;while((G=a(b[B]))<=z&&G>=z)--B;for(var D=A;D<=B;D++){var E=b[D],F=a(E);if(F<=x&&F>=x)D!==A&&(b[D]=b[A],b[A]=E),A++;else if(F<=z&&F>=z)for(;;){var G=a(b[B]);if(G<=z&&G>=z){B--;if(B<D)break;continue}G<x?(b[D]=b[A],b[A++]=b[B],b[B--]=E):(b[D]=b[B],b[B--]=E);break}}}return c(b,A,B+1)}var b=k(a);return c}function t(a){return new Array(a)}function u(a,b){return function(c){var d=c.length;return[a.left(c,b,0,d),a.right(c,b,0,d)]}}function v(a,b){var c=b[0],d=b[1];return function(b){var e=b.length;return[a.left(b,c,0,e),a.left(b,d,0,e)]}}function w(a){return[0,a.length]}function x(){return null}function y(){return 0}function z(a){return a+1}function A(a){return a-1}function B(a){return function(b,c){return b+ +a(c)}}function C(a){return function(b,c){return b-a(c)}}function D(){function p(b){var c=f,d=b.length;return d&&(e=e.concat(b),k=r(k,f+=d),n.forEach(function(a){a(b,c,d)})),a}function q(a){function P(b,d,e){H=b.map(a),I=J(F(e),0,e),H=c(H,I);var g=K(H),h=g[0],i=g[1],j;for(j=0;j<h;++j)k[I[j]+d]|=p;for(j=i;j<e;++j)k[I[j]+d]|=p;if(!d){t=H,D=I,N=h,O=i;return}var l=t,m=D,n=0,o=0;t=new Array(f),D=E(f,f);for(j=0;n<d&&o<e;++j)l[n]<H[o]?(t[j]=l[n],D[j]=m[n++]):(t[j]=H[o],D[j]=I[o++]+d);for(;n<d;++n,++j)t[j]=l[n],D[j]=m[n];for(;o<e;++o,++j)t[j]=H[o],D[j]=I[o]+d;g=K(t),N=g[0],O=g[1]}function Q(a,b,c){L.forEach(function(a){a(H,I,b,c)}),H=I=null}function R(a){var b,c,d,e=a[0],f=a[1],g=[],h=[];if(e<N)for(b=e,c=Math.min(N,f);b<c;++b)k[d=D[b]]^=p,g.push(d);else if(e>N)for(b=N,c=Math.min(e,O);b<c;++b)k[d=D[b]]^=p,h.push(d);if(f>O)for(b=Math.max(e,O),c=f;b<c;++b)k[d=D[b]]^=p,g.push(d);else if(f<O)for(b=Math.max(N,f),c=O;b<c;++b)k[d=D[b]]^=p,h.push(d);return N=e,O=f,l.forEach(function(a){a(p,g,h)}),o}function S(a){return a==null?V():Array.isArray(a)?U(a):T(a)}function T(a){return R((K=u(d,a))(t))}function U(a){return R((K=v(d,a))(t))}function V(){return R((K=w)(t))}function W(a){var b=[],c=O,d;while(--c>=N&&a>0)k[d=D[c]]||(b.push(e[d]),--a);return b}function X(a){function K(b,c,g,i){function Q(){++n===m&&(p=s(p,j<<=1),h=s(h,j),m=G(j))}var o=d,p=E(n,m),t=v,u=F,w=n,y=0,z=0,A,B,C,D,K,L;J&&(t=u=x),d=new Array(n),n=0,h=w>1?r(h,f):E(f,m),w&&(C=(B=o[0]).key);while(z<i&&!((D=a(b[z]))>=D))++z;while(z<i){if(B&&C<=D){K=B,L=C,p[y]=n;if(B=o[++y])C=B.key}else K={key:D,value:u()},L=D;d[n]=K;while(!(D>L)){h[A=c[z]+g]=n,k[A]&q||(K.value=t(K.value,e[A]));if(++z>=i)break;D=a(b[z])}Q()}while(y<w)d[p[y]=n]=o[y++],Q();if(n>y)for(y=0;y<g;++y)h[y]=p[h[y]];A=l.indexOf(H),n>1?(H=M,I=O):(n===1?(H=N,I=P):(H=x,I=x),h=null),l[A]=H}function M(a,b,c){if(a===p||J)return;var f,g,i,j;for(f=0,i=b.length;f<i;++f)k[g=b[f]]&q||(j=d[h[g]],j.value=v(j.value,e[g]));for(f=0,i=c.length;f<i;++f)(k[g=c[f]]&q)===a&&(j=d[h[g]],j.value=w(j.value,e[g]))}function N(a,b,c){if(a===p||J)return;var f,g,h,i=d[0];for(f=0,h=b.length;f<h;++f)k[g=b[f]]&q||(i.value=v(i.value,e[g]));for(f=0,h=c.length;f<h;++f)(k[g=c[f]]&q)===a&&(i.value=w(i.value,e[g]))}function O(){var a,b;for(a=0;a<n;++a)d[a].value=F();for(a=0;a<f;++a)k[a]&q||(b=d[h[a]],b.value=v(b.value,e[a]))}function P(){var a,b=d[0];b.value=F();for(a=0;a<f;++a)k[a]&q||(b.value=v(b.value,e[a]))}function Q(){return J&&(I(),J=!1),d}function R(a){var b=o(Q(),0,d.length,a);return u.sort(b,0,b.length)}function S(a,b,d){return v=a,w=b,F=d,J=!0,c}function T(){return S(z,A,y)}function U(a){return S(B(a),C(a),y)}function V(a){function b(b){return a(b.value)}return o=i(b),u=g(b),c}function W(){return V(b)}function X(){return n}var c={top:R,all:Q,reduce:S,reduceCount:T,reduceSum:U,order:V,orderNatural:W,size:X},d,h,j=8,m=G(j),n=0,o,u,v,w,F,H=x,I=x,J=!0;return arguments.length<1&&(a=b),l.push(H),L.push(K),K(t,D,0,f),T().orderNatural()}function Y(){var a=X(x),b=a.all;return delete a.all,delete a.top,delete a.order,delete a.orderNatural,delete a.size,a.value=function(){return b()[0].value},a}var o={filter:S,filterExact:T,filterRange:U,filterAll:V,top:W,group:X,groupAll:Y},p=1<<h++,q=~p,t,D,H,I,J=m(function(a){return H[a]}),K=w,L=[],N=0,O=0;return n.unshift(P),n.push(Q),h>j&&(k=s(k,j<<=1)),P(e,0,f),Q(e,0,f),o}function t(){function i(a,d,g){var i;if(h)return;for(i=d;i<f;++i)k[i]||(b=c(b,e[i]))}function j(a,f,g){var i,j,l;if(h)return;for(i=0,l=f.length;i<l;++i)k[j=f[i]]||(b=c(b,e[j]));for(i=0,l=g.length;i<l;++i)k[j=g[i]]===a&&(b=d(b,e[j]))}function m(){var a;b=g();for(a=0;a<f;++a)k[a]||(b=c(b,e[a]))}function o(b,e,f){return c=b,d=e,g=f,h=!0,a}function p(){return o(z,A,y)}function q(a){return o(B(a),C(a),y)}function r(){return h&&(m(),h=!1),b}var a={reduce:o,reduceCount:p,reduceSum:q,value:r},b,c,d,g,h=!0;return l.push(j),n.push(i),i(e,0,f),p()}function D(){return f}var a={add:p,dimension:q,groupAll:t,size:D},e=[],f=0,h=0,j=8,k=o(0),l=[],n=[];return arguments.length?p(arguments[0]):a}function E(a,b){return(b<257?o:b<65537?p:q)(a)}function F(a){var b=E(a,a);for(var c=-1;++c<a;)b[c]=c;return b}function G(a){return a===8?256:a===16?65536:4294967296}D.version="1.0.3",D.permute=c;var d=D.bisect=e(b);d.by=e;var f=D.heap=g(b);f.by=g;var h=D.heapselect=i(b);h.by=i;var j=D.insertionsort=k(b);j.by=k;var l=D.quicksort=m(b);l.by=m;var n=32,o=t,p=t,q=t,r=b,s=b;typeof Uint8Array!="undefined"&&(o=function(a){return new Uint8Array(a)},p=function(a){return new Uint16Array(a)},q=function(a){return new Uint32Array(a)},r=function(a,b){var c=new a.constructor(b);return c.set(a),c},s=function(a,b){var c;switch(b){case 16:c=p(a.length);break;case 32:c=q(a.length);break;default:throw new Error("invalid array width!")}return c.set(a),c}),a.crossfilter=D})(this);
\ No newline at end of file
diff --git a/lib/d3.v2.js b/lib/d3.v2.js
new file mode 100644
index 0000000..714656b
--- /dev/null
+++ b/lib/d3.v2.js
@@ -0,0 +1,7033 @@
+(function() {
+  function d3_class(ctor, properties) {
+    try {
+      for (var key in properties) {
+        Object.defineProperty(ctor.prototype, key, {
+          value: properties[key],
+          enumerable: false
+        });
+      }
+    } catch (e) {
+      ctor.prototype = properties;
+    }
+  }
+  function d3_arrayCopy(pseudoarray) {
+    var i = -1, n = pseudoarray.length, array = [];
+    while (++i < n) array.push(pseudoarray[i]);
+    return array;
+  }
+  function d3_arraySlice(pseudoarray) {
+    return Array.prototype.slice.call(pseudoarray);
+  }
+  function d3_Map() {}
+  function d3_identity(d) {
+    return d;
+  }
+  function d3_this() {
+    return this;
+  }
+  function d3_true() {
+    return true;
+  }
+  function d3_functor(v) {
+    return typeof v === "function" ? v : function() {
+      return v;
+    };
+  }
+  function d3_rebind(target, source, method) {
+    return function() {
+      var value = method.apply(source, arguments);
+      return arguments.length ? target : value;
+    };
+  }
+  function d3_number(x) {
+    return x != null && !isNaN(x);
+  }
+  function d3_zipLength(d) {
+    return d.length;
+  }
+  function d3_splitter(d) {
+    return d == null;
+  }
+  function d3_collapse(s) {
+    return s.trim().replace(/\s+/g, " ");
+  }
+  function d3_range_integerScale(x) {
+    var k = 1;
+    while (x * k % 1) k *= 10;
+    return k;
+  }
+  function d3_dispatch() {}
+  function d3_dispatch_event(dispatch) {
+    function event() {
+      var z = listeners, i = -1, n = z.length, l;
+      while (++i < n) if (l = z[i].on) l.apply(this, arguments);
+      return dispatch;
+    }
+    var listeners = [], listenerByName = new d3_Map;
+    event.on = function(name, listener) {
+      var l = listenerByName.get(name), i;
+      if (arguments.length < 2) return l && l.on;
+      if (l) {
+        l.on = null;
+        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
+        listenerByName.remove(name);
+      }
+      if (listener) listeners.push(listenerByName.set(name, {
+        on: listener
+      }));
+      return dispatch;
+    };
+    return event;
+  }
+  function d3_format_precision(x, p) {
+    return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1);
+  }
+  function d3_format_typeDefault(x) {
+    return x + "";
+  }
+  function d3_format_group(value) {
+    var i = value.lastIndexOf("."), f = i >= 0 ? value.substring(i) : (i = value.length, ""), t = [];
+    while (i > 0) t.push(value.substring(i -= 3, i + 3));
+    return t.reverse().join(",") + f;
+  }
+  function d3_formatPrefix(d, i) {
+    var k = Math.pow(10, Math.abs(8 - i) * 3);
+    return {
+      scale: i > 8 ? function(d) {
+        return d / k;
+      } : function(d) {
+        return d * k;
+      },
+      symbol: d
+    };
+  }
+  function d3_ease_clamp(f) {
+    return function(t) {
+      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
+    };
+  }
+  function d3_ease_reverse(f) {
+    return function(t) {
+      return 1 - f(1 - t);
+    };
+  }
+  function d3_ease_reflect(f) {
+    return function(t) {
+      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
+    };
+  }
+  function d3_ease_identity(t) {
+    return t;
+  }
+  function d3_ease_poly(e) {
+    return function(t) {
+      return Math.pow(t, e);
+    };
+  }
+  function d3_ease_sin(t) {
+    return 1 - Math.cos(t * Math.PI / 2);
+  }
+  function d3_ease_exp(t) {
+    return Math.pow(2, 10 * (t - 1));
+  }
+  function d3_ease_circle(t) {
+    return 1 - Math.sqrt(1 - t * t);
+  }
+  function d3_ease_elastic(a, p) {
+    var s;
+    if (arguments.length < 2) p = .45;
+    if (arguments.length < 1) {
+      a = 1;
+      s = p / 4;
+    } else s = p / (2 * Math.PI) * Math.asin(1 / a);
+    return function(t) {
+      return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p);
+    };
+  }
+  function d3_ease_back(s) {
+    if (!s) s = 1.70158;
+    return function(t) {
+      return t * t * ((s + 1) * t - s);
+    };
+  }
+  function d3_ease_bounce(t) {
+    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+  }
+  function d3_eventCancel() {
+    d3.event.stopPropagation();
+    d3.event.preventDefault();
+  }
+  function d3_eventSource() {
+    var e = d3.event, s;
+    while (s = e.sourceEvent) e = s;
+    return e;
+  }
+  function d3_eventDispatch(target) {
+    var dispatch = new d3_dispatch, i = 0, n = arguments.length;
+    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+    dispatch.of = function(thiz, argumentz) {
+      return function(e1) {
+        try {
+          var e0 = e1.sourceEvent = d3.event;
+          e1.target = target;
+          d3.event = e1;
+          dispatch[e1.type].apply(thiz, argumentz);
+        } finally {
+          d3.event = e0;
+        }
+      };
+    };
+    return dispatch;
+  }
+  function d3_transform(m) {
+    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
+    if (r0[0] * r1[1] < r1[0] * r0[1]) {
+      r0[0] *= -1;
+      r0[1] *= -1;
+      kx *= -1;
+      kz *= -1;
+    }
+    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees;
+    this.translate = [ m.e, m.f ];
+    this.scale = [ kx, ky ];
+    this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0;
+  }
+  function d3_transformDot(a, b) {
+    return a[0] * b[0] + a[1] * b[1];
+  }
+  function d3_transformNormalize(a) {
+    var k = Math.sqrt(d3_transformDot(a, a));
+    if (k) {
+      a[0] /= k;
+      a[1] /= k;
+    }
+    return k;
+  }
+  function d3_transformCombine(a, b, k) {
+    a[0] += k * b[0];
+    a[1] += k * b[1];
+    return a;
+  }
+  function d3_interpolateByName(name) {
+    return name == "transform" ? d3.interpolateTransform : d3.interpolate;
+  }
+  function d3_uninterpolateNumber(a, b) {
+    b = b - (a = +a) ? 1 / (b - a) : 0;
+    return function(x) {
+      return (x - a) * b;
+    };
+  }
+  function d3_uninterpolateClamp(a, b) {
+    b = b - (a = +a) ? 1 / (b - a) : 0;
+    return function(x) {
+      return Math.max(0, Math.min(1, (x - a) * b));
+    };
+  }
+  function d3_rgb(r, g, b) {
+    return new d3_Rgb(r, g, b);
+  }
+  function d3_Rgb(r, g, b) {
+    this.r = r;
+    this.g = g;
+    this.b = b;
+  }
+  function d3_rgb_hex(v) {
+    return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
+  }
+  function d3_rgb_parse(format, rgb, hsl) {
+    var r = 0, g = 0, b = 0, m1, m2, name;
+    m1 = /([a-z]+)\((.*)\)/i.exec(format);
+    if (m1) {
+      m2 = m1[2].split(",");
+      switch (m1[1]) {
+       case "hsl":
+        {
+          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
+        }
+       case "rgb":
+        {
+          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
+        }
+      }
+    }
+    if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
+    if (format != null && format.charAt(0) === "#") {
+      if (format.length === 4) {
+        r = format.charAt(1);
+        r += r;
+        g = format.charAt(2);
+        g += g;
+        b = format.charAt(3);
+        b += b;
+      } else if (format.length === 7) {
+        r = format.substring(1, 3);
+        g = format.substring(3, 5);
+        b = format.substring(5, 7);
+      }
+      r = parseInt(r, 16);
+      g = parseInt(g, 16);
+      b = parseInt(b, 16);
+    }
+    return rgb(r, g, b);
+  }
+  function d3_rgb_hsl(r, g, b) {
+    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
+    if (d) {
+      s = l < .5 ? d / (max + min) : d / (2 - max - min);
+      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
+      h *= 60;
+    } else {
+      s = h = 0;
+    }
+    return d3_hsl(h, s, l);
+  }
+  function d3_rgb_lab(r, g, b) {
+    r = d3_rgb_xyz(r);
+    g = d3_rgb_xyz(g);
+    b = d3_rgb_xyz(b);
+    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
+    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
+  }
+  function d3_rgb_xyz(r) {
+    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
+  }
+  function d3_rgb_parseNumber(c) {
+    var f = parseFloat(c);
+    return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
+  }
+  function d3_hsl(h, s, l) {
+    return new d3_Hsl(h, s, l);
+  }
+  function d3_Hsl(h, s, l) {
+    this.h = h;
+    this.s = s;
+    this.l = l;
+  }
+  function d3_hsl_rgb(h, s, l) {
+    function v(h) {
+      if (h > 360) h -= 360; else if (h < 0) h += 360;
+      if (h < 60) return m1 + (m2 - m1) * h / 60;
+      if (h < 180) return m2;
+      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
+      return m1;
+    }
+    function vv(h) {
+      return Math.round(v(h) * 255);
+    }
+    var m1, m2;
+    h = h % 360;
+    if (h < 0) h += 360;
+    s = s < 0 ? 0 : s > 1 ? 1 : s;
+    l = l < 0 ? 0 : l > 1 ? 1 : l;
+    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
+    m1 = 2 * l - m2;
+    return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
+  }
+  function d3_hcl(h, c, l) {
+    return new d3_Hcl(h, c, l);
+  }
+  function d3_Hcl(h, c, l) {
+    this.h = h;
+    this.c = c;
+    this.l = l;
+  }
+  function d3_hcl_lab(h, c, l) {
+    return d3_lab(l, Math.cos(h *= Math.PI / 180) * c, Math.sin(h) * c);
+  }
+  function d3_lab(l, a, b) {
+    return new d3_Lab(l, a, b);
+  }
+  function d3_Lab(l, a, b) {
+    this.l = l;
+    this.a = a;
+    this.b = b;
+  }
+  function d3_lab_rgb(l, a, b) {
+    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
+    x = d3_lab_xyz(x) * d3_lab_X;
+    y = d3_lab_xyz(y) * d3_lab_Y;
+    z = d3_lab_xyz(z) * d3_lab_Z;
+    return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
+  }
+  function d3_lab_hcl(l, a, b) {
+    return d3_hcl(Math.atan2(b, a) / Math.PI * 180, Math.sqrt(a * a + b * b), l);
+  }
+  function d3_lab_xyz(x) {
+    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
+  }
+  function d3_xyz_lab(x) {
+    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
+  }
+  function d3_xyz_rgb(r) {
+    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
+  }
+  function d3_selection(groups) {
+    d3_arraySubclass(groups, d3_selectionPrototype);
+    return groups;
+  }
+  function d3_selection_selector(selector) {
+    return function() {
+      return d3_select(selector, this);
+    };
+  }
+  function d3_selection_selectorAll(selector) {
+    return function() {
+      return d3_selectAll(selector, this);
+    };
+  }
+  function d3_selection_attr(name, value) {
+    function attrNull() {
+      this.removeAttribute(name);
+    }
+    function attrNullNS() {
+      this.removeAttributeNS(name.space, name.local);
+    }
+    function attrConstant() {
+      this.setAttribute(name, value);
+    }
+    function attrConstantNS() {
+      this.setAttributeNS(name.space, name.local, value);
+    }
+    function attrFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
+    }
+    function attrFunctionNS() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
+    }
+    name = d3.ns.qualify(name);
+    return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
+  }
+  function d3_selection_classedRe(name) {
+    return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
+  }
+  function d3_selection_classed(name, value) {
+    function classedConstant() {
+      var i = -1;
+      while (++i < n) name[i](this, value);
+    }
+    function classedFunction() {
+      var i = -1, x = value.apply(this, arguments);
+      while (++i < n) name[i](this, x);
+    }
+    name = name.trim().split(/\s+/).map(d3_selection_classedName);
+    var n = name.length;
+    return typeof value === "function" ? classedFunction : classedConstant;
+  }
+  function d3_selection_classedName(name) {
+    var re = d3_selection_classedRe(name);
+    return function(node, value) {
+      if (c = node.classList) return value ? c.add(name) : c.remove(name);
+      var c = node.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
+      if (value) {
+        re.lastIndex = 0;
+        if (!re.test(cv)) {
+          cv = d3_collapse(cv + " " + name);
+          if (cb) c.baseVal = cv; else node.className = cv;
+        }
+      } else if (cv) {
+        cv = d3_collapse(cv.replace(re, " "));
+        if (cb) c.baseVal = cv; else node.className = cv;
+      }
+    };
+  }
+  function d3_selection_style(name, value, priority) {
+    function styleNull() {
+      this.style.removeProperty(name);
+    }
+    function styleConstant() {
+      this.style.setProperty(name, value, priority);
+    }
+    function styleFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
+    }
+    return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
+  }
+  function d3_selection_property(name, value) {
+    function propertyNull() {
+      delete this[name];
+    }
+    function propertyConstant() {
+      this[name] = value;
+    }
+    function propertyFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) delete this[name]; else this[name] = x;
+    }
+    return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
+  }
+  function d3_selection_dataNode(data) {
+    return {
+      __data__: data
+    };
+  }
+  function d3_selection_filter(selector) {
+    return function() {
+      return d3_selectMatches(this, selector);
+    };
+  }
+  function d3_selection_sortComparator(comparator) {
+    if (!arguments.length) comparator = d3.ascending;
+    return function(a, b) {
+      return comparator(a && a.__data__, b && b.__data__);
+    };
+  }
+  function d3_selection_on(type, listener, capture) {
+    function onRemove() {
+      var wrapper = this[name];
+      if (wrapper) {
+        this.removeEventListener(type, wrapper, wrapper.$);
+        delete this[name];
+      }
+    }
+    function onAdd() {
+      function wrapper(e) {
+        var o = d3.event;
+        d3.event = e;
+        args[0] = node.__data__;
+        try {
+          listener.apply(node, args);
+        } finally {
+          d3.event = o;
+        }
+      }
+      var node = this, args = arguments;
+      onRemove.call(this);
+      this.addEventListener(type, this[name] = wrapper, wrapper.$ = capture);
+      wrapper._ = listener;
+    }
+    var name = "__on" + type, i = type.indexOf(".");
+    if (i > 0) type = type.substring(0, i);
+    return listener ? onAdd : onRemove;
+  }
+  function d3_selection_each(groups, callback) {
+    for (var j = 0, m = groups.length; j < m; j++) {
+      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
+        if (node = group[i]) callback(node, i, j);
+      }
+    }
+    return groups;
+  }
+  function d3_selection_enter(selection) {
+    d3_arraySubclass(selection, d3_selection_enterPrototype);
+    return selection;
+  }
+  function d3_transition(groups, id, time) {
+    d3_arraySubclass(groups, d3_transitionPrototype);
+    var tweens = new d3_Map, event = d3.dispatch("start", "end"), ease = d3_transitionEase;
+    groups.id = id;
+    groups.time = time;
+    groups.tween = function(name, tween) {
+      if (arguments.length < 2) return tweens.get(name);
+      if (tween == null) tweens.remove(name); else tweens.set(name, tween);
+      return groups;
+    };
+    groups.ease = function(value) {
+      if (!arguments.length) return ease;
+      ease = typeof value === "function" ? value : d3.ease.apply(d3, arguments);
+      return groups;
+    };
+    groups.each = function(type, listener) {
+      if (arguments.length < 2) return d3_transition_each.call(groups, type);
+      event.on(type, listener);
+      return groups;
+    };
+    d3.timer(function(elapsed) {
+      return d3_selection_each(groups, function(node, i, j) {
+        function start(elapsed) {
+          if (lock.active > id) return stop();
+          lock.active = id;
+          tweens.forEach(function(key, value) {
+            if (value = value.call(node, d, i)) {
+              tweened.push(value);
+            }
+          });
+          event.start.call(node, d, i);
+          if (!tick(elapsed)) d3.timer(tick, 0, time);
+          return 1;
+        }
+        function tick(elapsed) {
+          if (lock.active !== id) return stop();
+          var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length;
+          while (n > 0) {
+            tweened[--n].call(node, e);
+          }
+          if (t >= 1) {
+            stop();
+            d3_transitionId = id;
+            event.end.call(node, d, i);
+            d3_transitionId = 0;
+            return 1;
+          }
+        }
+        function stop() {
+          if (!--lock.count) delete node.__transition__;
+          return 1;
+        }
+        var tweened = [], delay = node.delay, duration = node.duration, lock = (node = node.node).__transition__ || (node.__transition__ = {
+          active: 0,
+          count: 0
+        }), d = node.__data__;
+        ++lock.count;
+        delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time);
+      });
+    }, 0, time);
+    return groups;
+  }
+  function d3_transition_each(callback) {
+    var id = d3_transitionId, ease = d3_transitionEase, delay = d3_transitionDelay, duration = d3_transitionDuration;
+    d3_transitionId = this.id;
+    d3_transitionEase = this.ease();
+    d3_selection_each(this, function(node, i, j) {
+      d3_transitionDelay = node.delay;
+      d3_transitionDuration = node.duration;
+      callback.call(node = node.node, node.__data__, i, j);
+    });
+    d3_transitionId = id;
+    d3_transitionEase = ease;
+    d3_transitionDelay = delay;
+    d3_transitionDuration = duration;
+    return this;
+  }
+  function d3_tweenNull(d, i, a) {
+    return a != "" && d3_tweenRemove;
+  }
+  function d3_tweenByName(b, name) {
+    return d3.tween(b, d3_interpolateByName(name));
+  }
+  function d3_timer_step() {
+    var elapsed, now = Date.now(), t1 = d3_timer_queue;
+    while (t1) {
+      elapsed = now - t1.then;
+      if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed);
+      t1 = t1.next;
+    }
+    var delay = d3_timer_flush() - now;
+    if (delay > 24) {
+      if (isFinite(delay)) {
+        clearTimeout(d3_timer_timeout);
+        d3_timer_timeout = setTimeout(d3_timer_step, delay);
+      }
+      d3_timer_interval = 0;
+    } else {
+      d3_timer_interval = 1;
+      d3_timer_frame(d3_timer_step);
+    }
+  }
+  function d3_timer_flush() {
+    var t0 = null, t1 = d3_timer_queue, then = Infinity;
+    while (t1) {
+      if (t1.flush) {
+        t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next;
+      } else {
+        then = Math.min(then, t1.then + t1.delay);
+        t1 = (t0 = t1).next;
+      }
+    }
+    return then;
+  }
+  function d3_mousePoint(container, e) {
+    var svg = container.ownerSVGElement || container;
+    if (svg.createSVGPoint) {
+      var point = svg.createSVGPoint();
+      if (d3_mouse_bug44083 < 0 && (window.scrollX || window.scrollY)) {
+        svg = d3.select(document.body).append("svg").style("position", "absolute").style("top", 0).style("left", 0);
+        var ctm = svg[0][0].getScreenCTM();
+        d3_mouse_bug44083 = !(ctm.f || ctm.e);
+        svg.remove();
+      }
+      if (d3_mouse_bug44083) {
+        point.x = e.pageX;
+        point.y = e.pageY;
+      } else {
+        point.x = e.clientX;
+        point.y = e.clientY;
+      }
+      point = point.matrixTransform(container.getScreenCTM().inverse());
+      return [ point.x, point.y ];
+    }
+    var rect = container.getBoundingClientRect();
+    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
+  }
+  function d3_noop() {}
+  function d3_scaleExtent(domain) {
+    var start = domain[0], stop = domain[domain.length - 1];
+    return start < stop ? [ start, stop ] : [ stop, start ];
+  }
+  function d3_scaleRange(scale) {
+    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
+  }
+  function d3_scale_nice(domain, nice) {
+    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
+    if (x1 < x0) {
+      dx = i0, i0 = i1, i1 = dx;
+      dx = x0, x0 = x1, x1 = dx;
+    }
+    if (nice = nice(x1 - x0)) {
+      domain[i0] = nice.floor(x0);
+      domain[i1] = nice.ceil(x1);
+    }
+    return domain;
+  }
+  function d3_scale_niceDefault() {
+    return Math;
+  }
+  function d3_scale_linear(domain, range, interpolate, clamp) {
+    function rescale() {
+      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
+      output = linear(domain, range, uninterpolate, interpolate);
+      input = linear(range, domain, uninterpolate, d3.interpolate);
+      return scale;
+    }
+    function scale(x) {
+      return output(x);
+    }
+    var output, input;
+    scale.invert = function(y) {
+      return input(y);
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.map(Number);
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.rangeRound = function(x) {
+      return scale.range(x).interpolate(d3.interpolateRound);
+    };
+    scale.clamp = function(x) {
+      if (!arguments.length) return clamp;
+      clamp = x;
+      return rescale();
+    };
+    scale.interpolate = function(x) {
+      if (!arguments.length) return interpolate;
+      interpolate = x;
+      return rescale();
+    };
+    scale.ticks = function(m) {
+      return d3_scale_linearTicks(domain, m);
+    };
+    scale.tickFormat = function(m) {
+      return d3_scale_linearTickFormat(domain, m);
+    };
+    scale.nice = function() {
+      d3_scale_nice(domain, d3_scale_linearNice);
+      return rescale();
+    };
+    scale.copy = function() {
+      return d3_scale_linear(domain, range, interpolate, clamp);
+    };
+    return rescale();
+  }
+  function d3_scale_linearRebind(scale, linear) {
+    return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+  }
+  function d3_scale_linearNice(dx) {
+    dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
+    return dx && {
+      floor: function(x) {
+        return Math.floor(x / dx) * dx;
+      },
+      ceil: function(x) {
+        return Math.ceil(x / dx) * dx;
+      }
+    };
+  }
+  function d3_scale_linearTickRange(domain, m) {
+    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
+    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
+    extent[0] = Math.ceil(extent[0] / step) * step;
+    extent[1] = Math.floor(extent[1] / step) * step + step * .5;
+    extent[2] = step;
+    return extent;
+  }
+  function d3_scale_linearTicks(domain, m) {
+    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
+  }
+  function d3_scale_linearTickFormat(domain, m) {
+    return d3.format(",." + Math.max(0, -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01)) + "f");
+  }
+  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
+    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
+    return function(x) {
+      return i(u(x));
+    };
+  }
+  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
+    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
+    if (domain[k] < domain[0]) {
+      domain = domain.slice().reverse();
+      range = range.slice().reverse();
+    }
+    while (++j <= k) {
+      u.push(uninterpolate(domain[j - 1], domain[j]));
+      i.push(interpolate(range[j - 1], range[j]));
+    }
+    return function(x) {
+      var j = d3.bisect(domain, x, 1, k) - 1;
+      return i[j](u[j](x));
+    };
+  }
+  function d3_scale_log(linear, log) {
+    function scale(x) {
+      return linear(log(x));
+    }
+    var pow = log.pow;
+    scale.invert = function(x) {
+      return pow(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(pow);
+      log = x[0] < 0 ? d3_scale_logn : d3_scale_logp;
+      pow = log.pow;
+      linear.domain(x.map(log));
+      return scale;
+    };
+    scale.nice = function() {
+      linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault));
+      return scale;
+    };
+    scale.ticks = function() {
+      var extent = d3_scaleExtent(linear.domain()), ticks = [];
+      if (extent.every(isFinite)) {
+        var i = Math.floor(extent[0]), j = Math.ceil(extent[1]), u = pow(extent[0]), v = pow(extent[1]);
+        if (log === d3_scale_logn) {
+          ticks.push(pow(i));
+          for (; i++ < j; ) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k);
+        } else {
+          for (; i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k);
+          ticks.push(pow(i));
+        }
+        for (i = 0; ticks[i] < u; i++) {}
+        for (j = ticks.length; ticks[j - 1] > v; j--) {}
+        ticks = ticks.slice(i, j);
+      }
+      return ticks;
+    };
+    scale.tickFormat = function(n, format) {
+      if (arguments.length < 2) format = d3_scale_logFormat;
+      if (arguments.length < 1) return format;
+      var k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12, Math.floor) : (e = 1e-12, Math.ceil), e;
+      return function(d) {
+        return d / pow(f(log(d) + e)) <= k ? format(d) : "";
+      };
+    };
+    scale.copy = function() {
+      return d3_scale_log(linear.copy(), log);
+    };
+    return d3_scale_linearRebind(scale, linear);
+  }
+  function d3_scale_logp(x) {
+    return Math.log(x < 0 ? 0 : x) / Math.LN10;
+  }
+  function d3_scale_logn(x) {
+    return -Math.log(x > 0 ? 0 : -x) / Math.LN10;
+  }
+  function d3_scale_pow(linear, exponent) {
+    function scale(x) {
+      return linear(powp(x));
+    }
+    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
+    scale.invert = function(x) {
+      return powb(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(powb);
+      linear.domain(x.map(powp));
+      return scale;
+    };
+    scale.ticks = function(m) {
+      return d3_scale_linearTicks(scale.domain(), m);
+    };
+    scale.tickFormat = function(m) {
+      return d3_scale_linearTickFormat(scale.domain(), m);
+    };
+    scale.nice = function() {
+      return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice));
+    };
+    scale.exponent = function(x) {
+      if (!arguments.length) return exponent;
+      var domain = scale.domain();
+      powp = d3_scale_powPow(exponent = x);
+      powb = d3_scale_powPow(1 / exponent);
+      return scale.domain(domain);
+    };
+    scale.copy = function() {
+      return d3_scale_pow(linear.copy(), exponent);
+    };
+    return d3_scale_linearRebind(scale, linear);
+  }
+  function d3_scale_powPow(e) {
+    return function(x) {
+      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
+    };
+  }
+  function d3_scale_ordinal(domain, ranger) {
+    function scale(x) {
+      return range[((index.get(x) || index.set(x, domain.push(x))) - 1) % range.length];
+    }
+    function steps(start, step) {
+      return d3.range(domain.length).map(function(i) {
+        return start + step * i;
+      });
+    }
+    var index, range, rangeBand;
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = [];
+      index = new d3_Map;
+      var i = -1, n = x.length, xi;
+      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
+      return scale[ranger.t].apply(scale, ranger.a);
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      rangeBand = 0;
+      ranger = {
+        t: "range",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangePoints = function(x, padding) {
+      if (arguments.length < 2) padding = 0;
+      var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
+      range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
+      rangeBand = 0;
+      ranger = {
+        t: "rangePoints",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeBands = function(x, padding, outerPadding) {
+      if (arguments.length < 2) padding = 0;
+      if (arguments.length < 3) outerPadding = padding;
+      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
+      range = steps(start + step * outerPadding, step);
+      if (reverse) range.reverse();
+      rangeBand = step * (1 - padding);
+      ranger = {
+        t: "rangeBands",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeRoundBands = function(x, padding, outerPadding) {
+      if (arguments.length < 2) padding = 0;
+      if (arguments.length < 3) outerPadding = padding;
+      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
+      range = steps(start + Math.round(error / 2), step);
+      if (reverse) range.reverse();
+      rangeBand = Math.round(step * (1 - padding));
+      ranger = {
+        t: "rangeRoundBands",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeBand = function() {
+      return rangeBand;
+    };
+    scale.rangeExtent = function() {
+      return d3_scaleExtent(ranger.a[0]);
+    };
+    scale.copy = function() {
+      return d3_scale_ordinal(domain, ranger);
+    };
+    return scale.domain(domain);
+  }
+  function d3_scale_quantile(domain, range) {
+    function rescale() {
+      var k = 0, n = domain.length, q = range.length;
+      thresholds = [];
+      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
+      return scale;
+    }
+    function scale(x) {
+      if (isNaN(x = +x)) return NaN;
+      return range[d3.bisect(thresholds, x)];
+    }
+    var thresholds;
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.filter(function(d) {
+        return !isNaN(d);
+      }).sort(d3.ascending);
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.quantiles = function() {
+      return thresholds;
+    };
+    scale.copy = function() {
+      return d3_scale_quantile(domain, range);
+    };
+    return rescale();
+  }
+  function d3_scale_quantize(x0, x1, range) {
+    function scale(x) {
+      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
+    }
+    function rescale() {
+      kx = range.length / (x1 - x0);
+      i = range.length - 1;
+      return scale;
+    }
+    var kx, i;
+    scale.domain = function(x) {
+      if (!arguments.length) return [ x0, x1 ];
+      x0 = +x[0];
+      x1 = +x[x.length - 1];
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.copy = function() {
+      return d3_scale_quantize(x0, x1, range);
+    };
+    return rescale();
+  }
+  function d3_scale_threshold(domain, range) {
+    function scale(x) {
+      return range[d3.bisect(domain, x)];
+    }
+    scale.domain = function(_) {
+      if (!arguments.length) return domain;
+      domain = _;
+      return scale;
+    };
+    scale.range = function(_) {
+      if (!arguments.length) return range;
+      range = _;
+      return scale;
+    };
+    scale.copy = function() {
+      return d3_scale_threshold(domain, range);
+    };
+    return scale;
+  }
+  function d3_scale_identity(domain) {
+    function identity(x) {
+      return +x;
+    }
+    identity.invert = identity;
+    identity.domain = identity.range = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.map(identity);
+      return identity;
+    };
+    identity.ticks = function(m) {
+      return d3_scale_linearTicks(domain, m);
+    };
+    identity.tickFormat = function(m) {
+      return d3_scale_linearTickFormat(domain, m);
+    };
+    identity.copy = function() {
+      return d3_scale_identity(domain);
+    };
+    return identity;
+  }
+  function d3_svg_arcInnerRadius(d) {
+    return d.innerRadius;
+  }
+  function d3_svg_arcOuterRadius(d) {
+    return d.outerRadius;
+  }
+  function d3_svg_arcStartAngle(d) {
+    return d.startAngle;
+  }
+  function d3_svg_arcEndAngle(d) {
+    return d.endAngle;
+  }
+  function d3_svg_line(projection) {
+    function line(data) {
+      function segment() {
+        segments.push("M", interpolate(projection(points), tension));
+      }
+      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
+      while (++i < n) {
+        if (defined.call(this, d = data[i], i)) {
+          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
+        } else if (points.length) {
+          segment();
+          points = [];
+        }
+      }
+      if (points.length) segment();
+      return segments.length ? segments.join("") : null;
+    }
+    var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
+    line.x = function(_) {
+      if (!arguments.length) return x;
+      x = _;
+      return line;
+    };
+    line.y = function(_) {
+      if (!arguments.length) return y;
+      y = _;
+      return line;
+    };
+    line.defined = function(_) {
+      if (!arguments.length) return defined;
+      defined = _;
+      return line;
+    };
+    line.interpolate = function(_) {
+      if (!arguments.length) return interpolateKey;
+      if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+      return line;
+    };
+    line.tension = function(_) {
+      if (!arguments.length) return tension;
+      tension = _;
+      return line;
+    };
+    return line;
+  }
+  function d3_svg_lineX(d) {
+    return d[0];
+  }
+  function d3_svg_lineY(d) {
+    return d[1];
+  }
+  function d3_svg_lineLinear(points) {
+    return points.join("L");
+  }
+  function d3_svg_lineLinearClosed(points) {
+    return d3_svg_lineLinear(points) + "Z";
+  }
+  function d3_svg_lineStepBefore(points) {
+    var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+    while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
+    return path.join("");
+  }
+  function d3_svg_lineStepAfter(points) {
+    var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+    while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
+    return path.join("");
+  }
+  function d3_svg_lineCardinalOpen(points, tension) {
+    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
+  }
+  function d3_svg_lineCardinalClosed(points, tension) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
+  }
+  function d3_svg_lineCardinal(points, tension, closed) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
+  }
+  function d3_svg_lineHermite(points, tangents) {
+    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
+      return d3_svg_lineLinear(points);
+    }
+    var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
+    if (quad) {
+      path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
+      p0 = points[1];
+      pi = 2;
+    }
+    if (tangents.length > 1) {
+      t = tangents[1];
+      p = points[pi];
+      pi++;
+      path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+      for (var i = 2; i < tangents.length; i++, pi++) {
+        p = points[pi];
+        t = tangents[i];
+        path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+      }
+    }
+    if (quad) {
+      var lp = points[pi];
+      path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
+    }
+    return path;
+  }
+  function d3_svg_lineCardinalTangents(points, tension) {
+    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
+    while (++i < n) {
+      p0 = p1;
+      p1 = p2;
+      p2 = points[i];
+      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
+    }
+    return tangents;
+  }
+  function d3_svg_lineBasis(points) {
+    if (points.length < 3) return d3_svg_lineLinear(points);
+    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0 ];
+    d3_svg_lineBasisBezier(path, px, py);
+    while (++i < n) {
+      pi = points[i];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    i = -1;
+    while (++i < 2) {
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBasisOpen(points) {
+    if (points.length < 4) return d3_svg_lineLinear(points);
+    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
+    while (++i < 3) {
+      pi = points[i];
+      px.push(pi[0]);
+      py.push(pi[1]);
+    }
+    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
+    --i;
+    while (++i < n) {
+      pi = points[i];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBasisClosed(points) {
+    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
+    while (++i < 4) {
+      pi = points[i % n];
+      px.push(pi[0]);
+      py.push(pi[1]);
+    }
+    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
+    --i;
+    while (++i < m) {
+      pi = points[i % n];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBundle(points, tension) {
+    var n = points.length - 1;
+    if (n) {
+      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
+      while (++i <= n) {
+        p = points[i];
+        t = i / n;
+        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
+        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
+      }
+    }
+    return d3_svg_lineBasis(points);
+  }
+  function d3_svg_lineDot4(a, b) {
+    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+  }
+  function d3_svg_lineBasisBezier(path, x, y) {
+    path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
+  }
+  function d3_svg_lineSlope(p0, p1) {
+    return (p1[1] - p0[1]) / (p1[0] - p0[0]);
+  }
+  function d3_svg_lineFiniteDifferences(points) {
+    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
+    while (++i < j) {
+      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
+    }
+    m[i] = d;
+    return m;
+  }
+  function d3_svg_lineMonotoneTangents(points) {
+    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
+    while (++i < j) {
+      d = d3_svg_lineSlope(points[i], points[i + 1]);
+      if (Math.abs(d) < 1e-6) {
+        m[i] = m[i + 1] = 0;
+      } else {
+        a = m[i] / d;
+        b = m[i + 1] / d;
+        s = a * a + b * b;
+        if (s > 9) {
+          s = d * 3 / Math.sqrt(s);
+          m[i] = s * a;
+          m[i + 1] = s * b;
+        }
+      }
+    }
+    i = -1;
+    while (++i <= j) {
+      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
+      tangents.push([ s || 0, m[i] * s || 0 ]);
+    }
+    return tangents;
+  }
+  function d3_svg_lineMonotone(points) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
+  }
+  function d3_svg_lineRadial(points) {
+    var point, i = -1, n = points.length, r, a;
+    while (++i < n) {
+      point = points[i];
+      r = point[0];
+      a = point[1] + d3_svg_arcOffset;
+      point[0] = r * Math.cos(a);
+      point[1] = r * Math.sin(a);
+    }
+    return points;
+  }
+  function d3_svg_area(projection) {
+    function area(data) {
+      function segment() {
+        segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
+      }
+      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
+        return x;
+      } : d3_functor(x1), fy1 = y0 === y1 ? function() {
+        return y;
+      } : d3_functor(y1), x, y;
+      while (++i < n) {
+        if (defined.call(this, d = data[i], i)) {
+          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
+          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
+        } else if (points0.length) {
+          segment();
+          points0 = [];
+          points1 = [];
+        }
+      }
+      if (points0.length) segment();
+      return segments.length ? segments.join("") : null;
+    }
+    var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
+    area.x = function(_) {
+      if (!arguments.length) return x1;
+      x0 = x1 = _;
+      return area;
+    };
+    area.x0 = function(_) {
+      if (!arguments.length) return x0;
+      x0 = _;
+      return area;
+    };
+    area.x1 = function(_) {
+      if (!arguments.length) return x1;
+      x1 = _;
+      return area;
+    };
+    area.y = function(_) {
+      if (!arguments.length) return y1;
+      y0 = y1 = _;
+      return area;
+    };
+    area.y0 = function(_) {
+      if (!arguments.length) return y0;
+      y0 = _;
+      return area;
+    };
+    area.y1 = function(_) {
+      if (!arguments.length) return y1;
+      y1 = _;
+      return area;
+    };
+    area.defined = function(_) {
+      if (!arguments.length) return defined;
+      defined = _;
+      return area;
+    };
+    area.interpolate = function(_) {
+      if (!arguments.length) return interpolateKey;
+      if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+      interpolateReverse = interpolate.reverse || interpolate;
+      L = interpolate.closed ? "M" : "L";
+      return area;
+    };
+    area.tension = function(_) {
+      if (!arguments.length) return tension;
+      tension = _;
+      return area;
+    };
+    return area;
+  }
+  function d3_svg_chordSource(d) {
+    return d.source;
+  }
+  function d3_svg_chordTarget(d) {
+    return d.target;
+  }
+  function d3_svg_chordRadius(d) {
+    return d.radius;
+  }
+  function d3_svg_chordStartAngle(d) {
+    return d.startAngle;
+  }
+  function d3_svg_chordEndAngle(d) {
+    return d.endAngle;
+  }
+  function d3_svg_diagonalProjection(d) {
+    return [ d.x, d.y ];
+  }
+  function d3_svg_diagonalRadialProjection(projection) {
+    return function() {
+      var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset;
+      return [ r * Math.cos(a), r * Math.sin(a) ];
+    };
+  }
+  function d3_svg_symbolSize() {
+    return 64;
+  }
+  function d3_svg_symbolType() {
+    return "circle";
+  }
+  function d3_svg_symbolCircle(size) {
+    var r = Math.sqrt(size / Math.PI);
+    return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
+  }
+  function d3_svg_axisX(selection, x) {
+    selection.attr("transform", function(d) {
+      return "translate(" + x(d) + ",0)";
+    });
+  }
+  function d3_svg_axisY(selection, y) {
+    selection.attr("transform", function(d) {
+      return "translate(0," + y(d) + ")";
+    });
+  }
+  function d3_svg_axisSubdivide(scale, ticks, m) {
+    subticks = [];
+    if (m && ticks.length > 1) {
+      var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v;
+      while (++i < n) {
+        for (j = m; --j > 0; ) {
+          if ((v = +ticks[i] - j * d) >= extent[0]) {
+            subticks.push(v);
+          }
+        }
+      }
+      for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) {
+        subticks.push(v);
+      }
+    }
+    return subticks;
+  }
+  function d3_behavior_zoomDelta() {
+    if (!d3_behavior_zoomDiv) {
+      d3_behavior_zoomDiv = d3.select("body").append("div").style("visibility", "hidden").style("top", 0).style("height", 0).style("width", 0).style("overflow-y", "scroll").append("div").style("height", "2000px").node().parentNode;
+    }
+    var e = d3.event, delta;
+    try {
+      d3_behavior_zoomDiv.scrollTop = 1e3;
+      d3_behavior_zoomDiv.dispatchEvent(e);
+      delta = 1e3 - d3_behavior_zoomDiv.scrollTop;
+    } catch (error) {
+      delta = e.wheelDelta || -e.detail * 5;
+    }
+    return delta;
+  }
+  function d3_layout_bundlePath(link) {
+    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
+    while (start !== lca) {
+      start = start.parent;
+      points.push(start);
+    }
+    var k = points.length;
+    while (end !== lca) {
+      points.splice(k, 0, end);
+      end = end.parent;
+    }
+    return points;
+  }
+  function d3_layout_bundleAncestors(node) {
+    var ancestors = [], parent = node.parent;
+    while (parent != null) {
+      ancestors.push(node);
+      node = parent;
+      parent = parent.parent;
+    }
+    ancestors.push(node);
+    return ancestors;
+  }
+  function d3_layout_bundleLeastCommonAncestor(a, b) {
+    if (a === b) return a;
+    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
+    while (aNode === bNode) {
+      sharedNode = aNode;
+      aNode = aNodes.pop();
+      bNode = bNodes.pop();
+    }
+    return sharedNode;
+  }
+  function d3_layout_forceDragstart(d) {
+    d.fixed |= 2;
+  }
+  function d3_layout_forceDragend(d) {
+    d.fixed &= 1;
+  }
+  function d3_layout_forceMouseover(d) {
+    d.fixed |= 4;
+  }
+  function d3_layout_forceMouseout(d) {
+    d.fixed &= 3;
+  }
+  function d3_layout_forceAccumulate(quad, alpha, charges) {
+    var cx = 0, cy = 0;
+    quad.charge = 0;
+    if (!quad.leaf) {
+      var nodes = quad.nodes, n = nodes.length, i = -1, c;
+      while (++i < n) {
+        c = nodes[i];
+        if (c == null) continue;
+        d3_layout_forceAccumulate(c, alpha, charges);
+        quad.charge += c.charge;
+        cx += c.charge * c.cx;
+        cy += c.charge * c.cy;
+      }
+    }
+    if (quad.point) {
+      if (!quad.leaf) {
+        quad.point.x += Math.random() - .5;
+        quad.point.y += Math.random() - .5;
+      }
+      var k = alpha * charges[quad.point.index];
+      quad.charge += quad.pointCharge = k;
+      cx += k * quad.point.x;
+      cy += k * quad.point.y;
+    }
+    quad.cx = cx / quad.charge;
+    quad.cy = cy / quad.charge;
+  }
+  function d3_layout_forceLinkDistance(link) {
+    return 20;
+  }
+  function d3_layout_forceLinkStrength(link) {
+    return 1;
+  }
+  function d3_layout_stackX(d) {
+    return d.x;
+  }
+  function d3_layout_stackY(d) {
+    return d.y;
+  }
+  function d3_layout_stackOut(d, y0, y) {
+    d.y0 = y0;
+    d.y = y;
+  }
+  function d3_layout_stackOrderDefault(data) {
+    return d3.range(data.length);
+  }
+  function d3_layout_stackOffsetZero(data) {
+    var j = -1, m = data[0].length, y0 = [];
+    while (++j < m) y0[j] = 0;
+    return y0;
+  }
+  function d3_layout_stackMaxIndex(array) {
+    var i = 1, j = 0, v = array[0][1], k, n = array.length;
+    for (; i < n; ++i) {
+      if ((k = array[i][1]) > v) {
+        j = i;
+        v = k;
+      }
+    }
+    return j;
+  }
+  function d3_layout_stackReduceSum(d) {
+    return d.reduce(d3_layout_stackSum, 0);
+  }
+  function d3_layout_stackSum(p, d) {
+    return p + d[1];
+  }
+  function d3_layout_histogramBinSturges(range, values) {
+    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
+  }
+  function d3_layout_histogramBinFixed(range, n) {
+    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
+    while (++x <= n) f[x] = m * x + b;
+    return f;
+  }
+  function d3_layout_histogramRange(values) {
+    return [ d3.min(values), d3.max(values) ];
+  }
+  function d3_layout_hierarchyRebind(object, hierarchy) {
+    d3.rebind(object, hierarchy, "sort", "children", "value");
+    object.links = d3_layout_hierarchyLinks;
+    object.nodes = function(d) {
+      d3_layout_hierarchyInline = true;
+      return (object.nodes = object)(d);
+    };
+    return object;
+  }
+  function d3_layout_hierarchyChildren(d) {
+    return d.children;
+  }
+  function d3_layout_hierarchyValue(d) {
+    return d.value;
+  }
+  function d3_layout_hierarchySort(a, b) {
+    return b.value - a.value;
+  }
+  function d3_layout_hierarchyLinks(nodes) {
+    return d3.merge(nodes.map(function(parent) {
+      return (parent.children || []).map(function(child) {
+        return {
+          source: parent,
+          target: child
+        };
+      });
+    }));
+  }
+  function d3_layout_packSort(a, b) {
+    return a.value - b.value;
+  }
+  function d3_layout_packInsert(a, b) {
+    var c = a._pack_next;
+    a._pack_next = b;
+    b._pack_prev = a;
+    b._pack_next = c;
+    c._pack_prev = b;
+  }
+  function d3_layout_packSplice(a, b) {
+    a._pack_next = b;
+    b._pack_prev = a;
+  }
+  function d3_layout_packIntersects(a, b) {
+    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
+    return dr * dr - dx * dx - dy * dy > .001;
+  }
+  function d3_layout_packSiblings(node) {
+    function bound(node) {
+      xMin = Math.min(node.x - node.r, xMin);
+      xMax = Math.max(node.x + node.r, xMax);
+      yMin = Math.min(node.y - node.r, yMin);
+      yMax = Math.max(node.y + node.r, yMax);
+    }
+    if (!(nodes = node.children) || !(n = nodes.length)) return;
+    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
+    nodes.forEach(d3_layout_packLink);
+    a = nodes[0];
+    a.x = -a.r;
+    a.y = 0;
+    bound(a);
+    if (n > 1) {
+      b = nodes[1];
+      b.x = b.r;
+      b.y = 0;
+      bound(b);
+      if (n > 2) {
+        c = nodes[2];
+        d3_layout_packPlace(a, b, c);
+        bound(c);
+        d3_layout_packInsert(a, c);
+        a._pack_prev = c;
+        d3_layout_packInsert(c, b);
+        b = a._pack_next;
+        for (i = 3; i < n; i++) {
+          d3_layout_packPlace(a, b, c = nodes[i]);
+          var isect = 0, s1 = 1, s2 = 1;
+          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
+            if (d3_layout_packIntersects(j, c)) {
+              isect = 1;
+              break;
+            }
+          }
+          if (isect == 1) {
+            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
+              if (d3_layout_packIntersects(k, c)) {
+                break;
+              }
+            }
+          }
+          if (isect) {
+            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
+            i--;
+          } else {
+            d3_layout_packInsert(a, c);
+            b = c;
+            bound(c);
+          }
+        }
+      }
+    }
+    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
+    for (i = 0; i < n; i++) {
+      c = nodes[i];
+      c.x -= cx;
+      c.y -= cy;
+      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
+    }
+    node.r = cr;
+    nodes.forEach(d3_layout_packUnlink);
+  }
+  function d3_layout_packLink(node) {
+    node._pack_next = node._pack_prev = node;
+  }
+  function d3_layout_packUnlink(node) {
+    delete node._pack_next;
+    delete node._pack_prev;
+  }
+  function d3_layout_packTransform(node, x, y, k) {
+    var children = node.children;
+    node.x = x += k * node.x;
+    node.y = y += k * node.y;
+    node.r *= k;
+    if (children) {
+      var i = -1, n = children.length;
+      while (++i < n) d3_layout_packTransform(children[i], x, y, k);
+    }
+  }
+  function d3_layout_packPlace(a, b, c) {
+    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
+    if (db && (dx || dy)) {
+      var da = b.r + c.r, dc = dx * dx + dy * dy;
+      da *= da;
+      db *= db;
+      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
+      c.x = a.x + x * dx + y * dy;
+      c.y = a.y + x * dy - y * dx;
+    } else {
+      c.x = a.x + db;
+      c.y = a.y;
+    }
+  }
+  function d3_layout_clusterY(children) {
+    return 1 + d3.max(children, function(child) {
+      return child.y;
+    });
+  }
+  function d3_layout_clusterX(children) {
+    return children.reduce(function(x, child) {
+      return x + child.x;
+    }, 0) / children.length;
+  }
+  function d3_layout_clusterLeft(node) {
+    var children = node.children;
+    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
+  }
+  function d3_layout_clusterRight(node) {
+    var children = node.children, n;
+    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
+  }
+  function d3_layout_treeSeparation(a, b) {
+    return a.parent == b.parent ? 1 : 2;
+  }
+  function d3_layout_treeLeft(node) {
+    var children = node.children;
+    return children && children.length ? children[0] : node._tree.thread;
+  }
+  function d3_layout_treeRight(node) {
+    var children = node.children, n;
+    return children && (n = children.length) ? children[n - 1] : node._tree.thread;
+  }
+  function d3_layout_treeSearch(node, compare) {
+    var children = node.children;
+    if (children && (n = children.length)) {
+      var child, n, i = -1;
+      while (++i < n) {
+        if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
+          node = child;
+        }
+      }
+    }
+    return node;
+  }
+  function d3_layout_treeRightmost(a, b) {
+    return a.x - b.x;
+  }
+  function d3_layout_treeLeftmost(a, b) {
+    return b.x - a.x;
+  }
+  function d3_layout_treeDeepest(a, b) {
+    return a.depth - b.depth;
+  }
+  function d3_layout_treeVisitAfter(node, callback) {
+    function visit(node, previousSibling) {
+      var children = node.children;
+      if (children && (n = children.length)) {
+        var child, previousChild = null, i = -1, n;
+        while (++i < n) {
+          child = children[i];
+          visit(child, previousChild);
+          previousChild = child;
+        }
+      }
+      callback(node, previousSibling);
+    }
+    visit(node, null);
+  }
+  function d3_layout_treeShift(node) {
+    var shift = 0, change = 0, children = node.children, i = children.length, child;
+    while (--i >= 0) {
+      child = children[i]._tree;
+      child.prelim += shift;
+      child.mod += shift;
+      shift += child.shift + (change += child.change);
+    }
+  }
+  function d3_layout_treeMove(ancestor, node, shift) {
+    ancestor = ancestor._tree;
+    node = node._tree;
+    var change = shift / (node.number - ancestor.number);
+    ancestor.change += change;
+    node.change -= change;
+    node.shift += shift;
+    node.prelim += shift;
+    node.mod += shift;
+  }
+  function d3_layout_treeAncestor(vim, node, ancestor) {
+    return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
+  }
+  function d3_layout_treemapPadNull(node) {
+    return {
+      x: node.x,
+      y: node.y,
+      dx: node.dx,
+      dy: node.dy
+    };
+  }
+  function d3_layout_treemapPad(node, padding) {
+    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
+    if (dx < 0) {
+      x += dx / 2;
+      dx = 0;
+    }
+    if (dy < 0) {
+      y += dy / 2;
+      dy = 0;
+    }
+    return {
+      x: x,
+      y: y,
+      dx: dx,
+      dy: dy
+    };
+  }
+  function d3_dsv(delimiter, mimeType) {
+    function dsv(url, callback) {
+      d3.text(url, mimeType, function(text) {
+        callback(text && dsv.parse(text));
+      });
+    }
+    function formatRow(row) {
+      return row.map(formatValue).join(delimiter);
+    }
+    function formatValue(text) {
+      return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
+    }
+    var reParse = new RegExp("\r\n|[" + delimiter + "\r\n]", "g"), reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
+    dsv.parse = function(text) {
+      var header;
+      return dsv.parseRows(text, function(row, i) {
+        if (i) {
+          var o = {}, j = -1, m = header.length;
+          while (++j < m) o[header[j]] = row[j];
+          return o;
+        } else {
+          header = row;
+          return null;
+        }
+      });
+    };
+    dsv.parseRows = function(text, f) {
+      function token() {
+        if (reParse.lastIndex >= text.length) return EOF;
+        if (eol) {
+          eol = false;
+          return EOL;
+        }
+        var j = reParse.lastIndex;
+        if (text.charCodeAt(j) === 34) {
+          var i = j;
+          while (i++ < text.length) {
+            if (text.charCodeAt(i) === 34) {
+              if (text.charCodeAt(i + 1) !== 34) break;
+              i++;
+            }
+          }
+          reParse.lastIndex = i + 2;
+          var c = text.charCodeAt(i + 1);
+          if (c === 13) {
+            eol = true;
+            if (text.charCodeAt(i + 2) === 10) reParse.lastIndex++;
+          } else if (c === 10) {
+            eol = true;
+          }
+          return text.substring(j + 1, i).replace(/""/g, '"');
+        }
+        var m = reParse.exec(text);
+        if (m) {
+          eol = m[0].charCodeAt(0) !== delimiterCode;
+          return text.substring(j, m.index);
+        }
+        reParse.lastIndex = text.length;
+        return text.substring(j);
+      }
+      var EOL = {}, EOF = {}, rows = [], n = 0, t, eol;
+      reParse.lastIndex = 0;
+      while ((t = token()) !== EOF) {
+        var a = [];
+        while (t !== EOL && t !== EOF) {
+          a.push(t);
+          t = token();
+        }
+        if (f && !(a = f(a, n++))) continue;
+        rows.push(a);
+      }
+      return rows;
+    };
+    dsv.format = function(rows) {
+      return rows.map(formatRow).join("\n");
+    };
+    return dsv;
+  }
+  function d3_geo_type(types, defaultValue) {
+    return function(object) {
+      return object && types.hasOwnProperty(object.type) ? types[object.type](object) : defaultValue;
+    };
+  }
+  function d3_path_circle(radius) {
+    return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + +2 * radius + "z";
+  }
+  function d3_geo_bounds(o, f) {
+    if (d3_geo_boundsTypes.hasOwnProperty(o.type)) d3_geo_boundsTypes[o.type](o, f);
+  }
+  function d3_geo_boundsFeature(o, f) {
+    d3_geo_bounds(o.geometry, f);
+  }
+  function d3_geo_boundsFeatureCollection(o, f) {
+    for (var a = o.features, i = 0, n = a.length; i < n; i++) {
+      d3_geo_bounds(a[i].geometry, f);
+    }
+  }
+  function d3_geo_boundsGeometryCollection(o, f) {
+    for (var a = o.geometries, i = 0, n = a.length; i < n; i++) {
+      d3_geo_bounds(a[i], f);
+    }
+  }
+  function d3_geo_boundsLineString(o, f) {
+    for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
+      f.apply(null, a[i]);
+    }
+  }
+  function d3_geo_boundsMultiLineString(o, f) {
+    for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
+      for (var b = a[i], j = 0, m = b.length; j < m; j++) {
+        f.apply(null, b[j]);
+      }
+    }
+  }
+  function d3_geo_boundsMultiPolygon(o, f) {
+    for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) {
+      for (var b = a[i][0], j = 0, m = b.length; j < m; j++) {
+        f.apply(null, b[j]);
+      }
+    }
+  }
+  function d3_geo_boundsPoint(o, f) {
+    f.apply(null, o.coordinates);
+  }
+  function d3_geo_boundsPolygon(o, f) {
+    for (var a = o.coordinates[0], i = 0, n = a.length; i < n; i++) {
+      f.apply(null, a[i]);
+    }
+  }
+  function d3_geo_greatArcSource(d) {
+    return d.source;
+  }
+  function d3_geo_greatArcTarget(d) {
+    return d.target;
+  }
+  function d3_geo_greatArcInterpolator() {
+    function interpolate(t) {
+      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
+      return [ Math.atan2(y, x) / d3_geo_radians, Math.atan2(z, Math.sqrt(x * x + y * y)) / d3_geo_radians ];
+    }
+    var x0, y0, cy0, sy0, kx0, ky0, x1, y1, cy1, sy1, kx1, ky1, d, k;
+    interpolate.distance = function() {
+      if (d == null) k = 1 / Math.sin(d = Math.acos(Math.max(-1, Math.min(1, sy0 * sy1 + cy0 * cy1 * Math.cos(x1 - x0)))));
+      return d;
+    };
+    interpolate.source = function(_) {
+      var cx0 = Math.cos(x0 = _[0] * d3_geo_radians), sx0 = Math.sin(x0);
+      cy0 = Math.cos(y0 = _[1] * d3_geo_radians);
+      sy0 = Math.sin(y0);
+      kx0 = cy0 * cx0;
+      ky0 = cy0 * sx0;
+      d = null;
+      return interpolate;
+    };
+    interpolate.target = function(_) {
+      var cx1 = Math.cos(x1 = _[0] * d3_geo_radians), sx1 = Math.sin(x1);
+      cy1 = Math.cos(y1 = _[1] * d3_geo_radians);
+      sy1 = Math.sin(y1);
+      kx1 = cy1 * cx1;
+      ky1 = cy1 * sx1;
+      d = null;
+      return interpolate;
+    };
+    return interpolate;
+  }
+  function d3_geo_greatArcInterpolate(a, b) {
+    var i = d3_geo_greatArcInterpolator().source(a).target(b);
+    i.distance();
+    return i;
+  }
+  function d3_geom_contourStart(grid) {
+    var x = 0, y = 0;
+    while (true) {
+      if (grid(x, y)) {
+        return [ x, y ];
+      }
+      if (x === 0) {
+        x = y + 1;
+        y = 0;
+      } else {
+        x = x - 1;
+        y = y + 1;
+      }
+    }
+  }
+  function d3_geom_hullCCW(i1, i2, i3, v) {
+    var t, a, b, c, d, e, f;
+    t = v[i1];
+    a = t[0];
+    b = t[1];
+    t = v[i2];
+    c = t[0];
+    d = t[1];
+    t = v[i3];
+    e = t[0];
+    f = t[1];
+    return (f - b) * (c - a) - (d - b) * (e - a) > 0;
+  }
+  function d3_geom_polygonInside(p, a, b) {
+    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
+  }
+  function d3_geom_polygonIntersect(c, d, a, b) {
+    var x1 = c[0], x2 = d[0], x3 = a[0], x4 = b[0], y1 = c[1], y2 = d[1], y3 = a[1], y4 = b[1], x13 = x1 - x3, x21 = x2 - x1, x43 = x4 - x3, y13 = y1 - y3, y21 = y2 - y1, y43 = y4 - y3, ua = (x43 * y13 - y43 * x13) / (y43 * x21 - x43 * y21);
+    return [ x1 + ua * x21, y1 + ua * y21 ];
+  }
+  function d3_voronoi_tessellate(vertices, callback) {
+    var Sites = {
+      list: vertices.map(function(v, i) {
+        return {
+          index: i,
+          x: v[0],
+          y: v[1]
+        };
+      }).sort(function(a, b) {
+        return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0;
+      }),
+      bottomSite: null
+    };
+    var EdgeList = {
+      list: [],
+      leftEnd: null,
+      rightEnd: null,
+      init: function() {
+        EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
+        EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
+        EdgeList.leftEnd.r = EdgeList.rightEnd;
+        EdgeList.rightEnd.l = EdgeList.leftEnd;
+        EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
+      },
+      createHalfEdge: function(edge, side) {
+        return {
+          edge: edge,
+          side: side,
+          vertex: null,
+          l: null,
+          r: null
+        };
+      },
+      insert: function(lb, he) {
+        he.l = lb;
+        he.r = lb.r;
+        lb.r.l = he;
+        lb.r = he;
+      },
+      leftBound: function(p) {
+        var he = EdgeList.leftEnd;
+        do {
+          he = he.r;
+        } while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
+        he = he.l;
+        return he;
+      },
+      del: function(he) {
+        he.l.r = he.r;
+        he.r.l = he.l;
+        he.edge = null;
+      },
+      right: function(he) {
+        return he.r;
+      },
+      left: function(he) {
+        return he.l;
+      },
+      leftRegion: function(he) {
+        return he.edge == null ? Sites.bottomSite : he.edge.region[he.side];
+      },
+      rightRegion: function(he) {
+        return he.edge == null ? Sites.bottomSite : he.edge.region[d3_voronoi_opposite[he.side]];
+      }
+    };
+    var Geom = {
+      bisect: function(s1, s2) {
+        var newEdge = {
+          region: {
+            l: s1,
+            r: s2
+          },
+          ep: {
+            l: null,
+            r: null
+          }
+        };
+        var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy;
+        newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5;
+        if (adx > ady) {
+          newEdge.a = 1;
+          newEdge.b = dy / dx;
+          newEdge.c /= dx;
+        } else {
+          newEdge.b = 1;
+          newEdge.a = dx / dy;
+          newEdge.c /= dy;
+        }
+        return newEdge;
+      },
+      intersect: function(el1, el2) {
+        var e1 = el1.edge, e2 = el2.edge;
+        if (!e1 || !e2 || e1.region.r == e2.region.r) {
+          return null;
+        }
+        var d = e1.a * e2.b - e1.b * e2.a;
+        if (Math.abs(d) < 1e-10) {
+          return null;
+        }
+        var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e;
+        if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) {
+          el = el1;
+          e = e1;
+        } else {
+          el = el2;
+          e = e2;
+        }
+        var rightOfSite = xint >= e.region.r.x;
+        if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") {
+          return null;
+        }
+        return {
+          x: xint,
+          y: yint
+        };
+      },
+      rightOf: function(he, p) {
+        var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x;
+        if (rightOfSite && he.side === "l") {
+          return 1;
+        }
+        if (!rightOfSite && he.side === "r") {
+          return 0;
+        }
+        if (e.a === 1) {
+          var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0;
+          if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) {
+            above = fast = dyp >= e.b * dxp;
+          } else {
+            above = p.x + p.y * e.b > e.c;
+            if (e.b < 0) {
+              above = !above;
+            }
+            if (!above) {
+              fast = 1;
+            }
+          }
+          if (!fast) {
+            var dxs = topsite.x - e.region.l.x;
+            above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b);
+            if (e.b < 0) {
+              above = !above;
+            }
+          }
+        } else {
+          var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y;
+          above = t1 * t1 > t2 * t2 + t3 * t3;
+        }
+        return he.side === "l" ? above : !above;
+      },
+      endPoint: function(edge, side, site) {
+        edge.ep[side] = site;
+        if (!edge.ep[d3_voronoi_opposite[side]]) return;
+        callback(edge);
+      },
+      distance: function(s, t) {
+        var dx = s.x - t.x, dy = s.y - t.y;
+        return Math.sqrt(dx * dx + dy * dy);
+      }
+    };
+    var EventQueue = {
+      list: [],
+      insert: function(he, site, offset) {
+        he.vertex = site;
+        he.ystar = site.y + offset;
+        for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) {
+          var next = list[i];
+          if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) {
+            continue;
+          } else {
+            break;
+          }
+        }
+        list.splice(i, 0, he);
+      },
+      del: function(he) {
+        for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {}
+        ls.splice(i, 1);
+      },
+      empty: function() {
+        return EventQueue.list.length === 0;
+      },
+      nextEvent: function(he) {
+        for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) {
+          if (ls[i] == he) return ls[i + 1];
+        }
+        return null;
+      },
+      min: function() {
+        var elem = EventQueue.list[0];
+        return {
+          x: elem.vertex.x,
+          y: elem.ystar
+        };
+      },
+      extractMin: function() {
+        return EventQueue.list.shift();
+      }
+    };
+    EdgeList.init();
+    Sites.bottomSite = Sites.list.shift();
+    var newSite = Sites.list.shift(), newIntStar;
+    var lbnd, rbnd, llbnd, rrbnd, bisector;
+    var bot, top, temp, p, v;
+    var e, pm;
+    while (true) {
+      if (!EventQueue.empty()) {
+        newIntStar = EventQueue.min();
+      }
+      if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) {
+        lbnd = EdgeList.leftBound(newSite);
+        rbnd = EdgeList.right(lbnd);
+        bot = EdgeList.rightRegion(lbnd);
+        e = Geom.bisect(bot, newSite);
+        bisector = EdgeList.createHalfEdge(e, "l");
+        EdgeList.insert(lbnd, bisector);
+        p = Geom.intersect(lbnd, bisector);
+        if (p) {
+          EventQueue.del(lbnd);
+          EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
+        }
+        lbnd = bisector;
+        bisector = EdgeList.createHalfEdge(e, "r");
+        EdgeList.insert(lbnd, bisector);
+        p = Geom.intersect(bisector, rbnd);
+        if (p) {
+          EventQueue.insert(bisector, p, Geom.distance(p, newSite));
+        }
+        newSite = Sites.list.shift();
+      } else if (!EventQueue.empty()) {
+        lbnd = EventQueue.extractMin();
+        llbnd = EdgeList.left(lbnd);
+        rbnd = EdgeList.right(lbnd);
+        rrbnd = EdgeList.right(rbnd);
+        bot = EdgeList.leftRegion(lbnd);
+        top = EdgeList.rightRegion(rbnd);
+        v = lbnd.vertex;
+        Geom.endPoint(lbnd.edge, lbnd.side, v);
+        Geom.endPoint(rbnd.edge, rbnd.side, v);
+        EdgeList.del(lbnd);
+        EventQueue.del(rbnd);
+        EdgeList.del(rbnd);
+        pm = "l";
+        if (bot.y > top.y) {
+          temp = bot;
+          bot = top;
+          top = temp;
+          pm = "r";
+        }
+        e = Geom.bisect(bot, top);
+        bisector = EdgeList.createHalfEdge(e, pm);
+        EdgeList.insert(llbnd, bisector);
+        Geom.endPoint(e, d3_voronoi_opposite[pm], v);
+        p = Geom.intersect(llbnd, bisector);
+        if (p) {
+          EventQueue.del(llbnd);
+          EventQueue.insert(llbnd, p, Geom.distance(p, bot));
+        }
+        p = Geom.intersect(bisector, rrbnd);
+        if (p) {
+          EventQueue.insert(bisector, p, Geom.distance(p, bot));
+        }
+      } else {
+        break;
+      }
+    }
+    for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) {
+      callback(lbnd.edge);
+    }
+  }
+  function d3_geom_quadtreeNode() {
+    return {
+      leaf: true,
+      nodes: [],
+      point: null
+    };
+  }
+  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
+    if (!f(node, x1, y1, x2, y2)) {
+      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
+      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
+      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
+      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
+      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
+    }
+  }
+  function d3_geom_quadtreePoint(p) {
+    return {
+      x: p[0],
+      y: p[1]
+    };
+  }
+  function d3_time_utc() {
+    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
+  }
+  function d3_time_formatAbbreviate(name) {
+    return name.substring(0, 3);
+  }
+  function d3_time_parse(date, template, string, j) {
+    var c, p, i = 0, n = template.length, m = string.length;
+    while (i < n) {
+      if (j >= m) return -1;
+      c = template.charCodeAt(i++);
+      if (c == 37) {
+        p = d3_time_parsers[template.charAt(i++)];
+        if (!p || (j = p(date, string, j)) < 0) return -1;
+      } else if (c != string.charCodeAt(j++)) {
+        return -1;
+      }
+    }
+    return j;
+  }
+  function d3_time_formatRe(names) {
+    return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
+  }
+  function d3_time_formatLookup(names) {
+    var map = new d3_Map, i = -1, n = names.length;
+    while (++i < n) map.set(names[i].toLowerCase(), i);
+    return map;
+  }
+  function d3_time_parseWeekdayAbbrev(date, string, i) {
+    d3_time_dayAbbrevRe.lastIndex = 0;
+    var n = d3_time_dayAbbrevRe.exec(string.substring(i));
+    return n ? i += n[0].length : -1;
+  }
+  function d3_time_parseWeekday(date, string, i) {
+    d3_time_dayRe.lastIndex = 0;
+    var n = d3_time_dayRe.exec(string.substring(i));
+    return n ? i += n[0].length : -1;
+  }
+  function d3_time_parseMonthAbbrev(date, string, i) {
+    d3_time_monthAbbrevRe.lastIndex = 0;
+    var n = d3_time_monthAbbrevRe.exec(string.substring(i));
+    return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+  }
+  function d3_time_parseMonth(date, string, i) {
+    d3_time_monthRe.lastIndex = 0;
+    var n = d3_time_monthRe.exec(string.substring(i));
+    return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+  }
+  function d3_time_parseLocaleFull(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
+  }
+  function d3_time_parseLocaleDate(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
+  }
+  function d3_time_parseLocaleTime(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
+  }
+  function d3_time_parseFullYear(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 4));
+    return n ? (date.y = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseYear(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.y = d3_time_expandYear(+n[0]), i += n[0].length) : -1;
+  }
+  function d3_time_expandYear(d) {
+    return d + (d > 68 ? 1900 : 2e3);
+  }
+  function d3_time_parseMonthNumber(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.m = n[0] - 1, i += n[0].length) : -1;
+  }
+  function d3_time_parseDay(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.d = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseHour24(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.H = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseMinutes(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.M = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseSeconds(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.S = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseMilliseconds(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 3));
+    return n ? (date.L = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseAmPm(date, string, i) {
+    var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
+    return n == null ? -1 : (date.p = n, i);
+  }
+  function d3_time_zone(d) {
+    var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60;
+    return zs + d3_time_zfill2(zh) + d3_time_zfill2(zm);
+  }
+  function d3_time_formatIsoNative(date) {
+    return date.toISOString();
+  }
+  function d3_time_interval(local, step, number) {
+    function round(date) {
+      var d0 = local(date), d1 = offset(d0, 1);
+      return date - d0 < d1 - date ? d0 : d1;
+    }
+    function ceil(date) {
+      step(date = local(new d3_time(date - 1)), 1);
+      return date;
+    }
+    function offset(date, k) {
+      step(date = new d3_time(+date), k);
+      return date;
+    }
+    function range(t0, t1, dt) {
+      var time = ceil(t0), times = [];
+      if (dt > 1) {
+        while (time < t1) {
+          if (!(number(time) % dt)) times.push(new Date(+time));
+          step(time, 1);
+        }
+      } else {
+        while (time < t1) times.push(new Date(+time)), step(time, 1);
+      }
+      return times;
+    }
+    function range_utc(t0, t1, dt) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time_utc;
+        utc._ = t0;
+        return range(utc, t1, dt);
+      } finally {
+        d3_time = Date;
+      }
+    }
+    local.floor = local;
+    local.round = round;
+    local.ceil = ceil;
+    local.offset = offset;
+    local.range = range;
+    var utc = local.utc = d3_time_interval_utc(local);
+    utc.floor = utc;
+    utc.round = d3_time_interval_utc(round);
+    utc.ceil = d3_time_interval_utc(ceil);
+    utc.offset = d3_time_interval_utc(offset);
+    utc.range = range_utc;
+    return local;
+  }
+  function d3_time_interval_utc(method) {
+    return function(date, k) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time_utc;
+        utc._ = date;
+        return method(utc, k)._;
+      } finally {
+        d3_time = Date;
+      }
+    };
+  }
+  function d3_time_scale(linear, methods, format) {
+    function scale(x) {
+      return linear(x);
+    }
+    scale.invert = function(x) {
+      return d3_time_scaleDate(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
+      linear.domain(x);
+      return scale;
+    };
+    scale.nice = function(m) {
+      return scale.domain(d3_scale_nice(scale.domain(), function() {
+        return m;
+      }));
+    };
+    scale.ticks = function(m, k) {
+      var extent = d3_time_scaleExtent(scale.domain());
+      if (typeof m !== "function") {
+        var span = extent[1] - extent[0], target = span / m, i = d3.bisect(d3_time_scaleSteps, target);
+        if (i == d3_time_scaleSteps.length) return methods.year(extent, m);
+        if (!i) return linear.ticks(m).map(d3_time_scaleDate);
+        if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i;
+        m = methods[i];
+        k = m[1];
+        m = m[0].range;
+      }
+      return m(extent[0], new Date(+extent[1] + 1), k);
+    };
+    scale.tickFormat = function() {
+      return format;
+    };
+    scale.copy = function() {
+      return d3_time_scale(linear.copy(), methods, format);
+    };
+    return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+  }
+  function d3_time_scaleExtent(domain) {
+    var start = domain[0], stop = domain[domain.length - 1];
+    return start < stop ? [ start, stop ] : [ stop, start ];
+  }
+  function d3_time_scaleDate(t) {
+    return new Date(t);
+  }
+  function d3_time_scaleFormat(formats) {
+    return function(date) {
+      var i = formats.length - 1, f = formats[i];
+      while (!f[1](date)) f = formats[--i];
+      return f[0](date);
+    };
+  }
+  function d3_time_scaleSetYear(y) {
+    var d = new Date(y, 0, 1);
+    d.setFullYear(y);
+    return d;
+  }
+  function d3_time_scaleGetYear(d) {
+    var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1);
+    return y + (d - d0) / (d1 - d0);
+  }
+  function d3_time_scaleUTCSetYear(y) {
+    var d = new Date(Date.UTC(y, 0, 1));
+    d.setUTCFullYear(y);
+    return d;
+  }
+  function d3_time_scaleUTCGetYear(d) {
+    var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1);
+    return y + (d - d0) / (d1 - d0);
+  }
+  if (!Date.now) Date.now = function() {
+    return +(new Date);
+  };
+  try {
+    document.createElement("div").style.setProperty("opacity", 0, "");
+  } catch (error) {
+    var d3_style_prototype = CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
+    d3_style_prototype.setProperty = function(name, value, priority) {
+      d3_style_setProperty.call(this, name, value + "", priority);
+    };
+  }
+  d3 = {
+    version: "2.10.2"
+  };
+  var d3_array = d3_arraySlice;
+  try {
+    d3_array(document.documentElement.childNodes)[0].nodeType;
+  } catch (e) {
+    d3_array = d3_arrayCopy;
+  }
+  var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
+    array.__proto__ = prototype;
+  } : function(array, prototype) {
+    for (var property in prototype) array[property] = prototype[property];
+  };
+  d3.map = function(object) {
+    var map = new d3_Map;
+    for (var key in object) map.set(key, object[key]);
+    return map;
+  };
+  d3_class(d3_Map, {
+    has: function(key) {
+      return d3_map_prefix + key in this;
+    },
+    get: function(key) {
+      return this[d3_map_prefix + key];
+    },
+    set: function(key, value) {
+      return this[d3_map_prefix + key] = value;
+    },
+    remove: function(key) {
+      key = d3_map_prefix + key;
+      return key in this && delete this[key];
+    },
+    keys: function() {
+      var keys = [];
+      this.forEach(function(key) {
+        keys.push(key);
+      });
+      return keys;
+    },
+    values: function() {
+      var values = [];
+      this.forEach(function(key, value) {
+        values.push(value);
+      });
+      return values;
+    },
+    entries: function() {
+      var entries = [];
+      this.forEach(function(key, value) {
+        entries.push({
+          key: key,
+          value: value
+        });
+      });
+      return entries;
+    },
+    forEach: function(f) {
+      for (var key in this) {
+        if (key.charCodeAt(0) === d3_map_prefixCode) {
+          f.call(this, key.substring(1), this[key]);
+        }
+      }
+    }
+  });
+  var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
+  d3.functor = d3_functor;
+  d3.rebind = function(target, source) {
+    var i = 1, n = arguments.length, method;
+    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
+    return target;
+  };
+  d3.ascending = function(a, b) {
+    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+  };
+  d3.descending = function(a, b) {
+    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+  };
+  d3.mean = function(array, f) {
+    var n = array.length, a, m = 0, i = -1, j = 0;
+    if (arguments.length === 1) {
+      while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
+    } else {
+      while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
+    }
+    return j ? m : undefined;
+  };
+  d3.median = function(array, f) {
+    if (arguments.length > 1) array = array.map(f);
+    array = array.filter(d3_number);
+    return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
+  };
+  d3.min = function(array, f) {
+    var i = -1, n = array.length, a, b;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = array[i]) != null && a > b) a = b;
+    } else {
+      while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
+    }
+    return a;
+  };
+  d3.max = function(array, f) {
+    var i = -1, n = array.length, a, b;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = array[i]) != null && b > a) a = b;
+    } else {
+      while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
+    }
+    return a;
+  };
+  d3.extent = function(array, f) {
+    var i = -1, n = array.length, a, b, c;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
+      while (++i < n) if ((b = array[i]) != null) {
+        if (a > b) a = b;
+        if (c < b) c = b;
+      }
+    } else {
+      while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
+        if (a > b) a = b;
+        if (c < b) c = b;
+      }
+    }
+    return [ a, c ];
+  };
+  d3.random = {
+    normal: function(µ, σ) {
+      var n = arguments.length;
+      if (n < 2) σ = 1;
+      if (n < 1) µ = 0;
+      return function() {
+        var x, y, r;
+        do {
+          x = Math.random() * 2 - 1;
+          y = Math.random() * 2 - 1;
+          r = x * x + y * y;
+        } while (!r || r > 1);
+        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
+      };
+    },
+    logNormal: function(µ, σ) {
+      var n = arguments.length;
+      if (n < 2) σ = 1;
+      if (n < 1) µ = 0;
+      var random = d3.random.normal();
+      return function() {
+        return Math.exp(µ + σ * random());
+      };
+    },
+    irwinHall: function(m) {
+      return function() {
+        for (var s = 0, j = 0; j < m; j++) s += Math.random();
+        return s / m;
+      };
+    }
+  };
+  d3.sum = function(array, f) {
+    var s = 0, n = array.length, a, i = -1;
+    if (arguments.length === 1) {
+      while (++i < n) if (!isNaN(a = +array[i])) s += a;
+    } else {
+      while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
+    }
+    return s;
+  };
+  d3.quantile = function(values, p) {
+    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = values[h - 1], e = H - h;
+    return e ? v + e * (values[h] - v) : v;
+  };
+  d3.transpose = function(matrix) {
+    return d3.zip.apply(d3, matrix);
+  };
+  d3.zip = function() {
+    if (!(n = arguments.length)) return [];
+    for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
+      for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
+        zip[j] = arguments[j][i];
+      }
+    }
+    return zips;
+  };
+  d3.bisector = function(f) {
+    return {
+      left: function(a, x, lo, hi) {
+        if (arguments.length < 3) lo = 0;
+        if (arguments.length < 4) hi = a.length;
+        while (lo < hi) {
+          var mid = lo + hi >>> 1;
+          if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid;
+        }
+        return lo;
+      },
+      right: function(a, x, lo, hi) {
+        if (arguments.length < 3) lo = 0;
+        if (arguments.length < 4) hi = a.length;
+        while (lo < hi) {
+          var mid = lo + hi >>> 1;
+          if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
+        }
+        return lo;
+      }
+    };
+  };
+  var d3_bisector = d3.bisector(function(d) {
+    return d;
+  });
+  d3.bisectLeft = d3_bisector.left;
+  d3.bisect = d3.bisectRight = d3_bisector.right;
+  d3.first = function(array, f) {
+    var i = 0, n = array.length, a = array[0], b;
+    if (arguments.length === 1) f = d3.ascending;
+    while (++i < n) {
+      if (f.call(array, a, b = array[i]) > 0) {
+        a = b;
+      }
+    }
+    return a;
+  };
+  d3.last = function(array, f) {
+    var i = 0, n = array.length, a = array[0], b;
+    if (arguments.length === 1) f = d3.ascending;
+    while (++i < n) {
+      if (f.call(array, a, b = array[i]) <= 0) {
+        a = b;
+      }
+    }
+    return a;
+  };
+  d3.nest = function() {
+    function map(array, depth) {
+      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
+      var i = -1, n = array.length, key = keys[depth++], keyValue, object, valuesByKey = new d3_Map, values, o = {};
+      while (++i < n) {
+        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
+          values.push(object);
+        } else {
+          valuesByKey.set(keyValue, [ object ]);
+        }
+      }
+      valuesByKey.forEach(function(keyValue, values) {
+        o[keyValue] = map(values, depth);
+      });
+      return o;
+    }
+    function entries(map, depth) {
+      if (depth >= keys.length) return map;
+      var a = [], sortKey = sortKeys[depth++], key;
+      for (key in map) {
+        a.push({
+          key: key,
+          values: entries(map[key], depth)
+        });
+      }
+      if (sortKey) a.sort(function(a, b) {
+        return sortKey(a.key, b.key);
+      });
+      return a;
+    }
+    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
+    nest.map = function(array) {
+      return map(array, 0);
+    };
+    nest.entries = function(array) {
+      return entries(map(array, 0), 0);
+    };
+    nest.key = function(d) {
+      keys.push(d);
+      return nest;
+    };
+    nest.sortKeys = function(order) {
+      sortKeys[keys.length - 1] = order;
+      return nest;
+    };
+    nest.sortValues = function(order) {
+      sortValues = order;
+      return nest;
+    };
+    nest.rollup = function(f) {
+      rollup = f;
+      return nest;
+    };
+    return nest;
+  };
+  d3.keys = function(map) {
+    var keys = [];
+    for (var key in map) keys.push(key);
+    return keys;
+  };
+  d3.values = function(map) {
+    var values = [];
+    for (var key in map) values.push(map[key]);
+    return values;
+  };
+  d3.entries = function(map) {
+    var entries = [];
+    for (var key in map) entries.push({
+      key: key,
+      value: map[key]
+    });
+    return entries;
+  };
+  d3.permute = function(array, indexes) {
+    var permutes = [], i = -1, n = indexes.length;
+    while (++i < n) permutes[i] = array[indexes[i]];
+    return permutes;
+  };
+  d3.merge = function(arrays) {
+    return Array.prototype.concat.apply([], arrays);
+  };
+  d3.split = function(array, f) {
+    var arrays = [], values = [], value, i = -1, n = array.length;
+    if (arguments.length < 2) f = d3_splitter;
+    while (++i < n) {
+      if (f.call(values, value = array[i], i)) {
+        values = [];
+      } else {
+        if (!values.length) arrays.push(values);
+        values.push(value);
+      }
+    }
+    return arrays;
+  };
+  d3.range = function(start, stop, step) {
+    if (arguments.length < 3) {
+      step = 1;
+      if (arguments.length < 2) {
+        stop = start;
+        start = 0;
+      }
+    }
+    if ((stop - start) / step === Infinity) throw new Error("infinite range");
+    var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j;
+    start *= k, stop *= k, step *= k;
+    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
+    return range;
+  };
+  d3.requote = function(s) {
+    return s.replace(d3_requote_re, "\\$&");
+  };
+  var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
+  d3.round = function(x, n) {
+    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
+  };
+  d3.xhr = function(url, mime, callback) {
+    var req = new XMLHttpRequest;
+    if (arguments.length < 3) callback = mime, mime = null; else if (mime && req.overrideMimeType) req.overrideMimeType(mime);
+    req.open("GET", url, true);
+    if (mime) req.setRequestHeader("Accept", mime);
+    req.onreadystatechange = function() {
+      if (req.readyState === 4) {
+        var s = req.status;
+        callback(!s && req.response || s >= 200 && s < 300 || s === 304 ? req : null);
+      }
+    };
+    req.send(null);
+  };
+  d3.text = function(url, mime, callback) {
+    function ready(req) {
+      callback(req && req.responseText);
+    }
+    if (arguments.length < 3) {
+      callback = mime;
+      mime = null;
+    }
+    d3.xhr(url, mime, ready);
+  };
+  d3.json = function(url, callback) {
+    d3.text(url, "application/json", function(text) {
+      callback(text ? JSON.parse(text) : null);
+    });
+  };
+  d3.html = function(url, callback) {
+    d3.text(url, "text/html", function(text) {
+      if (text != null) {
+        var range = document.createRange();
+        range.selectNode(document.body);
+        text = range.createContextualFragment(text);
+      }
+      callback(text);
+    });
+  };
+  d3.xml = function(url, mime, callback) {
+    function ready(req) {
+      callback(req && req.responseXML);
+    }
+    if (arguments.length < 3) {
+      callback = mime;
+      mime = null;
+    }
+    d3.xhr(url, mime, ready);
+  };
+  var d3_nsPrefix = {
+    svg: "http://www.w3.org/2000/svg",
+    xhtml: "http://www.w3.org/1999/xhtml",
+    xlink: "http://www.w3.org/1999/xlink",
+    xml: "http://www.w3.org/XML/1998/namespace",
+    xmlns: "http://www.w3.org/2000/xmlns/"
+  };
+  d3.ns = {
+    prefix: d3_nsPrefix,
+    qualify: function(name) {
+      var i = name.indexOf(":"), prefix = name;
+      if (i >= 0) {
+        prefix = name.substring(0, i);
+        name = name.substring(i + 1);
+      }
+      return d3_nsPrefix.hasOwnProperty(prefix) ? {
+        space: d3_nsPrefix[prefix],
+        local: name
+      } : name;
+    }
+  };
+  d3.dispatch = function() {
+    var dispatch = new d3_dispatch, i = -1, n = arguments.length;
+    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+    return dispatch;
+  };
+  d3_dispatch.prototype.on = function(type, listener) {
+    var i = type.indexOf("."), name = "";
+    if (i > 0) {
+      name = type.substring(i + 1);
+      type = type.substring(0, i);
+    }
+    return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
+  };
+  d3.format = function(specifier) {
+    var match = d3_format_re.exec(specifier), fill = match[1] || " ", sign = match[3] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false;
+    if (precision) precision = +precision.substring(1);
+    if (zfill) {
+      fill = "0";
+      if (comma) width -= Math.floor((width - 1) / 4);
+    }
+    switch (type) {
+     case "n":
+      comma = true;
+      type = "g";
+      break;
+     case "%":
+      scale = 100;
+      suffix = "%";
+      type = "f";
+      break;
+     case "p":
+      scale = 100;
+      suffix = "%";
+      type = "r";
+      break;
+     case "d":
+      integer = true;
+      precision = 0;
+      break;
+     case "s":
+      scale = -1;
+      type = "r";
+      break;
+    }
+    if (type == "r" && !precision) type = "g";
+    type = d3_format_types.get(type) || d3_format_typeDefault;
+    return function(value) {
+      if (integer && value % 1) return "";
+      var negative = value < 0 && (value = -value) ? "-" : sign;
+      if (scale < 0) {
+        var prefix = d3.formatPrefix(value, precision);
+        value = prefix.scale(value);
+        suffix = prefix.symbol;
+      } else {
+        value *= scale;
+      }
+      value = type(value, precision);
+      if (zfill) {
+        var length = value.length + negative.length;
+        if (length < width) value = (new Array(width - length + 1)).join(fill) + value;
+        if (comma) value = d3_format_group(value);
+        value = negative + value;
+      } else {
+        if (comma) value = d3_format_group(value);
+        value = negative + value;
+        var length = value.length;
+        if (length < width) value = (new Array(width - length + 1)).join(fill) + value;
+      }
+      return value + suffix;
+    };
+  };
+  var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/;
+  var d3_format_types = d3.map({
+    g: function(x, p) {
+      return x.toPrecision(p);
+    },
+    e: function(x, p) {
+      return x.toExponential(p);
+    },
+    f: function(x, p) {
+      return x.toFixed(p);
+    },
+    r: function(x, p) {
+      return d3.round(x, p = d3_format_precision(x, p)).toFixed(Math.max(0, Math.min(20, p)));
+    }
+  });
+  var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "μ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
+  d3.formatPrefix = function(value, precision) {
+    var i = 0;
+    if (value) {
+      if (value < 0) value *= -1;
+      if (precision) value = d3.round(value, d3_format_precision(value, precision));
+      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
+      i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
+    }
+    return d3_formatPrefixes[8 + i / 3];
+  };
+  var d3_ease_quad = d3_ease_poly(2), d3_ease_cubic = d3_ease_poly(3), d3_ease_default = function() {
+    return d3_ease_identity;
+  };
+  var d3_ease = d3.map({
+    linear: d3_ease_default,
+    poly: d3_ease_poly,
+    quad: function() {
+      return d3_ease_quad;
+    },
+    cubic: function() {
+      return d3_ease_cubic;
+    },
+    sin: function() {
+      return d3_ease_sin;
+    },
+    exp: function() {
+      return d3_ease_exp;
+    },
+    circle: function() {
+      return d3_ease_circle;
+    },
+    elastic: d3_ease_elastic,
+    back: d3_ease_back,
+    bounce: function() {
+      return d3_ease_bounce;
+    }
+  });
+  var d3_ease_mode = d3.map({
+    "in": d3_ease_identity,
+    out: d3_ease_reverse,
+    "in-out": d3_ease_reflect,
+    "out-in": function(f) {
+      return d3_ease_reflect(d3_ease_reverse(f));
+    }
+  });
+  d3.ease = function(name) {
+    var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in";
+    t = d3_ease.get(t) || d3_ease_default;
+    m = d3_ease_mode.get(m) || d3_ease_identity;
+    return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1))));
+  };
+  d3.event = null;
+  d3.transform = function(string) {
+    var g = document.createElementNS(d3.ns.prefix.svg, "g");
+    return (d3.transform = function(string) {
+      g.setAttribute("transform", string);
+      var t = g.transform.baseVal.consolidate();
+      return new d3_transform(t ? t.matrix : d3_transformIdentity);
+    })(string);
+  };
+  d3_transform.prototype.toString = function() {
+    return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
+  };
+  var d3_transformDegrees = 180 / Math.PI, d3_transformIdentity = {
+    a: 1,
+    b: 0,
+    c: 0,
+    d: 1,
+    e: 0,
+    f: 0
+  };
+  d3.interpolate = function(a, b) {
+    var i = d3.interpolators.length, f;
+    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
+    return f;
+  };
+  d3.interpolateNumber = function(a, b) {
+    b -= a;
+    return function(t) {
+      return a + b * t;
+    };
+  };
+  d3.interpolateRound = function(a, b) {
+    b -= a;
+    return function(t) {
+      return Math.round(a + b * t);
+    };
+  };
+  d3.interpolateString = function(a, b) {
+    var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
+    d3_interpolate_number.lastIndex = 0;
+    for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
+      if (m.index) s.push(b.substring(s0, s1 = m.index));
+      q.push({
+        i: s.length,
+        x: m[0]
+      });
+      s.push(null);
+      s0 = d3_interpolate_number.lastIndex;
+    }
+    if (s0 < b.length) s.push(b.substring(s0));
+    for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
+      o = q[i];
+      if (o.x == m[0]) {
+        if (o.i) {
+          if (s[o.i + 1] == null) {
+            s[o.i - 1] += o.x;
+            s.splice(o.i, 1);
+            for (j = i + 1; j < n; ++j) q[j].i--;
+          } else {
+            s[o.i - 1] += o.x + s[o.i + 1];
+            s.splice(o.i, 2);
+            for (j = i + 1; j < n; ++j) q[j].i -= 2;
+          }
+        } else {
+          if (s[o.i + 1] == null) {
+            s[o.i] = o.x;
+          } else {
+            s[o.i] = o.x + s[o.i + 1];
+            s.splice(o.i + 1, 1);
+            for (j = i + 1; j < n; ++j) q[j].i--;
+          }
+        }
+        q.splice(i, 1);
+        n--;
+        i--;
+      } else {
+        o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
+      }
+    }
+    while (i < n) {
+      o = q.pop();
+      if (s[o.i + 1] == null) {
+        s[o.i] = o.x;
+      } else {
+        s[o.i] = o.x + s[o.i + 1];
+        s.splice(o.i + 1, 1);
+      }
+      n--;
+    }
+    if (s.length === 1) {
+      return s[0] == null ? q[0].x : function() {
+        return b;
+      };
+    }
+    return function(t) {
+      for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
+      return s.join("");
+    };
+  };
+  d3.interpolateTransform = function(a, b) {
+    var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
+    if (ta[0] != tb[0] || ta[1] != tb[1]) {
+      s.push("translate(", null, ",", null, ")");
+      q.push({
+        i: 1,
+        x: d3.interpolateNumber(ta[0], tb[0])
+      }, {
+        i: 3,
+        x: d3.interpolateNumber(ta[1], tb[1])
+      });
+    } else if (tb[0] || tb[1]) {
+      s.push("translate(" + tb + ")");
+    } else {
+      s.push("");
+    }
+    if (ra != rb) {
+      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
+      q.push({
+        i: s.push(s.pop() + "rotate(", null, ")") - 2,
+        x: d3.interpolateNumber(ra, rb)
+      });
+    } else if (rb) {
+      s.push(s.pop() + "rotate(" + rb + ")");
+    }
+    if (wa != wb) {
+      q.push({
+        i: s.push(s.pop() + "skewX(", null, ")") - 2,
+        x: d3.interpolateNumber(wa, wb)
+      });
+    } else if (wb) {
+      s.push(s.pop() + "skewX(" + wb + ")");
+    }
+    if (ka[0] != kb[0] || ka[1] != kb[1]) {
+      n = s.push(s.pop() + "scale(", null, ",", null, ")");
+      q.push({
+        i: n - 4,
+        x: d3.interpolateNumber(ka[0], kb[0])
+      }, {
+        i: n - 2,
+        x: d3.interpolateNumber(ka[1], kb[1])
+      });
+    } else if (kb[0] != 1 || kb[1] != 1) {
+      s.push(s.pop() + "scale(" + kb + ")");
+    }
+    n = q.length;
+    return function(t) {
+      var i = -1, o;
+      while (++i < n) s[(o = q[i]).i] = o.x(t);
+      return s.join("");
+    };
+  };
+  d3.interpolateRgb = function(a, b) {
+    a = d3.rgb(a);
+    b = d3.rgb(b);
+    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
+    return function(t) {
+      return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
+    };
+  };
+  d3.interpolateHsl = function(a, b) {
+    a = d3.hsl(a);
+    b = d3.hsl(b);
+    var h0 = a.h, s0 = a.s, l0 = a.l, h1 = b.h - h0, s1 = b.s - s0, l1 = b.l - l0;
+    if (h1 > 180) h1 -= 360; else if (h1 < -180) h1 += 360;
+    return function(t) {
+      return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t) + "";
+    };
+  };
+  d3.interpolateLab = function(a, b) {
+    a = d3.lab(a);
+    b = d3.lab(b);
+    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
+    return function(t) {
+      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
+    };
+  };
+  d3.interpolateHcl = function(a, b) {
+    a = d3.hcl(a);
+    b = d3.hcl(b);
+    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
+    if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
+    return function(t) {
+      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
+    };
+  };
+  d3.interpolateArray = function(a, b) {
+    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
+    for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i]));
+    for (; i < na; ++i) c[i] = a[i];
+    for (; i < nb; ++i) c[i] = b[i];
+    return function(t) {
+      for (i = 0; i < n0; ++i) c[i] = x[i](t);
+      return c;
+    };
+  };
+  d3.interpolateObject = function(a, b) {
+    var i = {}, c = {}, k;
+    for (k in a) {
+      if (k in b) {
+        i[k] = d3_interpolateByName(k)(a[k], b[k]);
+      } else {
+        c[k] = a[k];
+      }
+    }
+    for (k in b) {
+      if (!(k in a)) {
+        c[k] = b[k];
+      }
+    }
+    return function(t) {
+      for (k in i) c[k] = i[k](t);
+      return c;
+    };
+  };
+  var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
+  d3.interpolators = [ d3.interpolateObject, function(a, b) {
+    return b instanceof Array && d3.interpolateArray(a, b);
+  }, function(a, b) {
+    return (typeof a === "string" || typeof b === "string") && d3.interpolateString(a + "", b + "");
+  }, function(a, b) {
+    return (typeof b === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Rgb || b instanceof d3_Hsl) && d3.interpolateRgb(a, b);
+  }, function(a, b) {
+    return !isNaN(a = +a) && !isNaN(b = +b) && d3.interpolateNumber(a, b);
+  } ];
+  d3.rgb = function(r, g, b) {
+    return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
+  };
+  d3_Rgb.prototype.brighter = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    var r = this.r, g = this.g, b = this.b, i = 30;
+    if (!r && !g && !b) return d3_rgb(i, i, i);
+    if (r && r < i) r = i;
+    if (g && g < i) g = i;
+    if (b && b < i) b = i;
+    return d3_rgb(Math.min(255, Math.floor(r / k)), Math.min(255, Math.floor(g / k)), Math.min(255, Math.floor(b / k)));
+  };
+  d3_Rgb.prototype.darker = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_rgb(Math.floor(k * this.r), Math.floor(k * this.g), Math.floor(k * this.b));
+  };
+  d3_Rgb.prototype.hsl = function() {
+    return d3_rgb_hsl(this.r, this.g, this.b);
+  };
+  d3_Rgb.prototype.toString = function() {
+    return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
+  };
+  var d3_rgb_names = d3.map({
+    aliceblue: "#f0f8ff",
+    antiquewhite: "#faebd7",
+    aqua: "#00ffff",
+    aquamarine: "#7fffd4",
+    azure: "#f0ffff",
+    beige: "#f5f5dc",
+    bisque: "#ffe4c4",
+    black: "#000000",
+    blanchedalmond: "#ffebcd",
+    blue: "#0000ff",
+    blueviolet: "#8a2be2",
+    brown: "#a52a2a",
+    burlywood: "#deb887",
+    cadetblue: "#5f9ea0",
+    chartreuse: "#7fff00",
+    chocolate: "#d2691e",
+    coral: "#ff7f50",
+    cornflowerblue: "#6495ed",
+    cornsilk: "#fff8dc",
+    crimson: "#dc143c",
+    cyan: "#00ffff",
+    darkblue: "#00008b",
+    darkcyan: "#008b8b",
+    darkgoldenrod: "#b8860b",
+    darkgray: "#a9a9a9",
+    darkgreen: "#006400",
+    darkgrey: "#a9a9a9",
+    darkkhaki: "#bdb76b",
+    darkmagenta: "#8b008b",
+    darkolivegreen: "#556b2f",
+    darkorange: "#ff8c00",
+    darkorchid: "#9932cc",
+    darkred: "#8b0000",
+    darksalmon: "#e9967a",
+    darkseagreen: "#8fbc8f",
+    darkslateblue: "#483d8b",
+    darkslategray: "#2f4f4f",
+    darkslategrey: "#2f4f4f",
+    darkturquoise: "#00ced1",
+    darkviolet: "#9400d3",
+    deeppink: "#ff1493",
+    deepskyblue: "#00bfff",
+    dimgray: "#696969",
+    dimgrey: "#696969",
+    dodgerblue: "#1e90ff",
+    firebrick: "#b22222",
+    floralwhite: "#fffaf0",
+    forestgreen: "#228b22",
+    fuchsia: "#ff00ff",
+    gainsboro: "#dcdcdc",
+    ghostwhite: "#f8f8ff",
+    gold: "#ffd700",
+    goldenrod: "#daa520",
+    gray: "#808080",
+    green: "#008000",
+    greenyellow: "#adff2f",
+    grey: "#808080",
+    honeydew: "#f0fff0",
+    hotpink: "#ff69b4",
+    indianred: "#cd5c5c",
+    indigo: "#4b0082",
+    ivory: "#fffff0",
+    khaki: "#f0e68c",
+    lavender: "#e6e6fa",
+    lavenderblush: "#fff0f5",
+    lawngreen: "#7cfc00",
+    lemonchiffon: "#fffacd",
+    lightblue: "#add8e6",
+    lightcoral: "#f08080",
+    lightcyan: "#e0ffff",
+    lightgoldenrodyellow: "#fafad2",
+    lightgray: "#d3d3d3",
+    lightgreen: "#90ee90",
+    lightgrey: "#d3d3d3",
+    lightpink: "#ffb6c1",
+    lightsalmon: "#ffa07a",
+    lightseagreen: "#20b2aa",
+    lightskyblue: "#87cefa",
+    lightslategray: "#778899",
+    lightslategrey: "#778899",
+    lightsteelblue: "#b0c4de",
+    lightyellow: "#ffffe0",
+    lime: "#00ff00",
+    limegreen: "#32cd32",
+    linen: "#faf0e6",
+    magenta: "#ff00ff",
+    maroon: "#800000",
+    mediumaquamarine: "#66cdaa",
+    mediumblue: "#0000cd",
+    mediumorchid: "#ba55d3",
+    mediumpurple: "#9370db",
+    mediumseagreen: "#3cb371",
+    mediumslateblue: "#7b68ee",
+    mediumspringgreen: "#00fa9a",
+    mediumturquoise: "#48d1cc",
+    mediumvioletred: "#c71585",
+    midnightblue: "#191970",
+    mintcream: "#f5fffa",
+    mistyrose: "#ffe4e1",
+    moccasin: "#ffe4b5",
+    navajowhite: "#ffdead",
+    navy: "#000080",
+    oldlace: "#fdf5e6",
+    olive: "#808000",
+    olivedrab: "#6b8e23",
+    orange: "#ffa500",
+    orangered: "#ff4500",
+    orchid: "#da70d6",
+    palegoldenrod: "#eee8aa",
+    palegreen: "#98fb98",
+    paleturquoise: "#afeeee",
+    palevioletred: "#db7093",
+    papayawhip: "#ffefd5",
+    peachpuff: "#ffdab9",
+    peru: "#cd853f",
+    pink: "#ffc0cb",
+    plum: "#dda0dd",
+    powderblue: "#b0e0e6",
+    purple: "#800080",
+    red: "#ff0000",
+    rosybrown: "#bc8f8f",
+    royalblue: "#4169e1",
+    saddlebrown: "#8b4513",
+    salmon: "#fa8072",
+    sandybrown: "#f4a460",
+    seagreen: "#2e8b57",
+    seashell: "#fff5ee",
+    sienna: "#a0522d",
+    silver: "#c0c0c0",
+    skyblue: "#87ceeb",
+    slateblue: "#6a5acd",
+    slategray: "#708090",
+    slategrey: "#708090",
+    snow: "#fffafa",
+    springgreen: "#00ff7f",
+    steelblue: "#4682b4",
+    tan: "#d2b48c",
+    teal: "#008080",
+    thistle: "#d8bfd8",
+    tomato: "#ff6347",
+    turquoise: "#40e0d0",
+    violet: "#ee82ee",
+    wheat: "#f5deb3",
+    white: "#ffffff",
+    whitesmoke: "#f5f5f5",
+    yellow: "#ffff00",
+    yellowgreen: "#9acd32"
+  });
+  d3_rgb_names.forEach(function(key, value) {
+    d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb));
+  });
+  d3.hsl = function(h, s, l) {
+    return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
+  };
+  d3_Hsl.prototype.brighter = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_hsl(this.h, this.s, this.l / k);
+  };
+  d3_Hsl.prototype.darker = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_hsl(this.h, this.s, k * this.l);
+  };
+  d3_Hsl.prototype.rgb = function() {
+    return d3_hsl_rgb(this.h, this.s, this.l);
+  };
+  d3_Hsl.prototype.toString = function() {
+    return this.rgb().toString();
+  };
+  d3.hcl = function(h, c, l) {
+    return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
+  };
+  d3_Hcl.prototype.brighter = function(k) {
+    return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
+  };
+  d3_Hcl.prototype.darker = function(k) {
+    return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
+  };
+  d3_Hcl.prototype.rgb = function() {
+    return d3_hcl_lab(this.h, this.c, this.l).rgb();
+  };
+  d3_Hcl.prototype.toString = function() {
+    return this.rgb() + "";
+  };
+  d3.lab = function(l, a, b) {
+    return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
+  };
+  var d3_lab_K = 18;
+  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
+  d3_Lab.prototype.brighter = function(k) {
+    return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+  d3_Lab.prototype.darker = function(k) {
+    return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+  d3_Lab.prototype.rgb = function() {
+    return d3_lab_rgb(this.l, this.a, this.b);
+  };
+  d3_Lab.prototype.toString = function() {
+    return this.rgb() + "";
+  };
+  var d3_select = function(s, n) {
+    return n.querySelector(s);
+  }, d3_selectAll = function(s, n) {
+    return n.querySelectorAll(s);
+  }, d3_selectRoot = document.documentElement, d3_selectMatcher = d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector || d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector || d3_selectRoot.oMatchesSelector, d3_selectMatches = function(n, s) {
+    return d3_selectMatcher.call(n, s);
+  };
+  if (typeof Sizzle === "function") {
+    d3_select = function(s, n) {
+      return Sizzle(s, n)[0] || null;
+    };
+    d3_selectAll = function(s, n) {
+      return Sizzle.uniqueSort(Sizzle(s, n));
+    };
+    d3_selectMatches = Sizzle.matchesSelector;
+  }
+  var d3_selectionPrototype = [];
+  d3.selection = function() {
+    return d3_selectionRoot;
+  };
+  d3.selection.prototype = d3_selectionPrototype;
+  d3_selectionPrototype.select = function(selector) {
+    var subgroups = [], subgroup, subnode, group, node;
+    if (typeof selector !== "function") selector = d3_selection_selector(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = (group = this[j]).parentNode;
+      for (var i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroup.push(subnode = selector.call(node, node.__data__, i));
+          if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  d3_selectionPrototype.selectAll = function(selector) {
+    var subgroups = [], subgroup, node;
+    if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i)));
+          subgroup.parentNode = node;
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  d3_selectionPrototype.attr = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") {
+        var node = this.node();
+        name = d3.ns.qualify(name);
+        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
+      }
+      for (value in name) this.each(d3_selection_attr(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_attr(name, value));
+  };
+  d3_selectionPrototype.classed = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") {
+        var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
+        if (value = node.classList) {
+          while (++i < n) if (!value.contains(name[i])) return false;
+        } else {
+          value = node.className;
+          if (value.baseVal != null) value = value.baseVal;
+          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
+        }
+        return true;
+      }
+      for (value in name) this.each(d3_selection_classed(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_classed(name, value));
+  };
+  d3_selectionPrototype.style = function(name, value, priority) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof name !== "string") {
+        if (n < 2) value = "";
+        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
+        return this;
+      }
+      if (n < 2) return window.getComputedStyle(this.node(), null).getPropertyValue(name);
+      priority = "";
+    }
+    return this.each(d3_selection_style(name, value, priority));
+  };
+  d3_selectionPrototype.property = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") return this.node()[name];
+      for (value in name) this.each(d3_selection_property(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_property(name, value));
+  };
+  d3_selectionPrototype.text = function(value) {
+    return arguments.length < 1 ? this.node().textContent : this.each(typeof value === "function" ? function() {
+      var v = value.apply(this, arguments);
+      this.textContent = v == null ? "" : v;
+    } : value == null ? function() {
+      this.textContent = "";
+    } : function() {
+      this.textContent = value;
+    });
+  };
+  d3_selectionPrototype.html = function(value) {
+    return arguments.length < 1 ? this.node().innerHTML : this.each(typeof value === "function" ? function() {
+      var v = value.apply(this, arguments);
+      this.innerHTML = v == null ? "" : v;
+    } : value == null ? function() {
+      this.innerHTML = "";
+    } : function() {
+      this.innerHTML = value;
+    });
+  };
+  d3_selectionPrototype.append = function(name) {
+    function append() {
+      return this.appendChild(document.createElementNS(this.namespaceURI, name));
+    }
+    function appendNS() {
+      return this.appendChild(document.createElementNS(name.space, name.local));
+    }
+    name = d3.ns.qualify(name);
+    return this.select(name.local ? appendNS : append);
+  };
+  d3_selectionPrototype.insert = function(name, before) {
+    function insert() {
+      return this.insertBefore(document.createElementNS(this.namespaceURI, name), d3_select(before, this));
+    }
+    function insertNS() {
+      return this.insertBefore(document.createElementNS(name.space, name.local), d3_select(before, this));
+    }
+    name = d3.ns.qualify(name);
+    return this.select(name.local ? insertNS : insert);
+  };
+  d3_selectionPrototype.remove = function() {
+    return this.each(function() {
+      var parent = this.parentNode;
+      if (parent) parent.removeChild(this);
+    });
+  };
+  d3_selectionPrototype.data = function(value, key) {
+    function bind(group, groupData) {
+      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), n1 = Math.max(n, m), updateNodes = [], enterNodes = [], exitNodes = [], node, nodeData;
+      if (key) {
+        var nodeByKeyValue = new d3_Map, keyValues = [], keyValue, j = groupData.length;
+        for (i = -1; ++i < n; ) {
+          keyValue = key.call(node = group[i], node.__data__, i);
+          if (nodeByKeyValue.has(keyValue)) {
+            exitNodes[j++] = node;
+          } else {
+            nodeByKeyValue.set(keyValue, node);
+          }
+          keyValues.push(keyValue);
+        }
+        for (i = -1; ++i < m; ) {
+          keyValue = key.call(groupData, nodeData = groupData[i], i);
+          if (nodeByKeyValue.has(keyValue)) {
+            updateNodes[i] = node = nodeByKeyValue.get(keyValue);
+            node.__data__ = nodeData;
+            enterNodes[i] = exitNodes[i] = null;
+          } else {
+            enterNodes[i] = d3_selection_dataNode(nodeData);
+            updateNodes[i] = exitNodes[i] = null;
+          }
+          nodeByKeyValue.remove(keyValue);
+        }
+        for (i = -1; ++i < n; ) {
+          if (nodeByKeyValue.has(keyValues[i])) {
+            exitNodes[i] = group[i];
+          }
+        }
+      } else {
+        for (i = -1; ++i < n0; ) {
+          node = group[i];
+          nodeData = groupData[i];
+          if (node) {
+            node.__data__ = nodeData;
+            updateNodes[i] = node;
+            enterNodes[i] = exitNodes[i] = null;
+          } else {
+            enterNodes[i] = d3_selection_dataNode(nodeData);
+            updateNodes[i] = exitNodes[i] = null;
+          }
+        }
+        for (; i < m; ++i) {
+          enterNodes[i] = d3_selection_dataNode(groupData[i]);
+          updateNodes[i] = exitNodes[i] = null;
+        }
+        for (; i < n1; ++i) {
+          exitNodes[i] = group[i];
+          enterNodes[i] = updateNodes[i] = null;
+        }
+      }
+      enterNodes.update = updateNodes;
+      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
+      enter.push(enterNodes);
+      update.push(updateNodes);
+      exit.push(exitNodes);
+    }
+    var i = -1, n = this.length, group, node;
+    if (!arguments.length) {
+      value = new Array(n = (group = this[0]).length);
+      while (++i < n) {
+        if (node = group[i]) {
+          value[i] = node.__data__;
+        }
+      }
+      return value;
+    }
+    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
+    if (typeof value === "function") {
+      while (++i < n) {
+        bind(group = this[i], value.call(group, group.parentNode.__data__, i));
+      }
+    } else {
+      while (++i < n) {
+        bind(group = this[i], value);
+      }
+    }
+    update.enter = function() {
+      return enter;
+    };
+    update.exit = function() {
+      return exit;
+    };
+    return update;
+  };
+  d3_selectionPrototype.datum = d3_selectionPrototype.map = function(value) {
+    return arguments.length < 1 ? this.property("__data__") : this.property("__data__", value);
+  };
+  d3_selectionPrototype.filter = function(filter) {
+    var subgroups = [], subgroup, group, node;
+    if (typeof filter !== "function") filter = d3_selection_filter(filter);
+    for (var j = 0, m = this.length; j < m; j++) {
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = (group = this[j]).parentNode;
+      for (var i = 0, n = group.length; i < n; i++) {
+        if ((node = group[i]) && filter.call(node, node.__data__, i)) {
+          subgroup.push(node);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  d3_selectionPrototype.order = function() {
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
+        if (node = group[i]) {
+          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
+          next = node;
+        }
+      }
+    }
+    return this;
+  };
+  d3_selectionPrototype.sort = function(comparator) {
+    comparator = d3_selection_sortComparator.apply(this, arguments);
+    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
+    return this.order();
+  };
+  d3_selectionPrototype.on = function(type, listener, capture) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof type !== "string") {
+        if (n < 2) listener = false;
+        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
+        return this;
+      }
+      if (n < 2) return (n = this.node()["__on" + type]) && n._;
+      capture = false;
+    }
+    return this.each(d3_selection_on(type, listener, capture));
+  };
+  d3_selectionPrototype.each = function(callback) {
+    return d3_selection_each(this, function(node, i, j) {
+      callback.call(node, node.__data__, i, j);
+    });
+  };
+  d3_selectionPrototype.call = function(callback) {
+    callback.apply(this, (arguments[0] = this, arguments));
+    return this;
+  };
+  d3_selectionPrototype.empty = function() {
+    return !this.node();
+  };
+  d3_selectionPrototype.node = function(callback) {
+    for (var j = 0, m = this.length; j < m; j++) {
+      for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+        var node = group[i];
+        if (node) return node;
+      }
+    }
+    return null;
+  };
+  d3_selectionPrototype.transition = function() {
+    var subgroups = [], subgroup, node;
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        subgroup.push((node = group[i]) ? {
+          node: node,
+          delay: d3_transitionDelay,
+          duration: d3_transitionDuration
+        } : null);
+      }
+    }
+    return d3_transition(subgroups, d3_transitionId || ++d3_transitionNextId, Date.now());
+  };
+  var d3_selectionRoot = d3_selection([ [ document ] ]);
+  d3_selectionRoot[0].parentNode = d3_selectRoot;
+  d3.select = function(selector) {
+    return typeof selector === "string" ? d3_selectionRoot.select(selector) : d3_selection([ [ selector ] ]);
+  };
+  d3.selectAll = function(selector) {
+    return typeof selector === "string" ? d3_selectionRoot.selectAll(selector) : d3_selection([ d3_array(selector) ]);
+  };
+  var d3_selection_enterPrototype = [];
+  d3.selection.enter = d3_selection_enter;
+  d3.selection.enter.prototype = d3_selection_enterPrototype;
+  d3_selection_enterPrototype.append = d3_selectionPrototype.append;
+  d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
+  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
+  d3_selection_enterPrototype.node = d3_selectionPrototype.node;
+  d3_selection_enterPrototype.select = function(selector) {
+    var subgroups = [], subgroup, subnode, upgroup, group, node;
+    for (var j = -1, m = this.length; ++j < m; ) {
+      upgroup = (group = this[j]).update;
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = group.parentNode;
+      for (var i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i));
+          subnode.__data__ = node.__data__;
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  var d3_transitionPrototype = [], d3_transitionNextId = 0, d3_transitionId = 0, d3_transitionDefaultDelay = 0, d3_transitionDefaultDuration = 250, d3_transitionDefaultEase = d3.ease("cubic-in-out"), d3_transitionDelay = d3_transitionDefaultDelay, d3_transitionDuration = d3_transitionDefaultDuration, d3_transitionEase = d3_transitionDefaultEase;
+  d3_transitionPrototype.call = d3_selectionPrototype.call;
+  d3.transition = function(selection) {
+    return arguments.length ? d3_transitionId ? selection.transition() : selection : d3_selectionRoot.transition();
+  };
+  d3.transition.prototype = d3_transitionPrototype;
+  d3_transitionPrototype.select = function(selector) {
+    var subgroups = [], subgroup, subnode, node;
+    if (typeof selector !== "function") selector = d3_selection_selector(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if ((node = group[i]) && (subnode = selector.call(node.node, node.node.__data__, i))) {
+          if ("__data__" in node.node) subnode.__data__ = node.node.__data__;
+          subgroup.push({
+            node: subnode,
+            delay: node.delay,
+            duration: node.duration
+          });
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_transition(subgroups, this.id, this.time).ease(this.ease());
+  };
+  d3_transitionPrototype.selectAll = function(selector) {
+    var subgroups = [], subgroup, subnodes, node;
+    if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subnodes = selector.call(node.node, node.node.__data__, i);
+          subgroups.push(subgroup = []);
+          for (var k = -1, o = subnodes.length; ++k < o; ) {
+            subgroup.push({
+              node: subnodes[k],
+              delay: node.delay,
+              duration: node.duration
+            });
+          }
+        }
+      }
+    }
+    return d3_transition(subgroups, this.id, this.time).ease(this.ease());
+  };
+  d3_transitionPrototype.filter = function(filter) {
+    var subgroups = [], subgroup, group, node;
+    if (typeof filter !== "function") filter = d3_selection_filter(filter);
+    for (var j = 0, m = this.length; j < m; j++) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+        if ((node = group[i]) && filter.call(node.node, node.node.__data__, i)) {
+          subgroup.push(node);
+        }
+      }
+    }
+    return d3_transition(subgroups, this.id, this.time).ease(this.ease());
+  };
+  d3_transitionPrototype.attr = function(name, value) {
+    if (arguments.length < 2) {
+      for (value in name) this.attrTween(value, d3_tweenByName(name[value], value));
+      return this;
+    }
+    return this.attrTween(name, d3_tweenByName(value, name));
+  };
+  d3_transitionPrototype.attrTween = function(nameNS, tween) {
+    function attrTween(d, i) {
+      var f = tween.call(this, d, i, this.getAttribute(name));
+      return f === d3_tweenRemove ? (this.removeAttribute(name), null) : f && function(t) {
+        this.setAttribute(name, f(t));
+      };
+    }
+    function attrTweenNS(d, i) {
+      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
+      return f === d3_tweenRemove ? (this.removeAttributeNS(name.space, name.local), null) : f && function(t) {
+        this.setAttributeNS(name.space, name.local, f(t));
+      };
+    }
+    var name = d3.ns.qualify(nameNS);
+    return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
+  };
+  d3_transitionPrototype.style = function(name, value, priority) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof name !== "string") {
+        if (n < 2) value = "";
+        for (priority in name) this.styleTween(priority, d3_tweenByName(name[priority], priority), value);
+        return this;
+      }
+      priority = "";
+    }
+    return this.styleTween(name, d3_tweenByName(value, name), priority);
+  };
+  d3_transitionPrototype.styleTween = function(name, tween, priority) {
+    if (arguments.length < 3) priority = "";
+    return this.tween("style." + name, function(d, i) {
+      var f = tween.call(this, d, i, window.getComputedStyle(this, null).getPropertyValue(name));
+      return f === d3_tweenRemove ? (this.style.removeProperty(name), null) : f && function(t) {
+        this.style.setProperty(name, f(t), priority);
+      };
+    });
+  };
+  d3_transitionPrototype.text = function(value) {
+    return this.tween("text", function(d, i) {
+      this.textContent = typeof value === "function" ? value.call(this, d, i) : value;
+    });
+  };
+  d3_transitionPrototype.remove = function() {
+    return this.each("end.transition", function() {
+      var p;
+      if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this);
+    });
+  };
+  d3_transitionPrototype.delay = function(value) {
+    return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+      node.delay = value.call(node = node.node, node.__data__, i, j) | 0;
+    } : (value = value | 0, function(node) {
+      node.delay = value;
+    }));
+  };
+  d3_transitionPrototype.duration = function(value) {
+    return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+      node.duration = Math.max(1, value.call(node = node.node, node.__data__, i, j) | 0);
+    } : (value = Math.max(1, value | 0), function(node) {
+      node.duration = value;
+    }));
+  };
+  d3_transitionPrototype.transition = function() {
+    return this.select(d3_this);
+  };
+  d3.tween = function(b, interpolate) {
+    function tweenFunction(d, i, a) {
+      var v = b.call(this, d, i);
+      return v == null ? a != "" && d3_tweenRemove : a != v && interpolate(a, v);
+    }
+    function tweenString(d, i, a) {
+      return a != b && interpolate(a, b);
+    }
+    return typeof b === "function" ? tweenFunction : b == null ? d3_tweenNull : (b += "", tweenString);
+  };
+  var d3_tweenRemove = {};
+  var d3_timer_queue = null, d3_timer_interval, d3_timer_timeout;
+  d3.timer = function(callback, delay, then) {
+    var found = false, t0, t1 = d3_timer_queue;
+    if (arguments.length < 3) {
+      if (arguments.length < 2) delay = 0; else if (!isFinite(delay)) return;
+      then = Date.now();
+    }
+    while (t1) {
+      if (t1.callback === callback) {
+        t1.then = then;
+        t1.delay = delay;
+        found = true;
+        break;
+      }
+      t0 = t1;
+      t1 = t1.next;
+    }
+    if (!found) d3_timer_queue = {
+      callback: callback,
+      then: then,
+      delay: delay,
+      next: d3_timer_queue
+    };
+    if (!d3_timer_interval) {
+      d3_timer_timeout = clearTimeout(d3_timer_timeout);
+      d3_timer_interval = 1;
+      d3_timer_frame(d3_timer_step);
+    }
+  };
+  d3.timer.flush = function() {
+    var elapsed, now = Date.now(), t1 = d3_timer_queue;
+    while (t1) {
+      elapsed = now - t1.then;
+      if (!t1.delay) t1.flush = t1.callback(elapsed);
+      t1 = t1.next;
+    }
+    d3_timer_flush();
+  };
+  var d3_timer_frame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) {
+    setTimeout(callback, 17);
+  };
+  d3.mouse = function(container) {
+    return d3_mousePoint(container, d3_eventSource());
+  };
+  var d3_mouse_bug44083 = /WebKit/.test(navigator.userAgent) ? -1 : 0;
+  d3.touches = function(container, touches) {
+    if (arguments.length < 2) touches = d3_eventSource().touches;
+    return touches ? d3_array(touches).map(function(touch) {
+      var point = d3_mousePoint(container, touch);
+      point.identifier = touch.identifier;
+      return point;
+    }) : [];
+  };
+  d3.scale = {};
+  d3.scale.linear = function() {
+    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3.interpolate, false);
+  };
+  d3.scale.log = function() {
+    return d3_scale_log(d3.scale.linear(), d3_scale_logp);
+  };
+  var d3_scale_logFormat = d3.format(".0e");
+  d3_scale_logp.pow = function(x) {
+    return Math.pow(10, x);
+  };
+  d3_scale_logn.pow = function(x) {
+    return -Math.pow(10, -x);
+  };
+  d3.scale.pow = function() {
+    return d3_scale_pow(d3.scale.linear(), 1);
+  };
+  d3.scale.sqrt = function() {
+    return d3.scale.pow().exponent(.5);
+  };
+  d3.scale.ordinal = function() {
+    return d3_scale_ordinal([], {
+      t: "range",
+      a: [ [] ]
+    });
+  };
+  d3.scale.category10 = function() {
+    return d3.scale.ordinal().range(d3_category10);
+  };
+  d3.scale.category20 = function() {
+    return d3.scale.ordinal().range(d3_category20);
+  };
+  d3.scale.category20b = function() {
+    return d3.scale.ordinal().range(d3_category20b);
+  };
+  d3.scale.category20c = function() {
+    return d3.scale.ordinal().range(d3_category20c);
+  };
+  var d3_category10 = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" ];
+  var d3_category20 = [ "#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ];
+  var d3_category20b = [ "#393b79", "#5254a3", "#6b6ecf", "#9c9ede", "#637939", "#8ca252", "#b5cf6b", "#cedb9c", "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", "#843c39", "#ad494a", "#d6616b", "#e7969c", "#7b4173", "#a55194", "#ce6dbd", "#de9ed6" ];
+  var d3_category20c = [ "#3182bd", "#6baed6", "#9ecae1", "#c6dbef", "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", "#31a354", "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd", "#d9d9d9" ];
+  d3.scale.quantile = function() {
+    return d3_scale_quantile([], []);
+  };
+  d3.scale.quantize = function() {
+    return d3_scale_quantize(0, 1, [ 0, 1 ]);
+  };
+  d3.scale.threshold = function() {
+    return d3_scale_threshold([ .5 ], [ 0, 1 ]);
+  };
+  d3.scale.identity = function() {
+    return d3_scale_identity([ 0, 1 ]);
+  };
+  d3.svg = {};
+  d3.svg.arc = function() {
+    function arc() {
+      var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, a0 = a1, a1 = da), a1 - a0), df = da < Math.PI ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1);
+      return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z";
+    }
+    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
+    arc.innerRadius = function(v) {
+      if (!arguments.length) return innerRadius;
+      innerRadius = d3_functor(v);
+      return arc;
+    };
+    arc.outerRadius = function(v) {
+      if (!arguments.length) return outerRadius;
+      outerRadius = d3_functor(v);
+      return arc;
+    };
+    arc.startAngle = function(v) {
+      if (!arguments.length) return startAngle;
+      startAngle = d3_functor(v);
+      return arc;
+    };
+    arc.endAngle = function(v) {
+      if (!arguments.length) return endAngle;
+      endAngle = d3_functor(v);
+      return arc;
+    };
+    arc.centroid = function() {
+      var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
+      return [ Math.cos(a) * r, Math.sin(a) * r ];
+    };
+    return arc;
+  };
+  var d3_svg_arcOffset = -Math.PI / 2, d3_svg_arcMax = 2 * Math.PI - 1e-6;
+  d3.svg.line = function() {
+    return d3_svg_line(d3_identity);
+  };
+  var d3_svg_lineInterpolators = d3.map({
+    linear: d3_svg_lineLinear,
+    "linear-closed": d3_svg_lineLinearClosed,
+    "step-before": d3_svg_lineStepBefore,
+    "step-after": d3_svg_lineStepAfter,
+    basis: d3_svg_lineBasis,
+    "basis-open": d3_svg_lineBasisOpen,
+    "basis-closed": d3_svg_lineBasisClosed,
+    bundle: d3_svg_lineBundle,
+    cardinal: d3_svg_lineCardinal,
+    "cardinal-open": d3_svg_lineCardinalOpen,
+    "cardinal-closed": d3_svg_lineCardinalClosed,
+    monotone: d3_svg_lineMonotone
+  });
+  d3_svg_lineInterpolators.forEach(function(key, value) {
+    value.key = key;
+    value.closed = /-closed$/.test(key);
+  });
+  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
+  d3.svg.line.radial = function() {
+    var line = d3_svg_line(d3_svg_lineRadial);
+    line.radius = line.x, delete line.x;
+    line.angle = line.y, delete line.y;
+    return line;
+  };
+  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
+  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
+  d3.svg.area = function() {
+    return d3_svg_area(d3_identity);
+  };
+  d3.svg.area.radial = function() {
+    var area = d3_svg_area(d3_svg_lineRadial);
+    area.radius = area.x, delete area.x;
+    area.innerRadius = area.x0, delete area.x0;
+    area.outerRadius = area.x1, delete area.x1;
+    area.angle = area.y, delete area.y;
+    area.startAngle = area.y0, delete area.y0;
+    area.endAngle = area.y1, delete area.y1;
+    return area;
+  };
+  d3.svg.chord = function() {
+    function chord(d, i) {
+      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
+      return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
+    }
+    function subgroup(self, f, d, i) {
+      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
+      return {
+        r: r,
+        a0: a0,
+        a1: a1,
+        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
+        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
+      };
+    }
+    function equals(a, b) {
+      return a.a0 == b.a0 && a.a1 == b.a1;
+    }
+    function arc(r, p, a) {
+      return "A" + r + "," + r + " 0 " + +(a > Math.PI) + ",1 " + p;
+    }
+    function curve(r0, p0, r1, p1) {
+      return "Q 0,0 " + p1;
+    }
+    var source = d3_svg_chordSource, target = d3_svg_chordTarget, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
+    chord.radius = function(v) {
+      if (!arguments.length) return radius;
+      radius = d3_functor(v);
+      return chord;
+    };
+    chord.source = function(v) {
+      if (!arguments.length) return source;
+      source = d3_functor(v);
+      return chord;
+    };
+    chord.target = function(v) {
+      if (!arguments.length) return target;
+      target = d3_functor(v);
+      return chord;
+    };
+    chord.startAngle = function(v) {
+      if (!arguments.length) return startAngle;
+      startAngle = d3_functor(v);
+      return chord;
+    };
+    chord.endAngle = function(v) {
+      if (!arguments.length) return endAngle;
+      endAngle = d3_functor(v);
+      return chord;
+    };
+    return chord;
+  };
+  d3.svg.diagonal = function() {
+    function diagonal(d, i) {
+      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
+        x: p0.x,
+        y: m
+      }, {
+        x: p3.x,
+        y: m
+      }, p3 ];
+      p = p.map(projection);
+      return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
+    }
+    var source = d3_svg_chordSource, target = d3_svg_chordTarget, projection = d3_svg_diagonalProjection;
+    diagonal.source = function(x) {
+      if (!arguments.length) return source;
+      source = d3_functor(x);
+      return diagonal;
+    };
+    diagonal.target = function(x) {
+      if (!arguments.length) return target;
+      target = d3_functor(x);
+      return diagonal;
+    };
+    diagonal.projection = function(x) {
+      if (!arguments.length) return projection;
+      projection = x;
+      return diagonal;
+    };
+    return diagonal;
+  };
+  d3.svg.diagonal.radial = function() {
+    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
+    diagonal.projection = function(x) {
+      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
+    };
+    return diagonal;
+  };
+  d3.svg.mouse = d3.mouse;
+  d3.svg.touches = d3.touches;
+  d3.svg.symbol = function() {
+    function symbol(d, i) {
+      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
+    }
+    var type = d3_svg_symbolType, size = d3_svg_symbolSize;
+    symbol.type = function(x) {
+      if (!arguments.length) return type;
+      type = d3_functor(x);
+      return symbol;
+    };
+    symbol.size = function(x) {
+      if (!arguments.length) return size;
+      size = d3_functor(x);
+      return symbol;
+    };
+    return symbol;
+  };
+  var d3_svg_symbols = d3.map({
+    circle: d3_svg_symbolCircle,
+    cross: function(size) {
+      var r = Math.sqrt(size / 5) / 2;
+      return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
+    },
+    diamond: function(size) {
+      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
+      return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
+    },
+    square: function(size) {
+      var r = Math.sqrt(size) / 2;
+      return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
+    },
+    "triangle-down": function(size) {
+      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+      return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
+    },
+    "triangle-up": function(size) {
+      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+      return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
+    }
+  });
+  d3.svg.symbolTypes = d3_svg_symbols.keys();
+  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * Math.PI / 180);
+  d3.svg.axis = function() {
+    function axis(g) {
+      g.each(function() {
+        var g = d3.select(this);
+        var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String : tickFormat_;
+        var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick = g.selectAll(".minor").data(subticks, String), subtickEnter = subtick.enter().insert("line", "g").attr("class", "tick minor").style("opacity", 1e-6), subtickExit = d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate = d3.transition(subtick).style("opacity", 1);
+        var tick = g.selectAll("g").data(ticks, String), tickEnter = tick.enter().insert("g", "path").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
+        var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([ 0 ]), pathEnter = path.enter().append("path").attr("class", "domain"), pathUpdate = d3.transition(path);
+        var scale1 = scale.copy(), scale0 = this.__chart__ || scale1;
+        this.__chart__ = scale1;
+        tickEnter.append("line").attr("class", "tick");
+        tickEnter.append("text");
+        var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
+        switch (orient) {
+         case "bottom":
+          {
+            tickTransform = d3_svg_axisX;
+            subtickEnter.attr("y2", tickMinorSize);
+            subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
+            lineEnter.attr("y2", tickMajorSize);
+            textEnter.attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+            lineUpdate.attr("x2", 0).attr("y2", tickMajorSize);
+            textUpdate.attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+            text.attr("dy", ".71em").attr("text-anchor", "middle");
+            pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
+            break;
+          }
+         case "top":
+          {
+            tickTransform = d3_svg_axisX;
+            subtickEnter.attr("y2", -tickMinorSize);
+            subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
+            lineEnter.attr("y2", -tickMajorSize);
+            textEnter.attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+            lineUpdate.attr("x2", 0).attr("y2", -tickMajorSize);
+            textUpdate.attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+            text.attr("dy", "0em").attr("text-anchor", "middle");
+            pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
+            break;
+          }
+         case "left":
+          {
+            tickTransform = d3_svg_axisY;
+            subtickEnter.attr("x2", -tickMinorSize);
+            subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
+            lineEnter.attr("x2", -tickMajorSize);
+            textEnter.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
+            lineUpdate.attr("x2", -tickMajorSize).attr("y2", 0);
+            textUpdate.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0);
+            text.attr("dy", ".32em").attr("text-anchor", "end");
+            pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
+            break;
+          }
+         case "right":
+          {
+            tickTransform = d3_svg_axisY;
+            subtickEnter.attr("x2", tickMinorSize);
+            subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
+            lineEnter.attr("x2", tickMajorSize);
+            textEnter.attr("x", Math.max(tickMajorSize, 0) + tickPadding);
+            lineUpdate.attr("x2", tickMajorSize).attr("y2", 0);
+            textUpdate.attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0);
+            text.attr("dy", ".32em").attr("text-anchor", "start");
+            pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
+            break;
+          }
+        }
+        if (scale.ticks) {
+          tickEnter.call(tickTransform, scale0);
+          tickUpdate.call(tickTransform, scale1);
+          tickExit.call(tickTransform, scale1);
+          subtickEnter.call(tickTransform, scale0);
+          subtickUpdate.call(tickTransform, scale1);
+          subtickExit.call(tickTransform, scale1);
+        } else {
+          var dx = scale1.rangeBand() / 2, x = function(d) {
+            return scale1(d) + dx;
+          };
+          tickEnter.call(tickTransform, x);
+          tickUpdate.call(tickTransform, x);
+        }
+      });
+    }
+    var scale = d3.scale.linear(), orient = "bottom", tickMajorSize = 6, tickMinorSize = 6, tickEndSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_, tickSubdivide = 0;
+    axis.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = x;
+      return axis;
+    };
+    axis.orient = function(x) {
+      if (!arguments.length) return orient;
+      orient = x;
+      return axis;
+    };
+    axis.ticks = function() {
+      if (!arguments.length) return tickArguments_;
+      tickArguments_ = arguments;
+      return axis;
+    };
+    axis.tickValues = function(x) {
+      if (!arguments.length) return tickValues;
+      tickValues = x;
+      return axis;
+    };
+    axis.tickFormat = function(x) {
+      if (!arguments.length) return tickFormat_;
+      tickFormat_ = x;
+      return axis;
+    };
+    axis.tickSize = function(x, y, z) {
+      if (!arguments.length) return tickMajorSize;
+      var n = arguments.length - 1;
+      tickMajorSize = +x;
+      tickMinorSize = n > 1 ? +y : tickMajorSize;
+      tickEndSize = n > 0 ? +arguments[n] : tickMajorSize;
+      return axis;
+    };
+    axis.tickPadding = function(x) {
+      if (!arguments.length) return tickPadding;
+      tickPadding = +x;
+      return axis;
+    };
+    axis.tickSubdivide = function(x) {
+      if (!arguments.length) return tickSubdivide;
+      tickSubdivide = +x;
+      return axis;
+    };
+    return axis;
+  };
+  d3.svg.brush = function() {
+    function brush(g) {
+      g.each(function() {
+        var g = d3.select(this), bg = g.selectAll(".background").data([ 0 ]), fg = g.selectAll(".extent").data([ 0 ]), tz = g.selectAll(".resize").data(resizes, String), e;
+        g.style("pointer-events", "all").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
+        bg.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
+        fg.enter().append("rect").attr("class", "extent").style("cursor", "move");
+        tz.enter().append("g").attr("class", function(d) {
+          return "resize " + d;
+        }).style("cursor", function(d) {
+          return d3_svg_brushCursor[d];
+        }).append("rect").attr("x", function(d) {
+          return /[ew]$/.test(d) ? -3 : null;
+        }).attr("y", function(d) {
+          return /^[ns]/.test(d) ? -3 : null;
+        }).attr("width", 6).attr("height", 6).style("visibility", "hidden");
+        tz.style("display", brush.empty() ? "none" : null);
+        tz.exit().remove();
+        if (x) {
+          e = d3_scaleRange(x);
+          bg.attr("x", e[0]).attr("width", e[1] - e[0]);
+          redrawX(g);
+        }
+        if (y) {
+          e = d3_scaleRange(y);
+          bg.attr("y", e[0]).attr("height", e[1] - e[0]);
+          redrawY(g);
+        }
+        redraw(g);
+      });
+    }
+    function redraw(g) {
+      g.selectAll(".resize").attr("transform", function(d) {
+        return "translate(" + extent[+/e$/.test(d)][0] + "," + extent[+/^s/.test(d)][1] + ")";
+      });
+    }
+    function redrawX(g) {
+      g.select(".extent").attr("x", extent[0][0]);
+      g.selectAll(".extent,.n>rect,.s>rect").attr("width", extent[1][0] - extent[0][0]);
+    }
+    function redrawY(g) {
+      g.select(".extent").attr("y", extent[0][1]);
+      g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]);
+    }
+    function brushstart() {
+      function mouse() {
+        var touches = d3.event.changedTouches;
+        return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
+      }
+      function keydown() {
+        if (d3.event.keyCode == 32) {
+          if (!dragging) {
+            center = null;
+            origin[0] -= extent[1][0];
+            origin[1] -= extent[1][1];
+            dragging = 2;
+          }
+          d3_eventCancel();
+        }
+      }
+      function keyup() {
+        if (d3.event.keyCode == 32 && dragging == 2) {
+          origin[0] += extent[1][0];
+          origin[1] += extent[1][1];
+          dragging = 0;
+          d3_eventCancel();
+        }
+      }
+      function brushmove() {
+        var point = mouse(), moved = false;
+        if (offset) {
+          point[0] += offset[0];
+          point[1] += offset[1];
+        }
+        if (!dragging) {
+          if (d3.event.altKey) {
+            if (!center) center = [ (extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2 ];
+            origin[0] = extent[+(point[0] < center[0])][0];
+            origin[1] = extent[+(point[1] < center[1])][1];
+          } else center = null;
+        }
+        if (resizingX && move1(point, x, 0)) {
+          redrawX(g);
+          moved = true;
+        }
+        if (resizingY && move1(point, y, 1)) {
+          redrawY(g);
+          moved = true;
+        }
+        if (moved) {
+          redraw(g);
+          event_({
+            type: "brush",
+            mode: dragging ? "move" : "resize"
+          });
+        }
+      }
+      function move1(point, scale, i) {
+        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], size = extent[1][i] - extent[0][i], min, max;
+        if (dragging) {
+          r0 -= position;
+          r1 -= size + position;
+        }
+        min = Math.max(r0, Math.min(r1, point[i]));
+        if (dragging) {
+          max = (min += position) + size;
+        } else {
+          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
+          if (position < min) {
+            max = min;
+            min = position;
+          } else {
+            max = position;
+          }
+        }
+        if (extent[0][i] !== min || extent[1][i] !== max) {
+          extentDomain = null;
+          extent[0][i] = min;
+          extent[1][i] = max;
+          return true;
+        }
+      }
+      function brushend() {
+        brushmove();
+        g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
+        d3.select("body").style("cursor", null);
+        w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
+        event_({
+          type: "brushend"
+        });
+        d3_eventCancel();
+      }
+      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), center, origin = mouse(), offset;
+      var w = d3.select(window).on("mousemove.brush", brushmove).on("mouseup.brush", brushend).on("touchmove.brush", brushmove).on("touchend.brush", brushend).on("keydown.brush", keydown).on("keyup.brush", keyup);
+      if (dragging) {
+        origin[0] = extent[0][0] - origin[0];
+        origin[1] = extent[0][1] - origin[1];
+      } else if (resizing) {
+        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
+        offset = [ extent[1 - ex][0] - origin[0], extent[1 - ey][1] - origin[1] ];
+        origin[0] = extent[ex][0];
+        origin[1] = extent[ey][1];
+      } else if (d3.event.altKey) center = origin.slice();
+      g.style("pointer-events", "none").selectAll(".resize").style("display", null);
+      d3.select("body").style("cursor", eventTarget.style("cursor"));
+      event_({
+        type: "brushstart"
+      });
+      brushmove();
+      d3_eventCancel();
+    }
+    var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [ 0, 0 ], [ 0, 0 ] ], extentDomain;
+    brush.x = function(z) {
+      if (!arguments.length) return x;
+      x = z;
+      resizes = d3_svg_brushResizes[!x << 1 | !y];
+      return brush;
+    };
+    brush.y = function(z) {
+      if (!arguments.length) return y;
+      y = z;
+      resizes = d3_svg_brushResizes[!x << 1 | !y];
+      return brush;
+    };
+    brush.extent = function(z) {
+      var x0, x1, y0, y1, t;
+      if (!arguments.length) {
+        z = extentDomain || extent;
+        if (x) {
+          x0 = z[0][0], x1 = z[1][0];
+          if (!extentDomain) {
+            x0 = extent[0][0], x1 = extent[1][0];
+            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
+            if (x1 < x0) t = x0, x0 = x1, x1 = t;
+          }
+        }
+        if (y) {
+          y0 = z[0][1], y1 = z[1][1];
+          if (!extentDomain) {
+            y0 = extent[0][1], y1 = extent[1][1];
+            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
+            if (y1 < y0) t = y0, y0 = y1, y1 = t;
+          }
+        }
+        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
+      }
+      extentDomain = [ [ 0, 0 ], [ 0, 0 ] ];
+      if (x) {
+        x0 = z[0], x1 = z[1];
+        if (y) x0 = x0[0], x1 = x1[0];
+        extentDomain[0][0] = x0, extentDomain[1][0] = x1;
+        if (x.invert) x0 = x(x0), x1 = x(x1);
+        if (x1 < x0) t = x0, x0 = x1, x1 = t;
+        extent[0][0] = x0 | 0, extent[1][0] = x1 | 0;
+      }
+      if (y) {
+        y0 = z[0], y1 = z[1];
+        if (x) y0 = y0[1], y1 = y1[1];
+        extentDomain[0][1] = y0, extentDomain[1][1] = y1;
+        if (y.invert) y0 = y(y0), y1 = y(y1);
+        if (y1 < y0) t = y0, y0 = y1, y1 = t;
+        extent[0][1] = y0 | 0, extent[1][1] = y1 | 0;
+      }
+      return brush;
+    };
+    brush.clear = function() {
+      extentDomain = null;
+      extent[0][0] = extent[0][1] = extent[1][0] = extent[1][1] = 0;
+      return brush;
+    };
+    brush.empty = function() {
+      return x && extent[0][0] === extent[1][0] || y && extent[0][1] === extent[1][1];
+    };
+    return d3.rebind(brush, event, "on");
+  };
+  var d3_svg_brushCursor = {
+    n: "ns-resize",
+    e: "ew-resize",
+    s: "ns-resize",
+    w: "ew-resize",
+    nw: "nwse-resize",
+    ne: "nesw-resize",
+    se: "nwse-resize",
+    sw: "nesw-resize"
+  };
+  var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
+  d3.behavior = {};
+  d3.behavior.drag = function() {
+    function drag() {
+      this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown);
+    }
+    function mousedown() {
+      function point() {
+        var p = target.parentNode;
+        return touchId ? d3.touches(p).filter(function(p) {
+          return p.identifier === touchId;
+        })[0] : d3.mouse(p);
+      }
+      function dragmove() {
+        if (!target.parentNode) return dragend();
+        var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
+        moved |= dx | dy;
+        origin_ = p;
+        d3_eventCancel();
+        event_({
+          type: "drag",
+          x: p[0] + offset[0],
+          y: p[1] + offset[1],
+          dx: dx,
+          dy: dy
+        });
+      }
+      function dragend() {
+        event_({
+          type: "dragend"
+        });
+        if (moved) {
+          d3_eventCancel();
+          if (d3.event.target === eventTarget) w.on("click.drag", click, true);
+        }
+        w.on(touchId ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId ? "touchend.drag-" + touchId : "mouseup.drag", null);
+      }
+      function click() {
+        d3_eventCancel();
+        w.on("click.drag", null);
+      }
+      var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches && d3.event.changedTouches[0].identifier, offset, origin_ = point(), moved = 0;
+      var w = d3.select(window).on(touchId ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true);
+      if (origin) {
+        offset = origin.apply(target, arguments);
+        offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
+      } else {
+        offset = [ 0, 0 ];
+      }
+      if (!touchId) d3_eventCancel();
+      event_({
+        type: "dragstart"
+      });
+    }
+    var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null;
+    drag.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = x;
+      return drag;
+    };
+    return d3.rebind(drag, event, "on");
+  };
+  d3.behavior.zoom = function() {
+    function zoom() {
+      this.on("mousedown.zoom", mousedown).on("mousewheel.zoom", mousewheel).on("mousemove.zoom", mousemove).on("DOMMouseScroll.zoom", mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom", touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom", touchstart);
+    }
+    function location(p) {
+      return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ];
+    }
+    function point(l) {
+      return [ l[0] * scale + translate[0], l[1] * scale + translate[1] ];
+    }
+    function scaleTo(s) {
+      scale = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
+    }
+    function translateTo(p, l) {
+      l = point(l);
+      translate[0] += p[0] - l[0];
+      translate[1] += p[1] - l[1];
+    }
+    function dispatch(event) {
+      if (x1) x1.domain(x0.range().map(function(x) {
+        return (x - translate[0]) / scale;
+      }).map(x0.invert));
+      if (y1) y1.domain(y0.range().map(function(y) {
+        return (y - translate[1]) / scale;
+      }).map(y0.invert));
+      d3.event.preventDefault();
+      event({
+        type: "zoom",
+        scale: scale,
+        translate: translate
+      });
+    }
+    function mousedown() {
+      function mousemove() {
+        moved = 1;
+        translateTo(d3.mouse(target), l);
+        dispatch(event_);
+      }
+      function mouseup() {
+        if (moved) d3_eventCancel();
+        w.on("mousemove.zoom", null).on("mouseup.zoom", null);
+        if (moved && d3.event.target === eventTarget) w.on("click.zoom", click, true);
+      }
+      function click() {
+        d3_eventCancel();
+        w.on("click.zoom", null);
+      }
+      var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target));
+      window.focus();
+      d3_eventCancel();
+    }
+    function mousewheel() {
+      if (!translate0) translate0 = location(d3.mouse(this));
+      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * scale);
+      translateTo(d3.mouse(this), translate0);
+      dispatch(event.of(this, arguments));
+    }
+    function mousemove() {
+      translate0 = null;
+    }
+    function dblclick() {
+      var p = d3.mouse(this), l = location(p);
+      scaleTo(d3.event.shiftKey ? scale / 2 : scale * 2);
+      translateTo(p, l);
+      dispatch(event.of(this, arguments));
+    }
+    function touchstart() {
+      var touches = d3.touches(this), now = Date.now();
+      scale0 = scale;
+      translate0 = {};
+      touches.forEach(function(t) {
+        translate0[t.identifier] = location(t);
+      });
+      d3_eventCancel();
+      if (touches.length === 1) {
+        if (now - touchtime < 500) {
+          var p = touches[0], l = location(touches[0]);
+          scaleTo(scale * 2);
+          translateTo(p, l);
+          dispatch(event.of(this, arguments));
+        }
+        touchtime = now;
+      }
+    }
+    function touchmove() {
+      var touches = d3.touches(this), p0 = touches[0], l0 = translate0[p0.identifier];
+      if (p1 = touches[1]) {
+        var p1, l1 = translate0[p1.identifier];
+        p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
+        l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
+        scaleTo(d3.event.scale * scale0);
+      }
+      translateTo(p0, l0);
+      touchtime = null;
+      dispatch(event.of(this, arguments));
+    }
+    var translate = [ 0, 0 ], translate0, scale = 1, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime;
+    zoom.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = x.map(Number);
+      return zoom;
+    };
+    zoom.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return zoom;
+    };
+    zoom.scaleExtent = function(x) {
+      if (!arguments.length) return scaleExtent;
+      scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number);
+      return zoom;
+    };
+    zoom.x = function(z) {
+      if (!arguments.length) return x1;
+      x1 = z;
+      x0 = z.copy();
+      return zoom;
+    };
+    zoom.y = function(z) {
+      if (!arguments.length) return y1;
+      y1 = z;
+      y0 = z.copy();
+      return zoom;
+    };
+    return d3.rebind(zoom, event, "on");
+  };
+  var d3_behavior_zoomDiv, d3_behavior_zoomInfinity = [ 0, Infinity ];
+  d3.layout = {};
+  d3.layout.bundle = function() {
+    return function(links) {
+      var paths = [], i = -1, n = links.length;
+      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
+      return paths;
+    };
+  };
+  d3.layout.chord = function() {
+    function relayout() {
+      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
+      chords = [];
+      groups = [];
+      k = 0, i = -1;
+      while (++i < n) {
+        x = 0, j = -1;
+        while (++j < n) {
+          x += matrix[i][j];
+        }
+        groupSums.push(x);
+        subgroupIndex.push(d3.range(n));
+        k += x;
+      }
+      if (sortGroups) {
+        groupIndex.sort(function(a, b) {
+          return sortGroups(groupSums[a], groupSums[b]);
+        });
+      }
+      if (sortSubgroups) {
+        subgroupIndex.forEach(function(d, i) {
+          d.sort(function(a, b) {
+            return sortSubgroups(matrix[i][a], matrix[i][b]);
+          });
+        });
+      }
+      k = (2 * Math.PI - padding * n) / k;
+      x = 0, i = -1;
+      while (++i < n) {
+        x0 = x, j = -1;
+        while (++j < n) {
+          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
+          subgroups[di + "-" + dj] = {
+            index: di,
+            subindex: dj,
+            startAngle: a0,
+            endAngle: a1,
+            value: v
+          };
+        }
+        groups[di] = {
+          index: di,
+          startAngle: x0,
+          endAngle: x,
+          value: (x - x0) / k
+        };
+        x += padding;
+      }
+      i = -1;
+      while (++i < n) {
+        j = i - 1;
+        while (++j < n) {
+          var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
+          if (source.value || target.value) {
+            chords.push(source.value < target.value ? {
+              source: target,
+              target: source
+            } : {
+              source: source,
+              target: target
+            });
+          }
+        }
+      }
+      if (sortChords) resort();
+    }
+    function resort() {
+      chords.sort(function(a, b) {
+        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
+      });
+    }
+    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
+    chord.matrix = function(x) {
+      if (!arguments.length) return matrix;
+      n = (matrix = x) && matrix.length;
+      chords = groups = null;
+      return chord;
+    };
+    chord.padding = function(x) {
+      if (!arguments.length) return padding;
+      padding = x;
+      chords = groups = null;
+      return chord;
+    };
+    chord.sortGroups = function(x) {
+      if (!arguments.length) return sortGroups;
+      sortGroups = x;
+      chords = groups = null;
+      return chord;
+    };
+    chord.sortSubgroups = function(x) {
+      if (!arguments.length) return sortSubgroups;
+      sortSubgroups = x;
+      chords = null;
+      return chord;
+    };
+    chord.sortChords = function(x) {
+      if (!arguments.length) return sortChords;
+      sortChords = x;
+      if (chords) resort();
+      return chord;
+    };
+    chord.chords = function() {
+      if (!chords) relayout();
+      return chords;
+    };
+    chord.groups = function() {
+      if (!groups) relayout();
+      return groups;
+    };
+    return chord;
+  };
+  d3.layout.force = function() {
+    function repulse(node) {
+      return function(quad, x1, y1, x2, y2) {
+        if (quad.point !== node) {
+          var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy);
+          if ((x2 - x1) * dn < theta) {
+            var k = quad.charge * dn * dn;
+            node.px -= dx * k;
+            node.py -= dy * k;
+            return true;
+          }
+          if (quad.point && isFinite(dn)) {
+            var k = quad.pointCharge * dn * dn;
+            node.px -= dx * k;
+            node.py -= dy * k;
+          }
+        }
+        return !quad.charge;
+      };
+    }
+    function dragmove(d) {
+      d.px = d3.event.x;
+      d.py = d3.event.y;
+      force.resume();
+    }
+    var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, interval, nodes = [], links = [], distances, strengths, charges;
+    force.tick = function() {
+      if ((alpha *= .99) < .005) {
+        event.end({
+          type: "end",
+          alpha: alpha = 0
+        });
+        return true;
+      }
+      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
+      for (i = 0; i < m; ++i) {
+        o = links[i];
+        s = o.source;
+        t = o.target;
+        x = t.x - s.x;
+        y = t.y - s.y;
+        if (l = x * x + y * y) {
+          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
+          x *= l;
+          y *= l;
+          t.x -= x * (k = s.weight / (t.weight + s.weight));
+          t.y -= y * k;
+          s.x += x * (k = 1 - k);
+          s.y += y * k;
+        }
+      }
+      if (k = alpha * gravity) {
+        x = size[0] / 2;
+        y = size[1] / 2;
+        i = -1;
+        if (k) while (++i < n) {
+          o = nodes[i];
+          o.x += (x - o.x) * k;
+          o.y += (y - o.y) * k;
+        }
+      }
+      if (charge) {
+        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
+        i = -1;
+        while (++i < n) {
+          if (!(o = nodes[i]).fixed) {
+            q.visit(repulse(o));
+          }
+        }
+      }
+      i = -1;
+      while (++i < n) {
+        o = nodes[i];
+        if (o.fixed) {
+          o.x = o.px;
+          o.y = o.py;
+        } else {
+          o.x -= (o.px - (o.px = o.x)) * friction;
+          o.y -= (o.py - (o.py = o.y)) * friction;
+        }
+      }
+      event.tick({
+        type: "tick",
+        alpha: alpha
+      });
+    };
+    force.nodes = function(x) {
+      if (!arguments.length) return nodes;
+      nodes = x;
+      return force;
+    };
+    force.links = function(x) {
+      if (!arguments.length) return links;
+      links = x;
+      return force;
+    };
+    force.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return force;
+    };
+    force.linkDistance = function(x) {
+      if (!arguments.length) return linkDistance;
+      linkDistance = d3_functor(x);
+      return force;
+    };
+    force.distance = force.linkDistance;
+    force.linkStrength = function(x) {
+      if (!arguments.length) return linkStrength;
+      linkStrength = d3_functor(x);
+      return force;
+    };
+    force.friction = function(x) {
+      if (!arguments.length) return friction;
+      friction = x;
+      return force;
+    };
+    force.charge = function(x) {
+      if (!arguments.length) return charge;
+      charge = typeof x === "function" ? x : +x;
+      return force;
+    };
+    force.gravity = function(x) {
+      if (!arguments.length) return gravity;
+      gravity = x;
+      return force;
+    };
+    force.theta = function(x) {
+      if (!arguments.length) return theta;
+      theta = x;
+      return force;
+    };
+    force.alpha = function(x) {
+      if (!arguments.length) return alpha;
+      if (alpha) {
+        if (x > 0) alpha = x; else alpha = 0;
+      } else if (x > 0) {
+        event.start({
+          type: "start",
+          alpha: alpha = x
+        });
+        d3.timer(force.tick);
+      }
+      return force;
+    };
+    force.start = function() {
+      function position(dimension, size) {
+        var neighbors = neighbor(i), j = -1, m = neighbors.length, x;
+        while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x;
+        return Math.random() * size;
+      }
+      function neighbor() {
+        if (!neighbors) {
+          neighbors = [];
+          for (j = 0; j < n; ++j) {
+            neighbors[j] = [];
+          }
+          for (j = 0; j < m; ++j) {
+            var o = links[j];
+            neighbors[o.source.index].push(o.target);
+            neighbors[o.target.index].push(o.source);
+          }
+        }
+        return neighbors[i];
+      }
+      var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
+      for (i = 0; i < n; ++i) {
+        (o = nodes[i]).index = i;
+        o.weight = 0;
+      }
+      distances = [];
+      strengths = [];
+      for (i = 0; i < m; ++i) {
+        o = links[i];
+        if (typeof o.source == "number") o.source = nodes[o.source];
+        if (typeof o.target == "number") o.target = nodes[o.target];
+        distances[i] = linkDistance.call(this, o, i);
+        strengths[i] = linkStrength.call(this, o, i);
+        ++o.source.weight;
+        ++o.target.weight;
+      }
+      for (i = 0; i < n; ++i) {
+        o = nodes[i];
+        if (isNaN(o.x)) o.x = position("x", w);
+        if (isNaN(o.y)) o.y = position("y", h);
+        if (isNaN(o.px)) o.px = o.x;
+        if (isNaN(o.py)) o.py = o.y;
+      }
+      charges = [];
+      if (typeof charge === "function") {
+        for (i = 0; i < n; ++i) {
+          charges[i] = +charge.call(this, nodes[i], i);
+        }
+      } else {
+        for (i = 0; i < n; ++i) {
+          charges[i] = charge;
+        }
+      }
+      return force.resume();
+    };
+    force.resume = function() {
+      return force.alpha(.1);
+    };
+    force.stop = function() {
+      return force.alpha(0);
+    };
+    force.drag = function() {
+      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart", d3_layout_forceDragstart).on("drag", dragmove).on("dragend", d3_layout_forceDragend);
+      this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
+    };
+    return d3.rebind(force, event, "on");
+  };
+  d3.layout.partition = function() {
+    function position(node, x, dx, dy) {
+      var children = node.children;
+      node.x = x;
+      node.y = node.depth * dy;
+      node.dx = dx;
+      node.dy = dy;
+      if (children && (n = children.length)) {
+        var i = -1, n, c, d;
+        dx = node.value ? dx / node.value : 0;
+        while (++i < n) {
+          position(c = children[i], x, d = c.value * dx, dy);
+          x += d;
+        }
+      }
+    }
+    function depth(node) {
+      var children = node.children, d = 0;
+      if (children && (n = children.length)) {
+        var i = -1, n;
+        while (++i < n) d = Math.max(d, depth(children[i]));
+      }
+      return 1 + d;
+    }
+    function partition(d, i) {
+      var nodes = hierarchy.call(this, d, i);
+      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
+      return nodes;
+    }
+    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
+    partition.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return partition;
+    };
+    return d3_layout_hierarchyRebind(partition, hierarchy);
+  };
+  d3.layout.pie = function() {
+    function pie(data, i) {
+      var values = data.map(function(d, i) {
+        return +value.call(pie, d, i);
+      });
+      var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
+      var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - startAngle) / d3.sum(values);
+      var index = d3.range(data.length);
+      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
+        return values[j] - values[i];
+      } : function(i, j) {
+        return sort(data[i], data[j]);
+      });
+      var arcs = [];
+      index.forEach(function(i) {
+        var d;
+        arcs[i] = {
+          data: data[i],
+          value: d = values[i],
+          startAngle: a,
+          endAngle: a += d * k
+        };
+      });
+      return arcs;
+    }
+    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = 2 * Math.PI;
+    pie.value = function(x) {
+      if (!arguments.length) return value;
+      value = x;
+      return pie;
+    };
+    pie.sort = function(x) {
+      if (!arguments.length) return sort;
+      sort = x;
+      return pie;
+    };
+    pie.startAngle = function(x) {
+      if (!arguments.length) return startAngle;
+      startAngle = x;
+      return pie;
+    };
+    pie.endAngle = function(x) {
+      if (!arguments.length) return endAngle;
+      endAngle = x;
+      return pie;
+    };
+    return pie;
+  };
+  var d3_layout_pieSortByValue = {};
+  d3.layout.stack = function() {
+    function stack(data, index) {
+      var series = data.map(function(d, i) {
+        return values.call(stack, d, i);
+      });
+      var points = series.map(function(d, i) {
+        return d.map(function(v, i) {
+          return [ x.call(stack, v, i), y.call(stack, v, i) ];
+        });
+      });
+      var orders = order.call(stack, points, index);
+      series = d3.permute(series, orders);
+      points = d3.permute(points, orders);
+      var offsets = offset.call(stack, points, index);
+      var n = series.length, m = series[0].length, i, j, o;
+      for (j = 0; j < m; ++j) {
+        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
+        for (i = 1; i < n; ++i) {
+          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
+        }
+      }
+      return data;
+    }
+    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
+    stack.values = function(x) {
+      if (!arguments.length) return values;
+      values = x;
+      return stack;
+    };
+    stack.order = function(x) {
+      if (!arguments.length) return order;
+      order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
+      return stack;
+    };
+    stack.offset = function(x) {
+      if (!arguments.length) return offset;
+      offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
+      return stack;
+    };
+    stack.x = function(z) {
+      if (!arguments.length) return x;
+      x = z;
+      return stack;
+    };
+    stack.y = function(z) {
+      if (!arguments.length) return y;
+      y = z;
+      return stack;
+    };
+    stack.out = function(z) {
+      if (!arguments.length) return out;
+      out = z;
+      return stack;
+    };
+    return stack;
+  };
+  var d3_layout_stackOrders = d3.map({
+    "inside-out": function(data) {
+      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
+        return max[a] - max[b];
+      }), top = 0, bottom = 0, tops = [], bottoms = [];
+      for (i = 0; i < n; ++i) {
+        j = index[i];
+        if (top < bottom) {
+          top += sums[j];
+          tops.push(j);
+        } else {
+          bottom += sums[j];
+          bottoms.push(j);
+        }
+      }
+      return bottoms.reverse().concat(tops);
+    },
+    reverse: function(data) {
+      return d3.range(data.length).reverse();
+    },
+    "default": d3_layout_stackOrderDefault
+  });
+  var d3_layout_stackOffsets = d3.map({
+    silhouette: function(data) {
+      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
+      for (j = 0; j < m; ++j) {
+        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+        if (o > max) max = o;
+        sums.push(o);
+      }
+      for (j = 0; j < m; ++j) {
+        y0[j] = (max - sums[j]) / 2;
+      }
+      return y0;
+    },
+    wiggle: function(data) {
+      var n = data.length, x = data[0], m = x.length, max = 0, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
+      y0[0] = o = o0 = 0;
+      for (j = 1; j < m; ++j) {
+        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
+        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
+          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
+            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
+          }
+          s2 += s3 * data[i][j][1];
+        }
+        y0[j] = o -= s1 ? s2 / s1 * dx : 0;
+        if (o < o0) o0 = o;
+      }
+      for (j = 0; j < m; ++j) y0[j] -= o0;
+      return y0;
+    },
+    expand: function(data) {
+      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
+      for (j = 0; j < m; ++j) {
+        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
+      }
+      for (j = 0; j < m; ++j) y0[j] = 0;
+      return y0;
+    },
+    zero: d3_layout_stackOffsetZero
+  });
+  d3.layout.histogram = function() {
+    function histogram(data, i) {
+      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
+      while (++i < m) {
+        bin = bins[i] = [];
+        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
+        bin.y = 0;
+      }
+      if (m > 0) {
+        i = -1;
+        while (++i < n) {
+          x = values[i];
+          if (x >= range[0] && x <= range[1]) {
+            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
+            bin.y += k;
+            bin.push(data[i]);
+          }
+        }
+      }
+      return bins;
+    }
+    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
+    histogram.value = function(x) {
+      if (!arguments.length) return valuer;
+      valuer = x;
+      return histogram;
+    };
+    histogram.range = function(x) {
+      if (!arguments.length) return ranger;
+      ranger = d3_functor(x);
+      return histogram;
+    };
+    histogram.bins = function(x) {
+      if (!arguments.length) return binner;
+      binner = typeof x === "number" ? function(range) {
+        return d3_layout_histogramBinFixed(range, x);
+      } : d3_functor(x);
+      return histogram;
+    };
+    histogram.frequency = function(x) {
+      if (!arguments.length) return frequency;
+      frequency = !!x;
+      return histogram;
+    };
+    return histogram;
+  };
+  d3.layout.hierarchy = function() {
+    function recurse(data, depth, nodes) {
+      var childs = children.call(hierarchy, data, depth), node = d3_layout_hierarchyInline ? data : {
+        data: data
+      };
+      node.depth = depth;
+      nodes.push(node);
+      if (childs && (n = childs.length)) {
+        var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d;
+        while (++i < n) {
+          d = recurse(childs[i], j, nodes);
+          d.parent = node;
+          c.push(d);
+          v += d.value;
+        }
+        if (sort) c.sort(sort);
+        if (value) node.value = v;
+      } else if (value) {
+        node.value = +value.call(hierarchy, data, depth) || 0;
+      }
+      return node;
+    }
+    function revalue(node, depth) {
+      var children = node.children, v = 0;
+      if (children && (n = children.length)) {
+        var i = -1, n, j = depth + 1;
+        while (++i < n) v += revalue(children[i], j);
+      } else if (value) {
+        v = +value.call(hierarchy, d3_layout_hierarchyInline ? node : node.data, depth) || 0;
+      }
+      if (value) node.value = v;
+      return v;
+    }
+    function hierarchy(d) {
+      var nodes = [];
+      recurse(d, 0, nodes);
+      return nodes;
+    }
+    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
+    hierarchy.sort = function(x) {
+      if (!arguments.length) return sort;
+      sort = x;
+      return hierarchy;
+    };
+    hierarchy.children = function(x) {
+      if (!arguments.length) return children;
+      children = x;
+      return hierarchy;
+    };
+    hierarchy.value = function(x) {
+      if (!arguments.length) return value;
+      value = x;
+      return hierarchy;
+    };
+    hierarchy.revalue = function(root) {
+      revalue(root, 0);
+      return root;
+    };
+    return hierarchy;
+  };
+  var d3_layout_hierarchyInline = false;
+  d3.layout.pack = function() {
+    function pack(d, i) {
+      var nodes = hierarchy.call(this, d, i), root = nodes[0];
+      root.x = 0;
+      root.y = 0;
+      d3_layout_treeVisitAfter(root, function(d) {
+        d.r = Math.sqrt(d.value);
+      });
+      d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
+      var w = size[0], h = size[1], k = Math.max(2 * root.r / w, 2 * root.r / h);
+      if (padding > 0) {
+        var dr = padding * k / 2;
+        d3_layout_treeVisitAfter(root, function(d) {
+          d.r += dr;
+        });
+        d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
+        d3_layout_treeVisitAfter(root, function(d) {
+          d.r -= dr;
+        });
+        k = Math.max(2 * root.r / w, 2 * root.r / h);
+      }
+      d3_layout_packTransform(root, w / 2, h / 2, 1 / k);
+      return nodes;
+    }
+    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ];
+    pack.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return pack;
+    };
+    pack.padding = function(_) {
+      if (!arguments.length) return padding;
+      padding = +_;
+      return pack;
+    };
+    return d3_layout_hierarchyRebind(pack, hierarchy);
+  };
+  d3.layout.cluster = function() {
+    function cluster(d, i) {
+      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0, kx, ky;
+      d3_layout_treeVisitAfter(root, function(node) {
+        var children = node.children;
+        if (children && children.length) {
+          node.x = d3_layout_clusterX(children);
+          node.y = d3_layout_clusterY(children);
+        } else {
+          node.x = previousNode ? x += separation(node, previousNode) : 0;
+          node.y = 0;
+          previousNode = node;
+        }
+      });
+      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
+      d3_layout_treeVisitAfter(root, function(node) {
+        node.x = (node.x - x0) / (x1 - x0) * size[0];
+        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
+      });
+      return nodes;
+    }
+    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
+    cluster.separation = function(x) {
+      if (!arguments.length) return separation;
+      separation = x;
+      return cluster;
+    };
+    cluster.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return cluster;
+    };
+    return d3_layout_hierarchyRebind(cluster, hierarchy);
+  };
+  d3.layout.tree = function() {
+    function tree(d, i) {
+      function firstWalk(node, previousSibling) {
+        var children = node.children, layout = node._tree;
+        if (children && (n = children.length)) {
+          var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1;
+          while (++i < n) {
+            child = children[i];
+            firstWalk(child, previousChild);
+            ancestor = apportion(child, previousChild, ancestor);
+            previousChild = child;
+          }
+          d3_layout_treeShift(node);
+          var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
+          if (previousSibling) {
+            layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
+            layout.mod = layout.prelim - midpoint;
+          } else {
+            layout.prelim = midpoint;
+          }
+        } else {
+          if (previousSibling) {
+            layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
+          }
+        }
+      }
+      function secondWalk(node, x) {
+        node.x = node._tree.prelim + x;
+        var children = node.children;
+        if (children && (n = children.length)) {
+          var i = -1, n;
+          x += node._tree.mod;
+          while (++i < n) {
+            secondWalk(children[i], x);
+          }
+        }
+      }
+      function apportion(node, previousSibling, ancestor) {
+        if (previousSibling) {
+          var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift;
+          while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
+            vom = d3_layout_treeLeft(vom);
+            vop = d3_layout_treeRight(vop);
+            vop._tree.ancestor = node;
+            shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
+            if (shift > 0) {
+              d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
+              sip += shift;
+              sop += shift;
+            }
+            sim += vim._tree.mod;
+            sip += vip._tree.mod;
+            som += vom._tree.mod;
+            sop += vop._tree.mod;
+          }
+          if (vim && !d3_layout_treeRight(vop)) {
+            vop._tree.thread = vim;
+            vop._tree.mod += sim - sop;
+          }
+          if (vip && !d3_layout_treeLeft(vom)) {
+            vom._tree.thread = vip;
+            vom._tree.mod += sip - som;
+            ancestor = node;
+          }
+        }
+        return ancestor;
+      }
+      var nodes = hierarchy.call(this, d, i), root = nodes[0];
+      d3_layout_treeVisitAfter(root, function(node, previousSibling) {
+        node._tree = {
+          ancestor: node,
+          prelim: 0,
+          mod: 0,
+          change: 0,
+          shift: 0,
+          number: previousSibling ? previousSibling._tree.number + 1 : 0
+        };
+      });
+      firstWalk(root);
+      secondWalk(root, -root._tree.prelim);
+      var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1;
+      d3_layout_treeVisitAfter(root, function(node) {
+        node.x = (node.x - x0) / (x1 - x0) * size[0];
+        node.y = node.depth / y1 * size[1];
+        delete node._tree;
+      });
+      return nodes;
+    }
+    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
+    tree.separation = function(x) {
+      if (!arguments.length) return separation;
+      separation = x;
+      return tree;
+    };
+    tree.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return tree;
+    };
+    return d3_layout_hierarchyRebind(tree, hierarchy);
+  };
+  d3.layout.treemap = function() {
+    function scale(children, k) {
+      var i = -1, n = children.length, child, area;
+      while (++i < n) {
+        area = (child = children[i]).value * (k < 0 ? 0 : k);
+        child.area = isNaN(area) || area <= 0 ? 0 : area;
+      }
+    }
+    function squarify(node) {
+      var children = node.children;
+      if (children && children.length) {
+        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = Math.min(rect.dx, rect.dy), n;
+        scale(remaining, rect.dx * rect.dy / node.value);
+        row.area = 0;
+        while ((n = remaining.length) > 0) {
+          row.push(child = remaining[n - 1]);
+          row.area += child.area;
+          if ((score = worst(row, u)) <= best) {
+            remaining.pop();
+            best = score;
+          } else {
+            row.area -= row.pop().area;
+            position(row, u, rect, false);
+            u = Math.min(rect.dx, rect.dy);
+            row.length = row.area = 0;
+            best = Infinity;
+          }
+        }
+        if (row.length) {
+          position(row, u, rect, true);
+          row.length = row.area = 0;
+        }
+        children.forEach(squarify);
+      }
+    }
+    function stickify(node) {
+      var children = node.children;
+      if (children && children.length) {
+        var rect = pad(node), remaining = children.slice(), child, row = [];
+        scale(remaining, rect.dx * rect.dy / node.value);
+        row.area = 0;
+        while (child = remaining.pop()) {
+          row.push(child);
+          row.area += child.area;
+          if (child.z != null) {
+            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
+            row.length = row.area = 0;
+          }
+        }
+        children.forEach(stickify);
+      }
+    }
+    function worst(row, u) {
+      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
+      while (++i < n) {
+        if (!(r = row[i].area)) continue;
+        if (r < rmin) rmin = r;
+        if (r > rmax) rmax = r;
+      }
+      s *= s;
+      u *= u;
+      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
+    }
+    function position(row, u, rect, flush) {
+      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
+      if (u == rect.dx) {
+        if (flush || v > rect.dy) v = rect.dy;
+        while (++i < n) {
+          o = row[i];
+          o.x = x;
+          o.y = y;
+          o.dy = v;
+          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
+        }
+        o.z = true;
+        o.dx += rect.x + rect.dx - x;
+        rect.y += v;
+        rect.dy -= v;
+      } else {
+        if (flush || v > rect.dx) v = rect.dx;
+        while (++i < n) {
+          o = row[i];
+          o.x = x;
+          o.y = y;
+          o.dx = v;
+          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
+        }
+        o.z = false;
+        o.dy += rect.y + rect.dy - y;
+        rect.x += v;
+        rect.dx -= v;
+      }
+    }
+    function treemap(d) {
+      var nodes = stickies || hierarchy(d), root = nodes[0];
+      root.x = 0;
+      root.y = 0;
+      root.dx = size[0];
+      root.dy = size[1];
+      if (stickies) hierarchy.revalue(root);
+      scale([ root ], root.dx * root.dy / root.value);
+      (stickies ? stickify : squarify)(root);
+      if (sticky) stickies = nodes;
+      return nodes;
+    }
+    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, ratio = .5 * (1 + Math.sqrt(5));
+    treemap.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return treemap;
+    };
+    treemap.padding = function(x) {
+      function padFunction(node) {
+        var p = x.call(treemap, node, node.depth);
+        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
+      }
+      function padConstant(node) {
+        return d3_layout_treemapPad(node, x);
+      }
+      if (!arguments.length) return padding;
+      var type;
+      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], padConstant) : padConstant;
+      return treemap;
+    };
+    treemap.round = function(x) {
+      if (!arguments.length) return round != Number;
+      round = x ? Math.round : Number;
+      return treemap;
+    };
+    treemap.sticky = function(x) {
+      if (!arguments.length) return sticky;
+      sticky = x;
+      stickies = null;
+      return treemap;
+    };
+    treemap.ratio = function(x) {
+      if (!arguments.length) return ratio;
+      ratio = x;
+      return treemap;
+    };
+    return d3_layout_hierarchyRebind(treemap, hierarchy);
+  };
+  d3.csv = d3_dsv(",", "text/csv");
+  d3.tsv = d3_dsv("	", "text/tab-separated-values");
+  d3.geo = {};
+  var d3_geo_radians = Math.PI / 180;
+  d3.geo.azimuthal = function() {
+    function azimuthal(coordinates) {
+      var x1 = coordinates[0] * d3_geo_radians - x0, y1 = coordinates[1] * d3_geo_radians, cx1 = Math.cos(x1), sx1 = Math.sin(x1), cy1 = Math.cos(y1), sy1 = Math.sin(y1), cc = mode !== "orthographic" ? sy0 * sy1 + cy0 * cy1 * cx1 : null, c, k = mode === "stereographic" ? 1 / (1 + cc) : mode === "gnomonic" ? 1 / cc : mode === "equidistant" ? (c = Math.acos(cc), c ? c / Math.sin(c) : 0) : mode === "equalarea" ? Math.sqrt(2 / (1 + cc)) : 1, x = k * cy1 * sx1, y = k * (sy0 * cy1 * cx1 - cy0 * sy1);
+      return [ scale * x + translate[0], scale * y + translate[1] ];
+    }
+    var mode = "orthographic", origin, scale = 200, translate = [ 480, 250 ], x0, y0, cy0, sy0;
+    azimuthal.invert = function(coordinates) {
+      var x = (coordinates[0] - translate[0]) / scale, y = (coordinates[1] - translate[1]) / scale, p = Math.sqrt(x * x + y * y), c = mode === "stereographic" ? 2 * Math.atan(p) : mode === "gnomonic" ? Math.atan(p) : mode === "equidistant" ? p : mode === "equalarea" ? 2 * Math.asin(.5 * p) : Math.asin(p), sc = Math.sin(c), cc = Math.cos(c);
+      return [ (x0 + Math.atan2(x * sc, p * cy0 * cc + y * sy0 * sc)) / d3_geo_radians, Math.asin(cc * sy0 - (p ? y * sc * cy0 / p : 0)) / d3_geo_radians ];
+    };
+    azimuthal.mode = function(x) {
+      if (!arguments.length) return mode;
+      mode = x + "";
+      return azimuthal;
+    };
+    azimuthal.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = x;
+      x0 = origin[0] * d3_geo_radians;
+      y0 = origin[1] * d3_geo_radians;
+      cy0 = Math.cos(y0);
+      sy0 = Math.sin(y0);
+      return azimuthal;
+    };
+    azimuthal.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return azimuthal;
+    };
+    azimuthal.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = [ +x[0], +x[1] ];
+      return azimuthal;
+    };
+    return azimuthal.origin([ 0, 0 ]);
+  };
+  d3.geo.albers = function() {
+    function albers(coordinates) {
+      var t = n * (d3_geo_radians * coordinates[0] - lng0), p = Math.sqrt(C - 2 * n * Math.sin(d3_geo_radians * coordinates[1])) / n;
+      return [ scale * p * Math.sin(t) + translate[0], scale * (p * Math.cos(t) - p0) + translate[1] ];
+    }
+    function reload() {
+      var phi1 = d3_geo_radians * parallels[0], phi2 = d3_geo_radians * parallels[1], lat0 = d3_geo_radians * origin[1], s = Math.sin(phi1), c = Math.cos(phi1);
+      lng0 = d3_geo_radians * origin[0];
+      n = .5 * (s + Math.sin(phi2));
+      C = c * c + 2 * n * s;
+      p0 = Math.sqrt(C - 2 * n * Math.sin(lat0)) / n;
+      return albers;
+    }
+    var origin = [ -98, 38 ], parallels = [ 29.5, 45.5 ], scale = 1e3, translate = [ 480, 250 ], lng0, n, C, p0;
+    albers.invert = function(coordinates) {
+      var x = (coordinates[0] - translate[0]) / scale, y = (coordinates[1] - translate[1]) / scale, p0y = p0 + y, t = Math.atan2(x, p0y), p = Math.sqrt(x * x + p0y * p0y);
+      return [ (lng0 + t / n) / d3_geo_radians, Math.asin((C - p * p * n * n) / (2 * n)) / d3_geo_radians ];
+    };
+    albers.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = [ +x[0], +x[1] ];
+      return reload();
+    };
+    albers.parallels = function(x) {
+      if (!arguments.length) return parallels;
+      parallels = [ +x[0], +x[1] ];
+      return reload();
+    };
+    albers.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return albers;
+    };
+    albers.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = [ +x[0], +x[1] ];
+      return albers;
+    };
+    return reload();
+  };
+  d3.geo.albersUsa = function() {
+    function albersUsa(coordinates) {
+      var lon = coordinates[0], lat = coordinates[1];
+      return (lat > 50 ? alaska : lon < -140 ? hawaii : lat < 21 ? puertoRico : lower48)(coordinates);
+    }
+    var lower48 = d3.geo.albers();
+    var alaska = d3.geo.albers().origin([ -160, 60 ]).parallels([ 55, 65 ]);
+    var hawaii = d3.geo.albers().origin([ -160, 20 ]).parallels([ 8, 18 ]);
+    var puertoRico = d3.geo.albers().origin([ -60, 10 ]).parallels([ 8, 18 ]);
+    albersUsa.scale = function(x) {
+      if (!arguments.length) return lower48.scale();
+      lower48.scale(x);
+      alaska.scale(x * .6);
+      hawaii.scale(x);
+      puertoRico.scale(x * 1.5);
+      return albersUsa.translate(lower48.translate());
+    };
+    albersUsa.translate = function(x) {
+      if (!arguments.length) return lower48.translate();
+      var dz = lower48.scale() / 1e3, dx = x[0], dy = x[1];
+      lower48.translate(x);
+      alaska.translate([ dx - 400 * dz, dy + 170 * dz ]);
+      hawaii.translate([ dx - 190 * dz, dy + 200 * dz ]);
+      puertoRico.translate([ dx + 580 * dz, dy + 430 * dz ]);
+      return albersUsa;
+    };
+    return albersUsa.scale(lower48.scale());
+  };
+  d3.geo.bonne = function() {
+    function bonne(coordinates) {
+      var x = coordinates[0] * d3_geo_radians - x0, y = coordinates[1] * d3_geo_radians - y0;
+      if (y1) {
+        var p = c1 + y1 - y, E = x * Math.cos(y) / p;
+        x = p * Math.sin(E);
+        y = p * Math.cos(E) - c1;
+      } else {
+        x *= Math.cos(y);
+        y *= -1;
+      }
+      return [ scale * x + translate[0], scale * y + translate[1] ];
+    }
+    var scale = 200, translate = [ 480, 250 ], x0, y0, y1, c1;
+    bonne.invert = function(coordinates) {
+      var x = (coordinates[0] - translate[0]) / scale, y = (coordinates[1] - translate[1]) / scale;
+      if (y1) {
+        var c = c1 + y, p = Math.sqrt(x * x + c * c);
+        y = c1 + y1 - p;
+        x = x0 + p * Math.atan2(x, c) / Math.cos(y);
+      } else {
+        y *= -1;
+        x /= Math.cos(y);
+      }
+      return [ x / d3_geo_radians, y / d3_geo_radians ];
+    };
+    bonne.parallel = function(x) {
+      if (!arguments.length) return y1 / d3_geo_radians;
+      c1 = 1 / Math.tan(y1 = x * d3_geo_radians);
+      return bonne;
+    };
+    bonne.origin = function(x) {
+      if (!arguments.length) return [ x0 / d3_geo_radians, y0 / d3_geo_radians ];
+      x0 = x[0] * d3_geo_radians;
+      y0 = x[1] * d3_geo_radians;
+      return bonne;
+    };
+    bonne.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return bonne;
+    };
+    bonne.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = [ +x[0], +x[1] ];
+      return bonne;
+    };
+    return bonne.origin([ 0, 0 ]).parallel(45);
+  };
+  d3.geo.equirectangular = function() {
+    function equirectangular(coordinates) {
+      var x = coordinates[0] / 360, y = -coordinates[1] / 360;
+      return [ scale * x + translate[0], scale * y + translate[1] ];
+    }
+    var scale = 500, translate = [ 480, 250 ];
+    equirectangular.invert = function(coordinates) {
+      var x = (coordinates[0] - translate[0]) / scale, y = (coordinates[1] - translate[1]) / scale;
+      return [ 360 * x, -360 * y ];
+    };
+    equirectangular.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return equirectangular;
+    };
+    equirectangular.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = [ +x[0], +x[1] ];
+      return equirectangular;
+    };
+    return equirectangular;
+  };
+  d3.geo.mercator = function() {
+    function mercator(coordinates) {
+      var x = coordinates[0] / 360, y = -(Math.log(Math.tan(Math.PI / 4 + coordinates[1] * d3_geo_radians / 2)) / d3_geo_radians) / 360;
+      return [ scale * x + translate[0], scale * Math.max(-.5, Math.min(.5, y)) + translate[1] ];
+    }
+    var scale = 500, translate = [ 480, 250 ];
+    mercator.invert = function(coordinates) {
+      var x = (coordinates[0] - translate[0]) / scale, y = (coordinates[1] - translate[1]) / scale;
+      return [ 360 * x, 2 * Math.atan(Math.exp(-360 * y * d3_geo_radians)) / d3_geo_radians - 90 ];
+    };
+    mercator.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      return mercator;
+    };
+    mercator.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = [ +x[0], +x[1] ];
+      return mercator;
+    };
+    return mercator;
+  };
+  d3.geo.path = function() {
+    function path(d, i) {
+      if (typeof pointRadius === "function") pointCircle = d3_path_circle(pointRadius.apply(this, arguments));
+      pathType(d);
+      var result = buffer.length ? buffer.join("") : null;
+      buffer = [];
+      return result;
+    }
+    function project(coordinates) {
+      return projection(coordinates).join(",");
+    }
+    function polygonArea(coordinates) {
+      var sum = area(coordinates[0]), i = 0, n = coordinates.length;
+      while (++i < n) sum -= area(coordinates[i]);
+      return sum;
+    }
+    function polygonCentroid(coordinates) {
+      var polygon = d3.geom.polygon(coordinates[0].map(projection)), area = polygon.area(), centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1), x = centroid[0], y = centroid[1], z = area, i = 0, n = coordinates.length;
+      while (++i < n) {
+        polygon = d3.geom.polygon(coordinates[i].map(projection));
+        area = polygon.area();
+        centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1);
+        x -= centroid[0];
+        y -= centroid[1];
+        z -= area;
+      }
+      return [ x, y, 6 * z ];
+    }
+    function area(coordinates) {
+      return Math.abs(d3.geom.polygon(coordinates.map(projection)).area());
+    }
+    var pointRadius = 4.5, pointCircle = d3_path_circle(pointRadius), projection = d3.geo.albersUsa(), buffer = [];
+    var pathType = d3_geo_type({
+      FeatureCollection: function(o) {
+        var features = o.features, i = -1, n = features.length;
+        while (++i < n) buffer.push(pathType(features[i].geometry));
+      },
+      Feature: function(o) {
+        pathType(o.geometry);
+      },
+      Point: function(o) {
+        buffer.push("M", project(o.coordinates), pointCircle);
+      },
+      MultiPoint: function(o) {
+        var coordinates = o.coordinates, i = -1, n = coordinates.length;
+        while (++i < n) buffer.push("M", project(coordinates[i]), pointCircle);
+      },
+      LineString: function(o) {
+        var coordinates = o.coordinates, i = -1, n = coordinates.length;
+        buffer.push("M");
+        while (++i < n) buffer.push(project(coordinates[i]), "L");
+        buffer.pop();
+      },
+      MultiLineString: function(o) {
+        var coordinates = o.coordinates, i = -1, n = coordinates.length, subcoordinates, j, m;
+        while (++i < n) {
+          subcoordinates = coordinates[i];
+          j = -1;
+          m = subcoordinates.length;
+          buffer.push("M");
+          while (++j < m) buffer.push(project(subcoordinates[j]), "L");
+          buffer.pop();
+        }
+      },
+      Polygon: function(o) {
+        var coordinates = o.coordinates, i = -1, n = coordinates.length, subcoordinates, j, m;
+        while (++i < n) {
+          subcoordinates = coordinates[i];
+          j = -1;
+          if ((m = subcoordinates.length - 1) > 0) {
+            buffer.push("M");
+            while (++j < m) buffer.push(project(subcoordinates[j]), "L");
+            buffer[buffer.length - 1] = "Z";
+          }
+        }
+      },
+      MultiPolygon: function(o) {
+        var coordinates = o.coordinates, i = -1, n = coordinates.length, subcoordinates, j, m, subsubcoordinates, k, p;
+        while (++i < n) {
+          subcoordinates = coordinates[i];
+          j = -1;
+          m = subcoordinates.length;
+          while (++j < m) {
+            subsubcoordinates = subcoordinates[j];
+            k = -1;
+            if ((p = subsubcoordinates.length - 1) > 0) {
+              buffer.push("M");
+              while (++k < p) buffer.push(project(subsubcoordinates[k]), "L");
+              buffer[buffer.length - 1] = "Z";
+            }
+          }
+        }
+      },
+      GeometryCollection: function(o) {
+        var geometries = o.geometries, i = -1, n = geometries.length;
+        while (++i < n) buffer.push(pathType(geometries[i]));
+      }
+    });
+    var areaType = path.area = d3_geo_type({
+      FeatureCollection: function(o) {
+        var area = 0, features = o.features, i = -1, n = features.length;
+        while (++i < n) area += areaType(features[i]);
+        return area;
+      },
+      Feature: function(o) {
+        return areaType(o.geometry);
+      },
+      Polygon: function(o) {
+        return polygonArea(o.coordinates);
+      },
+      MultiPolygon: function(o) {
+        var sum = 0, coordinates = o.coordinates, i = -1, n = coordinates.length;
+        while (++i < n) sum += polygonArea(coordinates[i]);
+        return sum;
+      },
+      GeometryCollection: function(o) {
+        var sum = 0, geometries = o.geometries, i = -1, n = geometries.length;
+        while (++i < n) sum += areaType(geometries[i]);
+        return sum;
+      }
+    }, 0);
+    var centroidType = path.centroid = d3_geo_type({
+      Feature: function(o) {
+        return centroidType(o.geometry);
+      },
+      Polygon: function(o) {
+        var centroid = polygonCentroid(o.coordinates);
+        return [ centroid[0] / centroid[2], centroid[1] / centroid[2] ];
+      },
+      MultiPolygon: function(o) {
+        var area = 0, coordinates = o.coordinates, centroid, x = 0, y = 0, z = 0, i = -1, n = coordinates.length;
+        while (++i < n) {
+          centroid = polygonCentroid(coordinates[i]);
+          x += centroid[0];
+          y += centroid[1];
+          z += centroid[2];
+        }
+        return [ x / z, y / z ];
+      }
+    });
+    path.projection = function(x) {
+      projection = x;
+      return path;
+    };
+    path.pointRadius = function(x) {
+      if (typeof x === "function") pointRadius = x; else {
+        pointRadius = +x;
+        pointCircle = d3_path_circle(pointRadius);
+      }
+      return path;
+    };
+    return path;
+  };
+  d3.geo.bounds = function(feature) {
+    var left = Infinity, bottom = Infinity, right = -Infinity, top = -Infinity;
+    d3_geo_bounds(feature, function(x, y) {
+      if (x < left) left = x;
+      if (x > right) right = x;
+      if (y < bottom) bottom = y;
+      if (y > top) top = y;
+    });
+    return [ [ left, bottom ], [ right, top ] ];
+  };
+  var d3_geo_boundsTypes = {
+    Feature: d3_geo_boundsFeature,
+    FeatureCollection: d3_geo_boundsFeatureCollection,
+    GeometryCollection: d3_geo_boundsGeometryCollection,
+    LineString: d3_geo_boundsLineString,
+    MultiLineString: d3_geo_boundsMultiLineString,
+    MultiPoint: d3_geo_boundsLineString,
+    MultiPolygon: d3_geo_boundsMultiPolygon,
+    Point: d3_geo_boundsPoint,
+    Polygon: d3_geo_boundsPolygon
+  };
+  d3.geo.circle = function() {
+    function circle() {}
+    function visible(point) {
+      return arc.distance(point) < radians;
+    }
+    function clip(coordinates) {
+      var i = -1, n = coordinates.length, clipped = [], p0, p1, p2, d0, d1;
+      while (++i < n) {
+        d1 = arc.distance(p2 = coordinates[i]);
+        if (d1 < radians) {
+          if (p1) clipped.push(d3_geo_greatArcInterpolate(p1, p2)((d0 - radians) / (d0 - d1)));
+          clipped.push(p2);
+          p0 = p1 = null;
+        } else {
+          p1 = p2;
+          if (!p0 && clipped.length) {
+            clipped.push(d3_geo_greatArcInterpolate(clipped[clipped.length - 1], p1)((radians - d0) / (d1 - d0)));
+            p0 = p1;
+          }
+        }
+        d0 = d1;
+      }
+      p0 = coordinates[0];
+      p1 = clipped[0];
+      if (p1 && p2[0] === p0[0] && p2[1] === p0[1] && !(p2[0] === p1[0] && p2[1] === p1[1])) {
+        clipped.push(p1);
+      }
+      return resample(clipped);
+    }
+    function resample(coordinates) {
+      var i = 0, n = coordinates.length, j, m, resampled = n ? [ coordinates[0] ] : coordinates, resamples, origin = arc.source();
+      while (++i < n) {
+        resamples = arc.source(coordinates[i - 1])(coordinates[i]).coordinates;
+        for (j = 0, m = resamples.length; ++j < m; ) resampled.push(resamples[j]);
+      }
+      arc.source(origin);
+      return resampled;
+    }
+    var origin = [ 0, 0 ], degrees = 90 - .01, radians = degrees * d3_geo_radians, arc = d3.geo.greatArc().source(origin).target(d3_identity);
+    circle.clip = function(d) {
+      if (typeof origin === "function") arc.source(origin.apply(this, arguments));
+      return clipType(d) || null;
+    };
+    var clipType = d3_geo_type({
+      FeatureCollection: function(o) {
+        var features = o.features.map(clipType).filter(d3_identity);
+        return features && (o = Object.create(o), o.features = features, o);
+      },
+      Feature: function(o) {
+        var geometry = clipType(o.geometry);
+        return geometry && (o = Object.create(o), o.geometry = geometry, o);
+      },
+      Point: function(o) {
+        return visible(o.coordinates) && o;
+      },
+      MultiPoint: function(o) {
+        var coordinates = o.coordinates.filter(visible);
+        return coordinates.length && {
+          type: o.type,
+          coordinates: coordinates
+        };
+      },
+      LineString: function(o) {
+        var coordinates = clip(o.coordinates);
+        return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o);
+      },
+      MultiLineString: function(o) {
+        var coordinates = o.coordinates.map(clip).filter(function(d) {
+          return d.length;
+        });
+        return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o);
+      },
+      Polygon: function(o) {
+        var coordinates = o.coordinates.map(clip);
+        return coordinates[0].length && (o = Object.create(o), o.coordinates = coordinates, o);
+      },
+      MultiPolygon: function(o) {
+        var coordinates = o.coordinates.map(function(d) {
+          return d.map(clip);
+        }).filter(function(d) {
+          return d[0].length;
+        });
+        return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o);
+      },
+      GeometryCollection: function(o) {
+        var geometries = o.geometries.map(clipType).filter(d3_identity);
+        return geometries.length && (o = Object.create(o), o.geometries = geometries, o);
+      }
+    });
+    circle.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = x;
+      if (typeof origin !== "function") arc.source(origin);
+      return circle;
+    };
+    circle.angle = function(x) {
+      if (!arguments.length) return degrees;
+      radians = (degrees = +x) * d3_geo_radians;
+      return circle;
+    };
+    return d3.rebind(circle, arc, "precision");
+  };
+  d3.geo.greatArc = function() {
+    function greatArc() {
+      var d = greatArc.distance.apply(this, arguments), t = 0, dt = precision / d, coordinates = [ p0 ];
+      while ((t += dt) < 1) coordinates.push(interpolate(t));
+      coordinates.push(p1);
+      return {
+        type: "LineString",
+        coordinates: coordinates
+      };
+    }
+    var source = d3_geo_greatArcSource, p0, target = d3_geo_greatArcTarget, p1, precision = 6 * d3_geo_radians, interpolate = d3_geo_greatArcInterpolator();
+    greatArc.distance = function() {
+      if (typeof source === "function") interpolate.source(p0 = source.apply(this, arguments));
+      if (typeof target === "function") interpolate.target(p1 = target.apply(this, arguments));
+      return interpolate.distance();
+    };
+    greatArc.source = function(_) {
+      if (!arguments.length) return source;
+      source = _;
+      if (typeof source !== "function") interpolate.source(p0 = source);
+      return greatArc;
+    };
+    greatArc.target = function(_) {
+      if (!arguments.length) return target;
+      target = _;
+      if (typeof target !== "function") interpolate.target(p1 = target);
+      return greatArc;
+    };
+    greatArc.precision = function(_) {
+      if (!arguments.length) return precision / d3_geo_radians;
+      precision = _ * d3_geo_radians;
+      return greatArc;
+    };
+    return greatArc;
+  };
+  d3.geo.greatCircle = d3.geo.circle;
+  d3.geom = {};
+  d3.geom.contour = function(grid, start) {
+    var s = start || d3_geom_contourStart(grid), c = [], x = s[0], y = s[1], dx = 0, dy = 0, pdx = NaN, pdy = NaN, i = 0;
+    do {
+      i = 0;
+      if (grid(x - 1, y - 1)) i += 1;
+      if (grid(x, y - 1)) i += 2;
+      if (grid(x - 1, y)) i += 4;
+      if (grid(x, y)) i += 8;
+      if (i === 6) {
+        dx = pdy === -1 ? -1 : 1;
+        dy = 0;
+      } else if (i === 9) {
+        dx = 0;
+        dy = pdx === 1 ? -1 : 1;
+      } else {
+        dx = d3_geom_contourDx[i];
+        dy = d3_geom_contourDy[i];
+      }
+      if (dx != pdx && dy != pdy) {
+        c.push([ x, y ]);
+        pdx = dx;
+        pdy = dy;
+      }
+      x += dx;
+      y += dy;
+    } while (s[0] != x || s[1] != y);
+    return c;
+  };
+  var d3_geom_contourDx = [ 1, 0, 1, 1, -1, 0, -1, 1, 0, 0, 0, 0, -1, 0, -1, NaN ], d3_geom_contourDy = [ 0, -1, 0, 0, 0, -1, 0, 0, 1, -1, 1, 1, 0, -1, 0, NaN ];
+  d3.geom.hull = function(vertices) {
+    if (vertices.length < 3) return [];
+    var len = vertices.length, plen = len - 1, points = [], stack = [], i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
+    for (i = 1; i < len; ++i) {
+      if (vertices[i][1] < vertices[h][1]) {
+        h = i;
+      } else if (vertices[i][1] == vertices[h][1]) {
+        h = vertices[i][0] < vertices[h][0] ? i : h;
+      }
+    }
+    for (i = 0; i < len; ++i) {
+      if (i === h) continue;
+      y1 = vertices[i][1] - vertices[h][1];
+      x1 = vertices[i][0] - vertices[h][0];
+      points.push({
+        angle: Math.atan2(y1, x1),
+        index: i
+      });
+    }
+    points.sort(function(a, b) {
+      return a.angle - b.angle;
+    });
+    a = points[0].angle;
+    v = points[0].index;
+    u = 0;
+    for (i = 1; i < plen; ++i) {
+      j = points[i].index;
+      if (a == points[i].angle) {
+        x1 = vertices[v][0] - vertices[h][0];
+        y1 = vertices[v][1] - vertices[h][1];
+        x2 = vertices[j][0] - vertices[h][0];
+        y2 = vertices[j][1] - vertices[h][1];
+        if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
+          points[i].index = -1;
+        } else {
+          points[u].index = -1;
+          a = points[i].angle;
+          u = i;
+          v = j;
+        }
+      } else {
+        a = points[i].angle;
+        u = i;
+        v = j;
+      }
+    }
+    stack.push(h);
+    for (i = 0, j = 0; i < 2; ++j) {
+      if (points[j].index !== -1) {
+        stack.push(points[j].index);
+        i++;
+      }
+    }
+    sp = stack.length;
+    for (; j < plen; ++j) {
+      if (points[j].index === -1) continue;
+      while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
+        --sp;
+      }
+      stack[sp++] = points[j].index;
+    }
+    var poly = [];
+    for (i = 0; i < sp; ++i) {
+      poly.push(vertices[stack[i]]);
+    }
+    return poly;
+  };
+  d3.geom.polygon = function(coordinates) {
+    coordinates.area = function() {
+      var i = 0, n = coordinates.length, a = coordinates[n - 1][0] * coordinates[0][1], b = coordinates[n - 1][1] * coordinates[0][0];
+      while (++i < n) {
+        a += coordinates[i - 1][0] * coordinates[i][1];
+        b += coordinates[i - 1][1] * coordinates[i][0];
+      }
+      return (b - a) * .5;
+    };
+    coordinates.centroid = function(k) {
+      var i = -1, n = coordinates.length, x = 0, y = 0, a, b = coordinates[n - 1], c;
+      if (!arguments.length) k = -1 / (6 * coordinates.area());
+      while (++i < n) {
+        a = b;
+        b = coordinates[i];
+        c = a[0] * b[1] - b[0] * a[1];
+        x += (a[0] + b[0]) * c;
+        y += (a[1] + b[1]) * c;
+      }
+      return [ x * k, y * k ];
+    };
+    coordinates.clip = function(subject) {
+      var input, i = -1, n = coordinates.length, j, m, a = coordinates[n - 1], b, c, d;
+      while (++i < n) {
+        input = subject.slice();
+        subject.length = 0;
+        b = coordinates[i];
+        c = input[(m = input.length) - 1];
+        j = -1;
+        while (++j < m) {
+          d = input[j];
+          if (d3_geom_polygonInside(d, a, b)) {
+            if (!d3_geom_polygonInside(c, a, b)) {
+              subject.push(d3_geom_polygonIntersect(c, d, a, b));
+            }
+            subject.push(d);
+          } else if (d3_geom_polygonInside(c, a, b)) {
+            subject.push(d3_geom_polygonIntersect(c, d, a, b));
+          }
+          c = d;
+        }
+        a = b;
+      }
+      return subject;
+    };
+    return coordinates;
+  };
+  d3.geom.voronoi = function(vertices) {
+    var polygons = vertices.map(function() {
+      return [];
+    });
+    d3_voronoi_tessellate(vertices, function(e) {
+      var s1, s2, x1, x2, y1, y2;
+      if (e.a === 1 && e.b >= 0) {
+        s1 = e.ep.r;
+        s2 = e.ep.l;
+      } else {
+        s1 = e.ep.l;
+        s2 = e.ep.r;
+      }
+      if (e.a === 1) {
+        y1 = s1 ? s1.y : -1e6;
+        x1 = e.c - e.b * y1;
+        y2 = s2 ? s2.y : 1e6;
+        x2 = e.c - e.b * y2;
+      } else {
+        x1 = s1 ? s1.x : -1e6;
+        y1 = e.c - e.a * x1;
+        x2 = s2 ? s2.x : 1e6;
+        y2 = e.c - e.a * x2;
+      }
+      var v1 = [ x1, y1 ], v2 = [ x2, y2 ];
+      polygons[e.region.l.index].push(v1, v2);
+      polygons[e.region.r.index].push(v1, v2);
+    });
+    return polygons.map(function(polygon, i) {
+      var cx = vertices[i][0], cy = vertices[i][1];
+      polygon.forEach(function(v) {
+        v.angle = Math.atan2(v[0] - cx, v[1] - cy);
+      });
+      return polygon.sort(function(a, b) {
+        return a.angle - b.angle;
+      }).filter(function(d, i) {
+        return !i || d.angle - polygon[i - 1].angle > 1e-10;
+      });
+    });
+  };
+  var d3_voronoi_opposite = {
+    l: "r",
+    r: "l"
+  };
+  d3.geom.delaunay = function(vertices) {
+    var edges = vertices.map(function() {
+      return [];
+    }), triangles = [];
+    d3_voronoi_tessellate(vertices, function(e) {
+      edges[e.region.l.index].push(vertices[e.region.r.index]);
+    });
+    edges.forEach(function(edge, i) {
+      var v = vertices[i], cx = v[0], cy = v[1];
+      edge.forEach(function(v) {
+        v.angle = Math.atan2(v[0] - cx, v[1] - cy);
+      });
+      edge.sort(function(a, b) {
+        return a.angle - b.angle;
+      });
+      for (var j = 0, m = edge.length - 1; j < m; j++) {
+        triangles.push([ v, edge[j], edge[j + 1] ]);
+      }
+    });
+    return triangles;
+  };
+  d3.geom.quadtree = function(points, x1, y1, x2, y2) {
+    function insert(n, p, x1, y1, x2, y2) {
+      if (isNaN(p.x) || isNaN(p.y)) return;
+      if (n.leaf) {
+        var v = n.point;
+        if (v) {
+          if (Math.abs(v.x - p.x) + Math.abs(v.y - p.y) < .01) {
+            insertChild(n, p, x1, y1, x2, y2);
+          } else {
+            n.point = null;
+            insertChild(n, v, x1, y1, x2, y2);
+            insertChild(n, p, x1, y1, x2, y2);
+          }
+        } else {
+          n.point = p;
+        }
+      } else {
+        insertChild(n, p, x1, y1, x2, y2);
+      }
+    }
+    function insertChild(n, p, x1, y1, x2, y2) {
+      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = p.x >= sx, bottom = p.y >= sy, i = (bottom << 1) + right;
+      n.leaf = false;
+      n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
+      if (right) x1 = sx; else x2 = sx;
+      if (bottom) y1 = sy; else y2 = sy;
+      insert(n, p, x1, y1, x2, y2);
+    }
+    var p, i = -1, n = points.length;
+    if (n && isNaN(points[0].x)) points = points.map(d3_geom_quadtreePoint);
+    if (arguments.length < 5) {
+      if (arguments.length === 3) {
+        y2 = x2 = y1;
+        y1 = x1;
+      } else {
+        x1 = y1 = Infinity;
+        x2 = y2 = -Infinity;
+        while (++i < n) {
+          p = points[i];
+          if (p.x < x1) x1 = p.x;
+          if (p.y < y1) y1 = p.y;
+          if (p.x > x2) x2 = p.x;
+          if (p.y > y2) y2 = p.y;
+        }
+        var dx = x2 - x1, dy = y2 - y1;
+        if (dx > dy) y2 = y1 + dx; else x2 = x1 + dy;
+      }
+    }
+    var root = d3_geom_quadtreeNode();
+    root.add = function(p) {
+      insert(root, p, x1, y1, x2, y2);
+    };
+    root.visit = function(f) {
+      d3_geom_quadtreeVisit(f, root, x1, y1, x2, y2);
+    };
+    points.forEach(root.add);
+    return root;
+  };
+  d3.time = {};
+  var d3_time = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
+  d3_time_utc.prototype = {
+    getDate: function() {
+      return this._.getUTCDate();
+    },
+    getDay: function() {
+      return this._.getUTCDay();
+    },
+    getFullYear: function() {
+      return this._.getUTCFullYear();
+    },
+    getHours: function() {
+      return this._.getUTCHours();
+    },
+    getMilliseconds: function() {
+      return this._.getUTCMilliseconds();
+    },
+    getMinutes: function() {
+      return this._.getUTCMinutes();
+    },
+    getMonth: function() {
+      return this._.getUTCMonth();
+    },
+    getSeconds: function() {
+      return this._.getUTCSeconds();
+    },
+    getTime: function() {
+      return this._.getTime();
+    },
+    getTimezoneOffset: function() {
+      return 0;
+    },
+    valueOf: function() {
+      return this._.valueOf();
+    },
+    setDate: function() {
+      d3_time_prototype.setUTCDate.apply(this._, arguments);
+    },
+    setDay: function() {
+      d3_time_prototype.setUTCDay.apply(this._, arguments);
+    },
+    setFullYear: function() {
+      d3_time_prototype.setUTCFullYear.apply(this._, arguments);
+    },
+    setHours: function() {
+      d3_time_prototype.setUTCHours.apply(this._, arguments);
+    },
+    setMilliseconds: function() {
+      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
+    },
+    setMinutes: function() {
+      d3_time_prototype.setUTCMinutes.apply(this._, arguments);
+    },
+    setMonth: function() {
+      d3_time_prototype.setUTCMonth.apply(this._, arguments);
+    },
+    setSeconds: function() {
+      d3_time_prototype.setUTCSeconds.apply(this._, arguments);
+    },
+    setTime: function() {
+      d3_time_prototype.setTime.apply(this._, arguments);
+    }
+  };
+  var d3_time_prototype = Date.prototype;
+  var d3_time_formatDateTime = "%a %b %e %H:%M:%S %Y", d3_time_formatDate = "%m/%d/%y", d3_time_formatTime = "%H:%M:%S";
+  var d3_time_days = d3_time_daySymbols, d3_time_dayAbbreviations = d3_time_days.map(d3_time_formatAbbreviate), d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = d3_time_months.map(d3_time_formatAbbreviate);
+  d3.time.format = function(template) {
+    function format(date) {
+      var string = [], i = -1, j = 0, c, f;
+      while (++i < n) {
+        if (template.charCodeAt(i) == 37) {
+          string.push(template.substring(j, i), (f = d3_time_formats[c = template.charAt(++i)]) ? f(date) : c);
+          j = i + 1;
+        }
+      }
+      string.push(template.substring(j, i));
+      return string.join("");
+    }
+    var n = template.length;
+    format.parse = function(string) {
+      var d = {
+        y: 1900,
+        m: 0,
+        d: 1,
+        H: 0,
+        M: 0,
+        S: 0,
+        L: 0
+      }, i = d3_time_parse(d, template, string, 0);
+      if (i != string.length) return null;
+      if ("p" in d) d.H = d.H % 12 + d.p * 12;
+      var date = new d3_time;
+      date.setFullYear(d.y, d.m, d.d);
+      date.setHours(d.H, d.M, d.S, d.L);
+      return date;
+    };
+    format.toString = function() {
+      return template;
+    };
+    return format;
+  };
+  var d3_time_zfill2 = d3.format("02d"), d3_time_zfill3 = d3.format("03d"), d3_time_zfill4 = d3.format("04d"), d3_time_sfill2 = d3.format("2d");
+  var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations);
+  var d3_time_formats = {
+    a: function(d) {
+      return d3_time_dayAbbreviations[d.getDay()];
+    },
+    A: function(d) {
+      return d3_time_days[d.getDay()];
+    },
+    b: function(d) {
+      return d3_time_monthAbbreviations[d.getMonth()];
+    },
+    B: function(d) {
+      return d3_time_months[d.getMonth()];
+    },
+    c: d3.time.format(d3_time_formatDateTime),
+    d: function(d) {
+      return d3_time_zfill2(d.getDate());
+    },
+    e: function(d) {
+      return d3_time_sfill2(d.getDate());
+    },
+    H: function(d) {
+      return d3_time_zfill2(d.getHours());
+    },
+    I: function(d) {
+      return d3_time_zfill2(d.getHours() % 12 || 12);
+    },
+    j: function(d) {
+      return d3_time_zfill3(1 + d3.time.dayOfYear(d));
+    },
+    L: function(d) {
+      return d3_time_zfill3(d.getMilliseconds());
+    },
+    m: function(d) {
+      return d3_time_zfill2(d.getMonth() + 1);
+    },
+    M: function(d) {
+      return d3_time_zfill2(d.getMinutes());
+    },
+    p: function(d) {
+      return d.getHours() >= 12 ? "PM" : "AM";
+    },
+    S: function(d) {
+      return d3_time_zfill2(d.getSeconds());
+    },
+    U: function(d) {
+      return d3_time_zfill2(d3.time.sundayOfYear(d));
+    },
+    w: function(d) {
+      return d.getDay();
+    },
+    W: function(d) {
+      return d3_time_zfill2(d3.time.mondayOfYear(d));
+    },
+    x: d3.time.format(d3_time_formatDate),
+    X: d3.time.format(d3_time_formatTime),
+    y: function(d) {
+      return d3_time_zfill2(d.getFullYear() % 100);
+    },
+    Y: function(d) {
+      return d3_time_zfill4(d.getFullYear() % 1e4);
+    },
+    Z: d3_time_zone,
+    "%": function(d) {
+      return "%";
+    }
+  };
+  var d3_time_parsers = {
+    a: d3_time_parseWeekdayAbbrev,
+    A: d3_time_parseWeekday,
+    b: d3_time_parseMonthAbbrev,
+    B: d3_time_parseMonth,
+    c: d3_time_parseLocaleFull,
+    d: d3_time_parseDay,
+    e: d3_time_parseDay,
+    H: d3_time_parseHour24,
+    I: d3_time_parseHour24,
+    L: d3_time_parseMilliseconds,
+    m: d3_time_parseMonthNumber,
+    M: d3_time_parseMinutes,
+    p: d3_time_parseAmPm,
+    S: d3_time_parseSeconds,
+    x: d3_time_parseLocaleDate,
+    X: d3_time_parseLocaleTime,
+    y: d3_time_parseYear,
+    Y: d3_time_parseFullYear
+  };
+  var d3_time_numberRe = /^\s*\d+/;
+  var d3_time_amPmLookup = d3.map({
+    am: 0,
+    pm: 1
+  });
+  d3.time.format.utc = function(template) {
+    function format(date) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time;
+        utc._ = date;
+        return local(utc);
+      } finally {
+        d3_time = Date;
+      }
+    }
+    var local = d3.time.format(template);
+    format.parse = function(string) {
+      try {
+        d3_time = d3_time_utc;
+        var date = local.parse(string);
+        return date && date._;
+      } finally {
+        d3_time = Date;
+      }
+    };
+    format.toString = local.toString;
+    return format;
+  };
+  var d3_time_formatIso = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");
+  d3.time.format.iso = Date.prototype.toISOString ? d3_time_formatIsoNative : d3_time_formatIso;
+  d3_time_formatIsoNative.parse = function(string) {
+    var date = new Date(string);
+    return isNaN(date) ? null : date;
+  };
+  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
+  d3.time.second = d3_time_interval(function(date) {
+    return new d3_time(Math.floor(date / 1e3) * 1e3);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 1e3);
+  }, function(date) {
+    return date.getSeconds();
+  });
+  d3.time.seconds = d3.time.second.range;
+  d3.time.seconds.utc = d3.time.second.utc.range;
+  d3.time.minute = d3_time_interval(function(date) {
+    return new d3_time(Math.floor(date / 6e4) * 6e4);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 6e4);
+  }, function(date) {
+    return date.getMinutes();
+  });
+  d3.time.minutes = d3.time.minute.range;
+  d3.time.minutes.utc = d3.time.minute.utc.range;
+  d3.time.hour = d3_time_interval(function(date) {
+    var timezone = date.getTimezoneOffset() / 60;
+    return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 36e5);
+  }, function(date) {
+    return date.getHours();
+  });
+  d3.time.hours = d3.time.hour.range;
+  d3.time.hours.utc = d3.time.hour.utc.range;
+  d3.time.day = d3_time_interval(function(date) {
+    var day = new d3_time(1970, 0);
+    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
+    return day;
+  }, function(date, offset) {
+    date.setDate(date.getDate() + offset);
+  }, function(date) {
+    return date.getDate() - 1;
+  });
+  d3.time.days = d3.time.day.range;
+  d3.time.days.utc = d3.time.day.utc.range;
+  d3.time.dayOfYear = function(date) {
+    var year = d3.time.year(date);
+    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
+  };
+  d3_time_daySymbols.forEach(function(day, i) {
+    day = day.toLowerCase();
+    i = 7 - i;
+    var interval = d3.time[day] = d3_time_interval(function(date) {
+      (date = d3.time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
+      return date;
+    }, function(date, offset) {
+      date.setDate(date.getDate() + Math.floor(offset) * 7);
+    }, function(date) {
+      var day = d3.time.year(date).getDay();
+      return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
+    });
+    d3.time[day + "s"] = interval.range;
+    d3.time[day + "s"].utc = interval.utc.range;
+    d3.time[day + "OfYear"] = function(date) {
+      var day = d3.time.year(date).getDay();
+      return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7);
+    };
+  });
+  d3.time.week = d3.time.sunday;
+  d3.time.weeks = d3.time.sunday.range;
+  d3.time.weeks.utc = d3.time.sunday.utc.range;
+  d3.time.weekOfYear = d3.time.sundayOfYear;
+  d3.time.month = d3_time_interval(function(date) {
+    date = d3.time.day(date);
+    date.setDate(1);
+    return date;
+  }, function(date, offset) {
+    date.setMonth(date.getMonth() + offset);
+  }, function(date) {
+    return date.getMonth();
+  });
+  d3.time.months = d3.time.month.range;
+  d3.time.months.utc = d3.time.month.utc.range;
+  d3.time.year = d3_time_interval(function(date) {
+    date = d3.time.day(date);
+    date.setMonth(0, 1);
+    return date;
+  }, function(date, offset) {
+    date.setFullYear(date.getFullYear() + offset);
+  }, function(date) {
+    return date.getFullYear();
+  });
+  d3.time.years = d3.time.year.range;
+  d3.time.years.utc = d3.time.year.utc.range;
+  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
+  var d3_time_scaleLocalMethods = [ [ d3.time.second, 1 ], [ d3.time.second, 5 ], [ d3.time.second, 15 ], [ d3.time.second, 30 ], [ d3.time.minute, 1 ], [ d3.time.minute, 5 ], [ d3.time.minute, 15 ], [ d3.time.minute, 30 ], [ d3.time.hour, 1 ], [ d3.time.hour, 3 ], [ d3.time.hour, 6 ], [ d3.time.hour, 12 ], [ d3.time.day, 1 ], [ d3.time.day, 2 ], [ d3.time.week, 1 ], [ d3.time.month, 1 ], [ d3.time.month, 3 ], [ d3.time.year, 1 ] ];
+  var d3_time_scaleLocalFormats = [ [ d3.time.format("%Y"), function(d) {
+    return true;
+  } ], [ d3.time.format("%B"), function(d) {
+    return d.getMonth();
+  } ], [ d3.time.format("%b %d"), function(d) {
+    return d.getDate() != 1;
+  } ], [ d3.time.format("%a %d"), function(d) {
+    return d.getDay() && d.getDate() != 1;
+  } ], [ d3.time.format("%I %p"), function(d) {
+    return d.getHours();
+  } ], [ d3.time.format("%I:%M"), function(d) {
+    return d.getMinutes();
+  } ], [ d3.time.format(":%S"), function(d) {
+    return d.getSeconds();
+  } ], [ d3.time.format(".%L"), function(d) {
+    return d.getMilliseconds();
+  } ] ];
+  var d3_time_scaleLinear = d3.scale.linear(), d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
+  d3_time_scaleLocalMethods.year = function(extent, m) {
+    return d3_time_scaleLinear.domain(extent.map(d3_time_scaleGetYear)).ticks(m).map(d3_time_scaleSetYear);
+  };
+  d3.time.scale = function() {
+    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
+  };
+  var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
+    return [ m[0].utc, m[1] ];
+  });
+  var d3_time_scaleUTCFormats = [ [ d3.time.format.utc("%Y"), function(d) {
+    return true;
+  } ], [ d3.time.format.utc("%B"), function(d) {
+    return d.getUTCMonth();
+  } ], [ d3.time.format.utc("%b %d"), function(d) {
+    return d.getUTCDate() != 1;
+  } ], [ d3.time.format.utc("%a %d"), function(d) {
+    return d.getUTCDay() && d.getUTCDate() != 1;
+  } ], [ d3.time.format.utc("%I %p"), function(d) {
+    return d.getUTCHours();
+  } ], [ d3.time.format.utc("%I:%M"), function(d) {
+    return d.getUTCMinutes();
+  } ], [ d3.time.format.utc(":%S"), function(d) {
+    return d.getUTCSeconds();
+  } ], [ d3.time.format.utc(".%L"), function(d) {
+    return d.getUTCMilliseconds();
+  } ] ];
+  var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
+  d3_time_scaleUTCMethods.year = function(extent, m) {
+    return d3_time_scaleLinear.domain(extent.map(d3_time_scaleUTCGetYear)).ticks(m).map(d3_time_scaleUTCSetYear);
+  };
+  d3.time.scale.utc = function() {
+    return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat);
+  };
+})();
\ No newline at end of file
diff --git a/lib/d3.v2.min.js b/lib/d3.v2.min.js
new file mode 100644
index 0000000..cc47f1e
--- /dev/null
+++ b/lib/d3.v2.min.js
@@ -0,0 +1,4 @@
+(function(){function e(e,t){try{for(var n in t)Object.defineProperty(e.prototype,n,{value:t[n],enumerable:!1})}catch(r){e.prototype=t}}function t(e){var t=-1,n=e.length,r=[];while(++t<n)r.push(e[t]);return r}function n(e){return Array.prototype.slice.call(e)}function r(){}function i(e){return e}function s(){return this}function o(){return!0}function u(e){return typeof e=="function"?e:function(){return e}}function a(e,t,n){return function(){var r=n.apply(t,arguments);return arguments.length?e:r}}function f(e){return e!=null&&!isNaN(e)}function l(e){return e.length}function c(e){return e==null}function h(e){return e.trim().replace(/\s+/g," ")}function p(e){var t=1;while(e*t%1)t*=10;return t}function d(){}function v(e){function t(){var t=n,r=-1,i=t.length,s;while(++r<i)(s=t[r].on)&&s.apply(this,arguments);return e}var n=[],i=new r;return t.on=function(t,r){var s=i.get(t),o;return arguments.length<2?s&&s.on:(s&&(s.on=null,n=n.slice(0,o=n.indexOf(s)).concat(n.slice(o+1)),i.remove(t)),r&&n.push(i.set(t,{on:r})),e)},t}function m(e,t){return t-(e?1+Math.floor(Math.log(e+Math.pow(10,1+Math.floor(Math.log(e)/Math.LN10)-t))/Math.LN10):1)}function g(e){return e+""}function y(e){var t=e.lastIndexOf("."),n=t>=0?e.substring(t):(t=e.length,""),r=[];while(t>0)r.push(e.substring(t-=3,t+3));return r.reverse().join(",")+n}function b(e,t){var n=Math.pow(10,Math.abs(8-t)*3);return{scale:t>8?function(e){return e/n}:function(e){return e*n},symbol:e}}function w(e){return function(t){return t<=0?0:t>=1?1:e(t)}}function E(e){return function(t){return 1-e(1-t)}}function S(e){return function(t){return.5*(t<.5?e(2*t):2-e(2-2*t))}}function x(e){return e}function T(e){return function(t){return Math.pow(t,e)}}function N(e){return 1-Math.cos(e*Math.PI/2)}function C(e){return Math.pow(2,10*(e-1))}function k(e){return 1-Math.sqrt(1-e*e)}function L(e,t){var n;return arguments.length<2&&(t=.45),arguments.length<1?(e=1,n=t/4):n=t/(2*Math.PI)*Math.asin(1/e),function(r){return 1+e*Math.pow(2,10*-r)*Math.sin((r-n)*2*Math.PI/t)}}function A(e){return e||(e=1.70158),function(t){return t*t*((e+1)*t-e)}}function O(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}function M(){d3.event.stopPropagation(),d3.event.preventDefault()}function _(){var e=d3.event,t;while(t=e.sourceEvent)e=t;return e}function D(e){var t=new d,n=0,r=arguments.length;while(++n<r)t[arguments[n]]=v(t);return t.of=function(n,r){return function(i){try{var s=i.sourceEvent=d3.event;i.target=e,d3.event=i,t[i.type].apply(n,r)}finally{d3.event=s}}},t}function P(e){var t=[e.a,e.b],n=[e.c,e.d],r=B(t),i=H(t,n),s=B(j(n,t,-i))||0;t[0]*n[1]<n[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-n[0],n[1]))*fs,this.translate=[e.e,e.f],this.scale=[r,s],this.skew=s?Math.atan2(i,s)*fs:0}function H(e,t){return e[0]*t[0]+e[1]*t[1]}function B(e){var t=Math.sqrt(H(e,e));return t&&(e[0]/=t,e[1]/=t),t}function j(e,t,n){return e[0]+=n*t[0],e[1]+=n*t[1],e}function F(e){return e=="transform"?d3.interpolateTransform:d3.interpolate}function I(e,t){return t=t-(e=+e)?1/(t-e):0,function(n){return(n-e)*t}}function q(e,t){return t=t-(e=+e)?1/(t-e):0,function(n){return Math.max(0,Math.min(1,(n-e)*t))}}function R(e,t,n){return new U(e,t,n)}function U(e,t,n){this.r=e,this.g=t,this.b=n}function z(e){return e<16?"0"+Math.max(0,e).toString(16):Math.min(255,e).toString(16)}function W(e,t,n){var r=0,i=0,s=0,o,u,a;o=/([a-z]+)\((.*)\)/i.exec(e);if(o){u=o[2].split(",");switch(o[1]){case"hsl":return n(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(J(u[0]),J(u[1]),J(u[2]))}}return(a=hs.get(e))?t(a.r,a.g,a.b):(e!=null&&e.charAt(0)==="#"&&(e.length===4?(r=e.charAt(1),r+=r,i=e.charAt(2),i+=i,s=e.charAt(3),s+=s):e.length===7&&(r=e.substring(1,3),i=e.substring(3,5),s=e.substring(5,7)),r=parseInt(r,16),i=parseInt(i,16),s=parseInt(s,16)),t(r,i,s))}function X(e,t,n){var r=Math.min(e/=255,t/=255,n/=255),i=Math.max(e,t,n),s=i-r,o,u,a=(i+r)/2;return s?(u=a<.5?s/(i+r):s/(2-i-r),e==i?o=(t-n)/s+(t<n?6:0):t==i?o=(n-e)/s+2:o=(e-t)/s+4,o*=60):u=o=0,K(o,u,a)}function V(e,t,n){e=$(e),t=$(t),n=$(n);var r=ot((.4124564*e+.3575761*t+.1804375*n)/ds),i=ot((.2126729*e+.7151522*t+.072175*n)/vs),s=ot((.0193339*e+.119192*t+.9503041*n)/ms);return tt(116*i-16,500*(r-i),200*(i-s))}function $(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function J(e){var t=parseFloat(e);return e.charAt(e.length-1)==="%"?Math.round(t*2.55):t}function K(e,t,n){return new Q(e,t,n)}function Q(e,t,n){this.h=e,this.s=t,this.l=n}function G(e,t,n){function r(e){return e>360?e-=360:e<0&&(e+=360),e<60?s+(o-s)*e/60:e<180?o:e<240?s+(o-s)*(240-e)/60:s}function i(e){return Math.round(r(e)*255)}var s,o;return e%=360,e<0&&(e+=360),t=t<0?0:t>1?1:t,n=n<0?0:n>1?1:n,o=n<=.5?n*(1+t):n+t-n*t,s=2*n-o,R(i(e+120),i(e),i(e-120))}function Y(e,t,n){return new Z(e,t,n)}function Z(e,t,n){this.h=e,this.c=t,this.l=n}function et(e,t,n){return tt(n,Math.cos(e*=Math.PI/180)*t,Math.sin(e)*t)}function tt(e,t,n){return new nt(e,t,n)}function nt(e,t,n){this.l=e,this.a=t,this.b=n}function rt(e,t,n){var r=(e+16)/116,i=r+t/500,s=r-n/200;return i=st(i)*ds,r=st(r)*vs,s=st(s)*ms,R(ut(3.2404542*i-1.5371385*r-.4985314*s),ut(-0.969266*i+1.8760108*r+.041556*s),ut(.0556434*i-.2040259*r+1.0572252*s))}function it(e,t,n){return Y(Math.atan2(n,t)/Math.PI*180,Math.sqrt(t*t+n*n),e)}function st(e){return e>.206893034?e*e*e:(e-4/29)/7.787037}function ot(e){return e>.008856?Math.pow(e,1/3):7.787037*e+4/29}function ut(e){return Math.round(255*(e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055))}function at(e){return Ki(e,Ss),e}function ft(e){return function(){return gs(e,this)}}function lt(e){return function(){return ys(e,this)}}function ct(e,t){function n(){this.removeAttribute(e)}function r(){this.removeAttributeNS(e.space,e.local)}function i(){this.setAttribute(e,t)}function s(){this.setAttributeNS(e.space,e.local,t)}function o(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}function u(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}return e=d3.ns.qualify(e),t==null?e.local?r:n:typeof t=="function"?e.local?u:o:e.local?s:i}function ht(e){return new RegExp("(?:^|\\s+)"+d3.requote(e)+"(?:\\s+|$)","g")}function pt(e,t){function n(){var n=-1;while(++n<i)e[n](this,t)}function r(){var n=-1,r=t.apply(this,arguments);while(++n<i)e[n](this,r)}e=e.trim().split(/\s+/).map(dt);var i=e.length;return typeof t=="function"?r:n}function dt(e){var t=ht(e);return function(n,r){if(i=n.classList)return r?i.add(e):i.remove(e);var i=n.className,s=i.baseVal!=null,o=s?i.baseVal:i;r?(t.lastIndex=0,t.test(o)||(o=h(o+" "+e),s?i.baseVal=o:n.className=o)):o&&(o=h(o.replace(t," ")),s?i.baseVal=o:n.className=o)}}function vt(e,t,n){function r(){this.style.removeProperty(e)}function i(){this.style.setProperty(e,t,n)}function s(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}return t==null?r:typeof t=="function"?s:i}function mt(e,t){function n(){delete this[e]}function r(){this[e]=t}function i(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}return t==null?n:typeof t=="function"?i:r}function gt(e){return{__data__:e}}function yt(e){return function(){return Es(this,e)}}function bt(e){return arguments.length||(e=d3.ascending),function(t,n){return e(t&&t.__data__,n&&n.__data__)}}function wt(e,t,n){function r(){var t=this[s];t&&(this.removeEventListener(e,t,t.$),delete this[s])}function i(){function i(e){var n=d3.event;d3.event=e,u[0]=o.__data__;try{t.apply(o,u)}finally{d3.event=n}}var o=this,u=arguments;r.call(this),this.addEventListener(e,this[s]=i,i.$=n),i._=t}var s="__on"+e,o=e.indexOf(".");return o>0&&(e=e.substring(0,o)),t?i:r}function Et(e,t){for(var n=0,r=e.length;n<r;n++)for(var i=e[n],s=0,o=i.length,u;s<o;s++)(u=i[s])&&t(u,s,n);return e}function St(e){return Ki(e,Ts),e}function xt(e,t,n){Ki(e,Ns);var i=new r,s=d3.dispatch("start","end"),o=Ds;return e.id=t,e.time=n,e.tween=function(t,n){return arguments.length<2?i.get(t):(n==null?i.remove(t):i.set(t,n),e)},e.ease=function(t){return arguments.length?(o=typeof t=="function"?t:d3.ease.apply(d3,arguments),e):o},e.each=function(t,n){return arguments.length<2?Tt.call(e,t):(s.on(t,n),e)},d3.timer(function(r){return Et(e,function(e,u,a){function f(r){return v.active>t?c():(v.active=t,i.forEach(function(t,n){(n=n.call(e,m,u))&&h.push(n)}),s.start.call(e,m,u),l(r)||d3.timer(l,0,n),1)}function l(n){if(v.active!==t)return c();var r=(n-p)/d,i=o(r),a=h.length;while(a>0)h[--a].call(e,i);if(r>=1)return c(),ks=t,s.end.call(e,m,u),ks=0,1}function c(){return--v.count||delete e.__transition__,1}var h=[],p=e.delay,d=e.duration,v=(e=e.node).__transition__||(e.__transition__={active:0,count:0}),m=e.__data__;++v.count,p<=r?f(r):d3.timer(f,p,n)})},0,n),e}function Tt(e){var t=ks,n=Ds,r=Ms,i=_s;return ks=this.id,Ds=this.ease(),Et(this,function(t,n,r){Ms=t.delay,_s=t.duration,e.call(t=t.node,t.__data__,n,r)}),ks=t,Ds=n,Ms=r,_s=i,this}function Nt(e,t,n){return n!=""&&Ps}function Ct(e,t){return d3.tween(e,F(t))}function kt(){var e,t=Date.now(),n=Hs;while(n)e=t-n.then,e>=n.delay&&(n.flush=n.callback(e)),n=n.next;var r=Lt()-t;r>24?(isFinite(r)&&(clearTimeout(js),js=setTimeout(kt,r)),Bs=0):(Bs=1,Fs(kt))}function Lt(){var e=null,t=Hs,n=Infinity;while(t)t.flush?t=e?e.next=t.next:Hs=t.next:(n=Math.min(n,t.then+t.delay),t=(e=t).next);return n}function At(e,t){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();if(Is<0&&(window.scrollX||window.scrollY)){n=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0);var i=n[0][0].getScreenCTM();Is=!i.f&&!i.e,n.remove()}return Is?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}var s=e.getBoundingClientRect();return[t.clientX-s.left-e.clientLeft,t.clientY-s.top-e.clientTop]}function Ot(){}function Mt(e){var t=e[0],n=e[e.length-1];return t<n?[t,n]:[n,t]}function _t(e){return e.rangeExtent?e.rangeExtent():Mt(e.range())}function Dt(e,t){var n=0,r=e.length-1,i=e[n],s=e[r],o;s<i&&(o=n,n=r,r=o,o=i,i=s,s=o);if(t=t(s-i))e[n]=t.floor(i),e[r]=t.ceil(s);return e}function Pt(){return Math}function Ht(e,t,n,r){function i(){var i=Math.min(e.length,t.length)>2?Ut:Rt,a=r?q:I;return o=i(e,t,a,n),u=i(t,e,a,d3.interpolate),s}function s(e){return o(e)}var o,u;return s.invert=function(e){return u(e)},s.domain=function(t){return arguments.length?(e=t.map(Number),i()):e},s.range=function(e){return arguments.length?(t=e,i()):t},s.rangeRound=function(e){return s.range(e).interpolate(d3.interpolateRound)},s.clamp=function(e){return arguments.length?(r=e,i()):r},s.interpolate=function(e){return arguments.length?(n=e,i()):n},s.ticks=function(t){return It(e,t)},s.tickFormat=function(t){return qt(e,t)},s.nice=function(){return Dt(e,jt),i()},s.copy=function(){return Ht(e,t,n,r)},i()}function Bt(e,t){return d3.rebind(e,t,"range","rangeRound","interpolate","clamp")}function jt(e){return e=Math.pow(10,Math.round(Math.log(e)/Math.LN10)-1),e&&{floor:function(t){return Math.floor(t/e)*e},ceil:function(t){return Math.ceil(t/e)*e}}}function Ft(e,t){var n=Mt(e),r=n[1]-n[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),s=t/r*i;return s<=.15?i*=10:s<=.35?i*=5:s<=.75&&(i*=2),n[0]=Math.ceil(n[0]/i)*i,n[1]=Math.floor(n[1]/i)*i+i*.5,n[2]=i,n}function It(e,t){return d3.range.apply(d3,Ft(e,t))}function qt(e,t){return d3.format(",."+Math.max(0,-Math.floor(Math.log(Ft(e,t)[2])/Math.LN10+.01))+"f")}function Rt(e,t,n,r){var i=n(e[0],e[1]),s=r(t[0],t[1]);return function(e){return s(i(e))}}function Ut(e,t,n,r){var i=[],s=[],o=0,u=Math.min(e.length,t.length)-1;e[u]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());while(++o<=u)i.push(n(e[o-1],e[o])),s.push(r(t[o-1],t[o]));return function(t){var n=d3.bisect(e,t,1,u)-1;return s[n](i[n](t))}}function zt(e,t){function n(n){return e(t(n))}var r=t.pow;return n.invert=function(t){return r(e.invert(t))},n.domain=function(i){return arguments.length?(t=i[0]<0?Xt:Wt,r=t.pow,e.domain(i.map(t)),n):e.domain().map(r)},n.nice=function(){return e.domain(Dt(e.domain(),Pt)),n},n.ticks=function(){var n=Mt(e.domain()),i=[];if(n.every(isFinite)){var s=Math.floor(n[0]),o=Math.ceil(n[1]),u=r(n[0]),a=r(n[1]);if(t===Xt){i.push(r(s));for(;s++<o;)for(var f=9;f>0;f--)i.push(r(s)*f)}else{for(;s<o;s++)for(var f=1;f<10;f++)i.push(r(s)*f);i.push(r(s))}for(s=0;i[s]<u;s++);for(o=i.length;i[o-1]>a;o--);i=i.slice(s,o)}return i},n.tickFormat=function(e,i){arguments.length<2&&(i=qs);if(arguments.length<1)return i;var s=Math.max(.1,e/n.ticks().length),o=t===Xt?(u=-1e-12,Math.floor):(u=1e-12,Math.ceil),u;return function(e){return e/r(o(t(e)+u))<=s?i(e):""}},n.copy=function(){return zt(e.copy(),t)},Bt(n,e)}function Wt(e){return Math.log(e<0?0:e)/Math.LN10}function Xt(e){return-Math.log(e>0?0:-e)/Math.LN10}function Vt(e,t){function n(t){return e(r(t))}var r=$t(t),i=$t(1/t);return n.invert=function(t){return i(e.invert(t))},n.domain=function(t){return arguments.length?(e.domain(t.map(r)),n):e.domain().map(i)},n.ticks=function(e){return It(n.domain(),e)},n.tickFormat=function(e){return qt(n.domain(),e)},n.nice=function(){return n.domain(Dt(n.domain(),jt))},n.exponent=function(e){if(!arguments.length)return t;var s=n.domain();return r=$t(t=e),i=$t(1/t),n.domain(s)},n.copy=function(){return Vt(e.copy(),t)},Bt(n,e)}function $t(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Jt(e,t){function n(t){return o[((s.get(t)||s.set(t,e.push(t)))-1)%o.length]}function i(t,n){return d3.range(e.length).map(function(e){return t+n*e})}var s,o,u;return n.domain=function(i){if(!arguments.length)return e;e=[],s=new r;var o=-1,u=i.length,a;while(++o<u)s.has(a=i[o])||s.set(a,e.push(a));return n[t.t].apply(n,t.a)},n.range=function(e){return arguments.length?(o=e,u=0,t={t:"range",a:arguments},n):o},n.rangePoints=function(r,s){arguments.length<2&&(s=0);var a=r[0],f=r[1],l=(f-a)/(Math.max(1,e.length-1)+s);return o=i(e.length<2?(a+f)/2:a+l*s/2,l),u=0,t={t:"rangePoints",a:arguments},n},n.rangeBands=function(r,s,a){arguments.length<2&&(s=0),arguments.length<3&&(a=s);var f=r[1]<r[0],l=r[f-0],c=r[1-f],h=(c-l)/(e.length-s+2*a);return o=i(l+h*a,h),f&&o.reverse(),u=h*(1-s),t={t:"rangeBands",a:arguments},n},n.rangeRoundBands=function(r,s,a){arguments.length<2&&(s=0),arguments.length<3&&(a=s);var f=r[1]<r[0],l=r[f-0],c=r[1-f],h=Math.floor((c-l)/(e.length-s+2*a)),p=c-l-(e.length-s)*h;return o=i(l+Math.round(p/2),h),f&&o.reverse(),u=Math.round(h*(1-s)),t={t:"rangeRoundBands",a:arguments},n},n.rangeBand=function(){return u},n.rangeExtent=function(){return Mt(t.a[0])},n.copy=function(){return Jt(e,t)},n.domain(e)}function Kt(e,t){function n(){var n=0,s=e.length,o=t.length;i=[];while(++n<o)i[n-1]=d3.quantile(e,n/o);return r}function r(e){return isNaN(e=+e)?NaN:t[d3.bisect(i,e)]}var i;return r.domain=function(t){return arguments.length?(e=t.filter(function(e){return!isNaN(e)}).sort(d3.ascending),n()):e},r.range=function(e){return arguments.length?(t=e,n()):t},r.quantiles=function(){return i},r.copy=function(){return Kt(e,t)},n()}function Qt(e,t,n){function r(t){return n[Math.max(0,Math.min(o,Math.floor(s*(t-e))))]}function i(){return s=n.length/(t-e),o=n.length-1,r}var s,o;return r.domain=function(n){return arguments.length?(e=+n[0],t=+n[n.length-1],i()):[e,t]},r.range=function(e){return arguments.length?(n=e,i()):n},r.copy=function(){return Qt(e,t,n)},i()}function Gt(e,t){function n(n){return t[d3.bisect(e,n)]}return n.domain=function(t){return arguments.length?(e=t,n):e},n.range=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Gt(e,t)},n}function Yt(e){function t(e){return+e}return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=n.map(t),t):e},t.ticks=function(t){return It(e,t)},t.tickFormat=function(t){return qt(e,t)},t.copy=function(){return Yt(e)},t}function Zt(e){return e.innerRadius}function en(e){return e.outerRadius}function tn(e){return e.startAngle}function nn(e){return e.endAngle}function rn(e){function t(t){function o(){a.push("M",s(e(l),f))}var a=[],l=[],c=-1,h=t.length,p,d=u(n),v=u(r);while(++c<h)i.call(this,p=t[c],c)?l.push([+d.call(this,p,c),+v.call(this,p,c)]):l.length&&(o(),l=[]);return l.length&&o(),a.length?a.join(""):null}var n=sn,r=on,i=o,s=un,a=s.key,f=.7;return t.x=function(e){return arguments.length?(n=e,t):n},t.y=function(e){return arguments.length?(r=e,t):r},t.defined=function(e){return arguments.length?(i=e,t):i},t.interpolate=function(e){return arguments.length?(typeof e=="function"?a=s=e:a=(s=$s.get(e)||un).key,t):a},t.tension=function(e){return arguments.length?(f=e,t):f},t}function sn(e){return e[0]}function on(e){return e[1]}function un(e){return e.join("L")}function an(e){return un(e)+"Z"}function fn(e){var t=0,n=e.length,r=e[0],i=[r[0],",",r[1]];while(++t<n)i.push("V",(r=e[t])[1],"H",r[0]);return i.join("")}function ln(e){var t=0,n=e.length,r=e[0],i=[r[0],",",r[1]];while(++t<n)i.push("H",(r=e[t])[0],"V",r[1]);return i.join("")}function cn(e,t){return e.length<4?un(e):e[1]+dn(e.slice(1,e.length-1),vn(e,t))}function hn(e,t){return e.length<3?un(e):e[0]+dn((e.push(e[0]),e),vn([e[e.length-2]].concat(e,[e[1]]),t))}function pn(e,t,n){return e.length<3?un(e):e[0]+dn(e,vn(e,t))}function dn(e,t){if(t.length<1||e.length!=t.length&&e.length!=t.length+2)return un(e);var n=e.length!=t.length,r="",i=e[0],s=e[1],o=t[0],u=o,a=1;n&&(r+="Q"+(s[0]-o[0]*2/3)+","+(s[1]-o[1]*2/3)+","+s[0]+","+s[1],i=e[1],a=2);if(t.length>1){u=t[1],s=e[a],a++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(s[0]-u[0])+","+(s[1]-u[1])+","+s[0]+","+s[1];for(var f=2;f<t.length;f++,a++)s=e[a],u=t[f],r+="S"+(s[0]-u[0])+","+(s[1]-u[1])+","+s[0]+","+s[1]}if(n){var l=e[a];r+="Q"+(s[0]+u[0]*2/3)+","+(s[1]+u[1]*2/3)+","+l[0]+","+l[1]}return r}function vn(e,t){var n=[],r=(1-t)/2,i,s=e[0],o=e[1],u=1,a=e.length;while(++u<a)i=s,s=o,o=e[u],n.push([r*(o[0]-i[0]),r*(o[1]-i[1])]);return n}function mn(e){if(e.length<3)return un(e);var t=1,n=e.length,r=e[0],i=r[0],s=r[1],o=[i,i,i,(r=e[1])[0]],u=[s,s,s,r[1]],a=[i,",",s];En(a,o,u);while(++t<n)r=e[t],o.shift(),o.push(r[0]),u.shift(),u.push(r[1]),En(a,o,u);t=-1;while(++t<2)o.shift(),o.push(r[0]),u.shift(),u.push(r[1]),En(a,o,u);return a.join("")}function gn(e){if(e.length<4)return un(e);var t=[],n=-1,r=e.length,i,s=[0],o=[0];while(++n<3)i=e[n],s.push(i[0]),o.push(i[1]);t.push(wn(Qs,s)+","+wn(Qs,o)),--n;while(++n<r)i=e[n],s.shift(),s.push(i[0]),o.shift(),o.push(i[1]),En(t,s,o);return t.join("")}function yn(e){var t,n=-1,r=e.length,i=r+4,s,o=[],u=[];while(++n<4)s=e[n%r],o.push(s[0]),u.push(s[1]);t=[wn(Qs,o),",",wn(Qs,u)],--n;while(++n<i)s=e[n%r],o.shift(),o.push(s[0]),u.shift(),u.push(s[1]),En(t,o,u);return t.join("")}function bn(e,t){var n=e.length-1;if(n){var r=e[0][0],i=e[0][1],s=e[n][0]-r,o=e[n][1]-i,u=-1,a,f;while(++u<=n)a=e[u],f=u/n,a[0]=t*a[0]+(1-t)*(r+f*s),a[1]=t*a[1]+(1-t)*(i+f*o)}return mn(e)}function wn(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function En(e,t,n){e.push("C",wn(Js,t),",",wn(Js,n),",",wn(Ks,t),",",wn(Ks,n),",",wn(Qs,t),",",wn(Qs,n))}function Sn(e,t){return(t[1]-e[1])/(t[0]-e[0])}function xn(e){var t=0,n=e.length-1,r=[],i=e[0],s=e[1],o=r[0]=Sn(i,s);while(++t<n)r[t]=(o+(o=Sn(i=s,s=e[t+1])))/2;return r[t]=o,r}function Tn(e){var t=[],n,r,i,s,o=xn(e),u=-1,a=e.length-1;while(++u<a)n=Sn(e[u],e[u+1]),Math.abs(n)<1e-6?o[u]=o[u+1]=0:(r=o[u]/n,i=o[u+1]/n,s=r*r+i*i,s>9&&(s=n*3/Math.sqrt(s),o[u]=s*r,o[u+1]=s*i));u=-1;while(++u<=a)s=(e[Math.min(a,u+1)][0]-e[Math.max(0,u-1)][0])/(6*(1+o[u]*o[u])),t.push([s||0,o[u]*s||0]);return t}function Nn(e){return e.length<3?un(e):e[0]+dn(e,Tn(e))}function Cn(e){var t,n=-1,r=e.length,i,s;while(++n<r)t=e[n],i=t[0],s=t[1]+Xs,t[0]=i*Math.cos(s),t[1]=i*Math.sin(s);return e}function kn(e){function t(t){function o(){l.push("M",f(e(v),p),h,c(e(d.reverse()),p),"Z")}var l=[],d=[],v=[],m=-1,g=t.length,y,b=u(n),w=u(i),E=n===r?function(){return x}:u(r),S=i===s?function(){return T}:u(s),x,T;while(++m<g)a.call(this,y=t[m],m)?(d.push([x=+b.call(this,y,m),T=+w.call(this,y,m)]),v.push([+E.call(this,y,m),+S.call(this,y,m)])):d.length&&(o(),d=[],v=[]);return d.length&&o(),l.length?l.join(""):null}var n=sn,r=sn,i=0,s=on,a=o,f=un,l=f.key,c=f,h="L",p=.7;return t.x=function(e){return arguments.length?(n=r=e,t):r},t.x0=function(e){return arguments.length?(n=e,t):n},t.x1=function(e){return arguments.length?(r=e,t):r},t.y=function(e){return arguments.length?(i=s=e,t):s},t.y0=function(e){return arguments.length?(i=e,t):i},t.y1=function(e){return arguments.length?(s=e,t):s},t.defined=function(e){return arguments.length?(a=e,t):a},t.interpolate=function(e){return arguments.length?(typeof e=="function"?l=f=e:l=(f=$s.get(e)||un).key,c=f.reverse||f,h=f.closed?"M":"L",t):l},t.tension=function(e){return arguments.length?(p=e,t):p},t}function Ln(e){return e.source}function An(e){return e.target}function On(e){return e.radius}function Mn(e){return e.startAngle}function _n(e){return e.endAngle}function Dn(e){return[e.x,e.y]}function Pn(e){return function(){var t=e.apply(this,arguments),n=t[0],r=t[1]+Xs;return[n*Math.cos(r),n*Math.sin(r)]}}function Hn(){return 64}function Bn(){return"circle"}function jn(e){var t=Math.sqrt(e/Math.PI);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+ -t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Fn(e,t){e.attr("transform",function(e){return"translate("+t(e)+",0)"})}function In(e,t){e.attr("transform",function(e){return"translate(0,"+t(e)+")"})}function qn(e,t,n){i=[];if(n&&t.length>1){var r=Mt(e.domain()),i,s=-1,o=t.length,u=(t[1]-t[0])/++n,a,f;while(++s<o)for(a=n;--a>0;)(f=+t[s]-a*u)>=r[0]&&i.push(f);for(--s,a=0;++a<n&&(f=+t[s]+a*u)<r[1];)i.push(f)}return i}function Rn(){no||(no=d3.select("body").append("div").style("visibility","hidden").style("top",0).style("height",0).style("width",0).style("overflow-y","scroll").append("div").style("height","2000px").node().parentNode);var e=d3.event,t;try{no.scrollTop=1e3,no.dispatchEvent(e),t=1e3-no.scrollTop}catch(n){t=e.wheelDelta||-e.detail*5}return t}function Un(e){var t=e.source,n=e.target,r=Wn(t,n),i=[t];while(t!==r)t=t.parent,i.push(t);var s=i.length;while(n!==r)i.splice(s,0,n),n=n.parent;return i}function zn(e){var t=[],n=e.parent;while(n!=null)t.push(e),e=n,n=n.parent;return t.push(e),t}function Wn(e,t){if(e===t)return e;var n=zn(e),r=zn(t),i=n.pop(),s=r.pop(),o=null;while(i===s)o=i,i=n.pop(),s=r.pop();return o}function Xn(e){e.fixed|=2}function Vn(e){e.fixed&=1}function $n(e){e.fixed|=4}function Jn(e){e.fixed&=3}function Kn(e,t,n){var r=0,i=0;e.charge=0;if(!e.leaf){var s=e.nodes,o=s.length,u=-1,a;while(++u<o){a=s[u];if(a==null)continue;Kn(a,t,n),e.charge+=a.charge,r+=a.charge*a.cx,i+=a.charge*a.cy}}if(e.point){e.leaf||(e.point.x+=Math.random()-.5,e.point.y+=Math.random()-.5);var f=t*n[e.point.index];e.charge+=e.pointCharge=f,r+=f*e.point.x,i+=f*e.point.y}e.cx=r/e.charge,e.cy=i/e.charge}function Qn(e){return 20}function Gn(e){return 1}function Yn(e){return e.x}function Zn(e){return e.y}function er(e,t,n){e.y0=t,e.y=n}function tr(e){return d3.range(e.length)}function nr(e){var t=-1,n=e[0].length,r=[];while(++t<n)r[t]=0;return r}function rr(e){var t=1,n=0,r=e[0][1],i,s=e.length;for(;t<s;++t)(i=e[t][1])>r&&(n=t,r=i);return n}function ir(e){return e.reduce(sr,0)}function sr(e,t){return e+t[1]}function or(e,t){return ur(e,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ur(e,t){var n=-1,r=+e[0],i=(e[1]-r)/t,s=[];while(++n<=t)s[n]=i*n+r;return s}function ar(e){return[d3.min(e),d3.max(e)]}function fr(e,t){return d3.rebind(e,t,"sort","children","value"),e.links=pr,e.nodes=function(t){return uo=!0,(e.nodes=e)(t)},e}function lr(e){return e.children}function cr(e){return e.value}function hr(e,t){return t.value-e.value}function pr(e){return d3.merge(e.map(function(e){return(e.children||[]).map(function(t){return{source:e,target:t}})}))}function dr(e,t){return e.value-t.value}function vr(e,t){var n=e._pack_next;e._pack_next=t,t._pack_prev=e,t._pack_next=n,n._pack_prev=t}function mr(e,t){e._pack_next=t,t._pack_prev=e}function gr(e,t){var n=t.x-e.x,r=t.y-e.y,i=e.r+t.r;return i*i-n*n-r*r>.001}function yr(e){function t(e){r=Math.min(e.x-e.r,r),i=Math.max(e.x+e.r,i),s=Math.min(e.y-e.r,s),o=Math.max(e.y+e.r,o)}if(!(n=e.children)||!(p=n.length))return;var n,r=Infinity,i=-Infinity,s=Infinity,o=-Infinity,u,a,f,l,c,h,p;n.forEach(br),u=n[0],u.x=-u.r,u.y=0,t(u);if(p>1){a=n[1],a.x=a.r,a.y=0,t(a);if(p>2){f=n[2],Sr(u,a,f),t(f),vr(u,f),u._pack_prev=f,vr(f,a),a=u._pack_next;for(l=3;l<p;l++){Sr(u,a,f=n[l]);var d=0,v=1,m=1;for(c=a._pack_next;c!==a;c=c._pack_next,v++)if(gr(c,f)){d=1;break}if(d==1)for(h=u._pack_prev;h!==c._pack_prev;h=h._pack_prev,m++)if(gr(h,f))break;d?(v<m||v==m&&a.r<u.r?mr(u,a=c):mr(u=h,a),l--):(vr(u,f),a=f,t(f))}}}var g=(r+i)/2,y=(s+o)/2,b=0;for(l=0;l<p;l++)f=n[l],f.x-=g,f.y-=y,b=Math.max(b,f.r+Math.sqrt(f.x*f.x+f.y*f.y));e.r=b,n.forEach(wr)}function br(e){e._pack_next=e._pack_prev=e}function wr(e){delete e._pack_next,delete e._pack_prev}function Er(e,t,n,r){var i=e.children;e.x=t+=r*e.x,e.y=n+=r*e.y,e.r*=r;if(i){var s=-1,o=i.length;while(++s<o)Er(i[s],t,n,r)}}function Sr(e,t,n){var r=e.r+n.r,i=t.x-e.x,s=t.y-e.y;if(r&&(i||s)){var o=t.r+n.r,u=i*i+s*s;o*=o,r*=r;var a=.5+(r-o)/(2*u),f=Math.sqrt(Math.max(0,2*o*(r+u)-(r-=u)*r-o*o))/(2*u);n.x=e.x+a*i+f*s,n.y=e.y+a*s-f*i}else n.x=e.x+r,n.y=e.y}function xr(e){return 1+d3.max(e,function(e){return e.y})}function Tr(e){return e.reduce(function(e,t){return e+t.x},0)/e.length}function Nr(e){var t=e.children;return t&&t.length?Nr(t[0]):e}function Cr(e){var t=e.children,n;return t&&(n=t.length)?Cr(t[n-1]):e}function kr(e,t){return e.parent==t.parent?1:2}function Lr(e){var t=e.children;return t&&t.length?t[0]:e._tree.thread}function Ar(e){var t=e.children,n;return t&&(n=t.length)?t[n-1]:e._tree.thread}function Or(e,t){var n=e.children;if(n&&(i=n.length)){var r,i,s=-1;while(++s<i)t(r=Or(n[s],t),e)>0&&(e=r)}return e}function Mr(e,t){return e.x-t.x}function _r(e,t){return t.x-e.x}function Dr(e,t){return e.depth-t.depth}function Pr(e,t){function n(e,r){var i=e.children;if(i&&(a=i.length)){var s,o=null,u=-1,a;while(++u<a)s=i[u],n(s,o),o=s}t(e,r)}n(e,null)}function Hr(e){var t=0,n=0,r=e.children,i=r.length,s;while(--i>=0)s=r[i]._tree,s.prelim+=t,s.mod+=t,t+=s.shift+(n+=s.change)}function Br(e,t,n){e=e._tree,t=t._tree;var r=n/(t.number-e.number);e.change+=r,t.change-=r,t.shift+=n,t.prelim+=n,t.mod+=n}function jr(e,t,n){return e._tree.ancestor.parent==t.parent?e._tree.ancestor:n}function Fr(e){return{x:e.x,y:e.y,dx:e.dx,dy:e.dy}}function Ir(e,t){var n=e.x+t[3],r=e.y+t[0],i=e.dx-t[1]-t[3],s=e.dy-t[0]-t[2];return i<0&&(n+=i/2,i=0),s<0&&(r+=s/2,s=0),{x:n,y:r,dx:i,dy:s}}function qr(e,t){function n(e,r){d3.text(e,t,function(e){r(e&&n.parse(e))})}function r(t){return t.map(i).join(e)}function i(e){return o.test(e)?'"'+e.replace(/\"/g,'""')+'"':e}var s=new RegExp("\r\n|["+e+"\r\n]","g"),o=new RegExp('["'+e+"\n]"),u=e.charCodeAt(0);return n.parse=function(e){var t;return n.parseRows(e,function(e,n){if(n){var r={},i=-1,s=t.length;while(++i<s)r[t[i]]=e[i];return r}return t=e,null})},n.parseRows=function(e,t){function n(){if(s.lastIndex>=e.length)return i;if(l)return l=!1,r;var t=s.lastIndex;if(e.charCodeAt(t)===34){var n=t;while(n++<e.length)if(e.charCodeAt(n)===34){if(e.charCodeAt(n+1)!==34)break;n++}s.lastIndex=n+2;var o=e.charCodeAt(n+1);return o===13?(l=!0,e.charCodeAt(n+2)===10&&s.lastIndex++):o===10&&(l=!0),e.substring(t+1,n).replace(/""/g,'"')}var a=s.exec(e);return a?(l=a[0].charCodeAt(0)!==u,e.substring(t,a.index)):(s.lastIndex=e.length,e.substring(t))}var r={},i={},o=[],a=0,f,l;s.lastIndex=0;while((f=n())!==i){var c=[];while(f!==r&&f!==i)c.push(f),f=n();if(t&&!(c=t(c,a++)))continue;o.push(c)}return o},n.format=function(e){return e.map(r).join("\n")},n}function Rr(e,t){return function(n){return n&&e.hasOwnProperty(n.type)?e[n.type](n):t}}function Ur(e){return"m0,"+e+"a"+e+","+e+" 0 1,1 0,"+ -2*e+"a"+e+","+e+" 0 1,1 0,"+2*e+"z"}function zr(e,t){fo.hasOwnProperty(e.type)&&fo[e.type](e,t)}function Wr(e,t){zr(e.geometry,t)}function Xr(e,t){for(var n=e.features,r=0,i=n.length;r<i;r++)zr(n[r].geometry,t)}function Vr(e,t){for(var n=e.geometries,r=0,i=n.length;r<i;r++)zr(n[r],t)}function $r(e,t){for(var n=e.coordinates,r=0,i=n.length;r<i;r++)t.apply(null,n[r])}function Jr(e,t){for(var n=e.coordinates,r=0,i=n.length;r<i;r++)for(var s=n[r],o=0,u=s.length;o<u;o++)t.apply(null,s[o])}function Kr(e,t){for(var n=e.coordinates,r=0,i=n.length;r<i;r++)for(var s=n[r][0],o=0,u=s.length;o<u;o++)t.apply(null,s[o])}function Qr(e,t){t.apply(null,e.coordinates)}function Gr(e,t){for(var n=e.coordinates[0],r=0,i=n.length;r<i;r++)t.apply(null,n[r])}function Yr(e){return e.source}function Zr(e){return e.target}function ei(){function e(e){var t=Math.sin(e*=p)*d,n=Math.sin(p-e)*d,r=n*s+t*c,u=n*o+t*h,a=n*i+t*l;return[Math.atan2(u,r)/ao,Math.atan2(a,Math.sqrt(r*r+u*u))/ao]}var t,n,r,i,s,o,u,a,f,l,c,h,p,d;return e.distance=function(){return p==null&&(d=1/Math.sin(p=Math.acos(Math.max(-1,Math.min(1,i*l+r*f*Math.cos(u-t)))))),p},e.source=function(u){var a=Math.cos(t=u[0]*ao),f=Math.sin(t);return r=Math.cos(n=u[1]*ao),i=Math.sin(n),s=r*a,o=r*f,p=null,e},e.target=function(t){var n=Math.cos(u=t[0]*ao),r=Math.sin(u);return f=Math.cos(a=t[1]*ao),l=Math.sin(a),c=f*n,h=f*r,p=null,e},e}function ti(e,t){var n=ei().source(e).target(t);return n.distance(),n}function ni(e){var t=0,n=0;for(;;){if(e(t,n))return[t,n];t===0?(t=n+1,n=0):(t-=1,n+=1)}}function ri(e,t,n,r){var i,s,o,u,a,f,l;return i=r[e],s=i[0],o=i[1],i=r[t],u=i[0],a=i[1],i=r[n],f=i[0],l=i[1],(l-o)*(u-s)-(a-o)*(f-s)>0}function ii(e,t,n){return(n[0]-t[0])*(e[1]-t[1])<(n[1]-t[1])*(e[0]-t[0])}function si(e,t,n,r){var i=e[0],s=t[0],o=n[0],u=r[0],a=e[1],f=t[1],l=n[1],c=r[1],h=i-o,p=s-i,d=u-o,v=a-l,m=f-a,g=c-l,y=(d*v-g*h)/(g*p-d*m);return[i+y*p,a+y*m]}function oi(e,t){var n={list:e.map(function(e,t){return{index:t,x:e[0],y:e[1]}}).sort(function(e,t){return e.y<t.y?-1:e.y>t.y?1:e.x<t.x?-1:e.x>t.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(e,t){return{edge:e,side:t,vertex:null,l:null,r:null}},insert:function(e,t){t.l=e,t.r=e.r,e.r.l=t,e.r=t},leftBound:function(e){var t=r.leftEnd;do t=t.r;while(t!=r.rightEnd&&i.rightOf(t,e));return t=t.l,t},del:function(e){e.l.r=e.r,e.r.l=e.l,e.edge=null},right:function(e){return e.r},left:function(e){return e.l},leftRegion:function(e){return e.edge==null?n.bottomSite:e.edge.region[e.side]},rightRegion:function(e){return e.edge==null?n.bottomSite:e.edge.region[ho[e.side]]}},i={bisect:function(e,t){var n={region:{l:e,r:t},ep:{l:null,r:null}},r=t.x-e.x,i=t.y-e.y,s=r>0?r:-r,o=i>0?i:-i;return n.c=e.x*r+e.y*i+(r*r+i*i)*.5,s>o?(n.a=1,n.b=i/r,n.c/=r):(n.b=1,n.a=r/i,n.c/=i),n},intersect:function(e,t){var n=e.edge,r=t.edge;if(!n||!r||n.region.r==r.region.r)return null;var i=n.a*r.b-n.b*r.a;if(Math.abs(i)<1e-10)return null;var s=(n.c*r.b-r.c*n.b)/i,o=(r.c*n.a-n.c*r.a)/i,u=n.region.r,a=r.region.r,f,l;u.y<a.y||u.y==a.y&&u.x<a.x?(f=e,l=n):(f=t,l=r);var c=s>=l.region.r.x;return c&&f.side==="l"||!c&&f.side==="r"?null:{x:s,y:o}},rightOf:function(e,t){var n=e.edge,r=n.region.r,i=t.x>r.x;if(i&&e.side==="l")return 1;if(!i&&e.side==="r")return 0;if(n.a===1){var s=t.y-r.y,o=t.x-r.x,u=0,a=0;!i&&n.b<0||i&&n.b>=0?a=u=s>=n.b*o:(a=t.x+t.y*n.b>n.c,n.b<0&&(a=!a),a||(u=1));if(!u){var f=r.x-n.region.l.x;a=n.b*(o*o-s*s)<f*s*(1+2*o/f+n.b*n.b),n.b<0&&(a=!a)}}else{var l=n.c-n.a*t.x,c=t.y-l,h=t.x-r.x,p=l-r.y;a=c*c>h*h+p*p}return e.side==="l"?a:!a},endPoint:function(e,n,r){e.ep[n]=r;if(!e.ep[ho[n]])return;t(e)},distance:function(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}},s={list:[],insert:function(e,t,n){e.vertex=t,e.ystar=t.y+n;for(var r=0,i=s.list,o=i.length;r<o;r++){var u=i[r];if(e.ystar>u.ystar||e.ystar==u.ystar&&t.x>u.vertex.x)continue;break}i.splice(r,0,e)},del:function(e){for(var t=0,n=s.list,r=n.length;t<r&&n[t]!=e;++t);n.splice(t,1)},empty:function(){return s.list.length===0},nextEvent:function(e){for(var t=0,n=s.list,r=n.length;t<r;++t)if(n[t]==e)return n[t+1];return null},min:function(){var e=s.list[0];return{x:e.vertex.x,y:e.ystar}},extractMin:function(){return s.list.shift()}};r.init(),n.bottomSite=n.list.shift();var o=n.list.shift(),u,a,f,l,c,h,p,d,v,m,g,y,b;for(;;){s.empty()||(u=s.min());if(o&&(s.empty()||o.y<u.y||o.y==u.y&&o.x<u.x))a=r.leftBound(o),f=r.right(a),p=r.rightRegion(a),y=i.bisect(p,o),h=r.createHalfEdge(y,"l"),r.insert(a,h),m=i.intersect(a,h),m&&(s.del(a),s.insert(a,m,i.distance(m,o))),a=h,h=r.createHalfEdge(y,"r"
+),r.insert(a,h),m=i.intersect(h,f),m&&s.insert(h,m,i.distance(m,o)),o=n.list.shift();else{if(!!s.empty())break;a=s.extractMin(),l=r.left(a),f=r.right(a),c=r.right(f),p=r.leftRegion(a),d=r.rightRegion(f),g=a.vertex,i.endPoint(a.edge,a.side,g),i.endPoint(f.edge,f.side,g),r.del(a),s.del(f),r.del(f),b="l",p.y>d.y&&(v=p,p=d,d=v,b="r"),y=i.bisect(p,d),h=r.createHalfEdge(y,b),r.insert(l,h),i.endPoint(y,ho[b],g),m=i.intersect(l,h),m&&(s.del(l),s.insert(l,m,i.distance(m,p))),m=i.intersect(h,c),m&&s.insert(h,m,i.distance(m,p))}}for(a=r.right(r.leftEnd);a!=r.rightEnd;a=r.right(a))t(a.edge)}function ui(){return{leaf:!0,nodes:[],point:null}}function ai(e,t,n,r,i,s){if(!e(t,n,r,i,s)){var o=(n+i)*.5,u=(r+s)*.5,a=t.nodes;a[0]&&ai(e,a[0],n,r,o,u),a[1]&&ai(e,a[1],o,r,i,u),a[2]&&ai(e,a[2],n,u,o,s),a[3]&&ai(e,a[3],o,u,i,s)}}function fi(e){return{x:e[0],y:e[1]}}function li(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function ci(e){return e.substring(0,3)}function hi(e,t,n,r){var i,s,o=0,u=t.length,a=n.length;while(o<u){if(r>=a)return-1;i=t.charCodeAt(o++);if(i==37){s=Ho[t.charAt(o++)];if(!s||(r=s(e,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function pi(e){return new RegExp("^(?:"+e.map(d3.requote).join("|")+")","i")}function di(e){var t=new r,n=-1,i=e.length;while(++n<i)t.set(e[n].toLowerCase(),n);return t}function vi(e,t,n){Ao.lastIndex=0;var r=Ao.exec(t.substring(n));return r?n+=r[0].length:-1}function mi(e,t,n){Lo.lastIndex=0;var r=Lo.exec(t.substring(n));return r?n+=r[0].length:-1}function gi(e,t,n){_o.lastIndex=0;var r=_o.exec(t.substring(n));return r?(e.m=Do.get(r[0].toLowerCase()),n+=r[0].length):-1}function yi(e,t,n){Oo.lastIndex=0;var r=Oo.exec(t.substring(n));return r?(e.m=Mo.get(r[0].toLowerCase()),n+=r[0].length):-1}function bi(e,t,n){return hi(e,Po.c.toString(),t,n)}function wi(e,t,n){return hi(e,Po.x.toString(),t,n)}function Ei(e,t,n){return hi(e,Po.X.toString(),t,n)}function Si(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+4));return r?(e.y=+r[0],n+=r[0].length):-1}function xi(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.y=Ti(+r[0]),n+=r[0].length):-1}function Ti(e){return e+(e>68?1900:2e3)}function Ni(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.m=r[0]-1,n+=r[0].length):-1}function Ci(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.d=+r[0],n+=r[0].length):-1}function ki(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.H=+r[0],n+=r[0].length):-1}function Li(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.M=+r[0],n+=r[0].length):-1}function Ai(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+2));return r?(e.S=+r[0],n+=r[0].length):-1}function Oi(e,t,n){Bo.lastIndex=0;var r=Bo.exec(t.substring(n,n+3));return r?(e.L=+r[0],n+=r[0].length):-1}function Mi(e,t,n){var r=jo.get(t.substring(n,n+=2).toLowerCase());return r==null?-1:(e.p=r,n)}function _i(e){var t=e.getTimezoneOffset(),n=t>0?"-":"+",r=~~(Math.abs(t)/60),i=Math.abs(t)%60;return n+To(r)+To(i)}function Di(e){return e.toISOString()}function Pi(e,t,n){function r(t){var n=e(t),r=s(n,1);return t-n<r-t?n:r}function i(n){return t(n=e(new po(n-1)),1),n}function s(e,n){return t(e=new po(+e),n),e}function o(e,r,s){var o=i(e),u=[];if(s>1)while(o<r)n(o)%s||u.push(new Date(+o)),t(o,1);else while(o<r)u.push(new Date(+o)),t(o,1);return u}function u(e,t,n){try{po=li;var r=new li;return r._=e,o(r,t,n)}finally{po=Date}}e.floor=e,e.round=r,e.ceil=i,e.offset=s,e.range=o;var a=e.utc=Hi(e);return a.floor=a,a.round=Hi(r),a.ceil=Hi(i),a.offset=Hi(s),a.range=u,e}function Hi(e){return function(t,n){try{po=li;var r=new li;return r._=t,e(r,n)._}finally{po=Date}}}function Bi(e,t,n){function r(t){return e(t)}return r.invert=function(t){return Fi(e.invert(t))},r.domain=function(t){return arguments.length?(e.domain(t),r):e.domain().map(Fi)},r.nice=function(e){return r.domain(Dt(r.domain(),function(){return e}))},r.ticks=function(n,i){var s=ji(r.domain());if(typeof n!="function"){var o=s[1]-s[0],u=o/n,a=d3.bisect(Io,u);if(a==Io.length)return t.year(s,n);if(!a)return e.ticks(n).map(Fi);Math.log(u/Io[a-1])<Math.log(Io[a]/u)&&--a,n=t[a],i=n[1],n=n[0].range}return n(s[0],new Date(+s[1]+1),i)},r.tickFormat=function(){return n},r.copy=function(){return Bi(e.copy(),t,n)},d3.rebind(r,e,"range","rangeRound","interpolate","clamp")}function ji(e){var t=e[0],n=e[e.length-1];return t<n?[t,n]:[n,t]}function Fi(e){return new Date(e)}function Ii(e){return function(t){var n=e.length-1,r=e[n];while(!r[1](t))r=e[--n];return r[0](t)}}function qi(e){var t=new Date(e,0,1);return t.setFullYear(e),t}function Ri(e){var t=e.getFullYear(),n=qi(t),r=qi(t+1);return t+(e-n)/(r-n)}function Ui(e){var t=new Date(Date.UTC(e,0,1));return t.setUTCFullYear(e),t}function zi(e){var t=e.getUTCFullYear(),n=Ui(t),r=Ui(t+1);return t+(e-n)/(r-n)}Date.now||(Date.now=function(){return+(new Date)});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(Wi){var Xi=CSSStyleDeclaration.prototype,Vi=Xi.setProperty;Xi.setProperty=function(e,t,n){Vi.call(this,e,t+"",n)}}d3={version:"2.10.2"};var $i=n;try{$i(document.documentElement.childNodes)[0].nodeType}catch(Ji){$i=t}var Ki=[].__proto__?function(e,t){e.__proto__=t}:function(e,t){for(var n in t)e[n]=t[n]};d3.map=function(e){var t=new r;for(var n in e)t.set(n,e[n]);return t},e(r,{has:function(e){return Qi+e in this},get:function(e){return this[Qi+e]},set:function(e,t){return this[Qi+e]=t},remove:function(e){return e=Qi+e,e in this&&delete this[e]},keys:function(){var e=[];return this.forEach(function(t){e.push(t)}),e},values:function(){var e=[];return this.forEach(function(t,n){e.push(n)}),e},entries:function(){var e=[];return this.forEach(function(t,n){e.push({key:t,value:n})}),e},forEach:function(e){for(var t in this)t.charCodeAt(0)===Gi&&e.call(this,t.substring(1),this[t])}});var Qi="\0",Gi=Qi.charCodeAt(0);d3.functor=u,d3.rebind=function(e,t){var n=1,r=arguments.length,i;while(++n<r)e[i=arguments[n]]=a(e,t,t[i]);return e},d3.ascending=function(e,t){return e<t?-1:e>t?1:e>=t?0:NaN},d3.descending=function(e,t){return t<e?-1:t>e?1:t>=e?0:NaN},d3.mean=function(e,t){var n=e.length,r,i=0,s=-1,o=0;if(arguments.length===1)while(++s<n)f(r=e[s])&&(i+=(r-i)/++o);else while(++s<n)f(r=t.call(e,e[s],s))&&(i+=(r-i)/++o);return o?i:undefined},d3.median=function(e,t){return arguments.length>1&&(e=e.map(t)),e=e.filter(f),e.length?d3.quantile(e.sort(d3.ascending),.5):undefined},d3.min=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++n<r&&((i=e[n])==null||i!=i))i=undefined;while(++n<r)(s=e[n])!=null&&i>s&&(i=s)}else{while(++n<r&&((i=t.call(e,e[n],n))==null||i!=i))i=undefined;while(++n<r)(s=t.call(e,e[n],n))!=null&&i>s&&(i=s)}return i},d3.max=function(e,t){var n=-1,r=e.length,i,s;if(arguments.length===1){while(++n<r&&((i=e[n])==null||i!=i))i=undefined;while(++n<r)(s=e[n])!=null&&s>i&&(i=s)}else{while(++n<r&&((i=t.call(e,e[n],n))==null||i!=i))i=undefined;while(++n<r)(s=t.call(e,e[n],n))!=null&&s>i&&(i=s)}return i},d3.extent=function(e,t){var n=-1,r=e.length,i,s,o;if(arguments.length===1){while(++n<r&&((i=o=e[n])==null||i!=i))i=o=undefined;while(++n<r)(s=e[n])!=null&&(i>s&&(i=s),o<s&&(o=s))}else{while(++n<r&&((i=o=t.call(e,e[n],n))==null||i!=i))i=undefined;while(++n<r)(s=t.call(e,e[n],n))!=null&&(i>s&&(i=s),o<s&&(o=s))}return[i,o]},d3.random={normal:function(e,t){var n=arguments.length;return n<2&&(t=1),n<1&&(e=0),function(){var n,r,i;do n=Math.random()*2-1,r=Math.random()*2-1,i=n*n+r*r;while(!i||i>1);return e+t*n*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(e,t){var n=arguments.length;n<2&&(t=1),n<1&&(e=0);var r=d3.random.normal();return function(){return Math.exp(e+t*r())}},irwinHall:function(e){return function(){for(var t=0,n=0;n<e;n++)t+=Math.random();return t/e}}},d3.sum=function(e,t){var n=0,r=e.length,i,s=-1;if(arguments.length===1)while(++s<r)isNaN(i=+e[s])||(n+=i);else while(++s<r)isNaN(i=+t.call(e,e[s],s))||(n+=i);return n},d3.quantile=function(e,t){var n=(e.length-1)*t+1,r=Math.floor(n),i=e[r-1],s=n-r;return s?i+s*(e[r]-i):i},d3.transpose=function(e){return d3.zip.apply(d3,e)},d3.zip=function(){if(!(i=arguments.length))return[];for(var e=-1,t=d3.min(arguments,l),n=new Array(t);++e<t;)for(var r=-1,i,s=n[e]=new Array(i);++r<i;)s[r]=arguments[r][e];return n},d3.bisector=function(e){return{left:function(t,n,r,i){arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);while(r<i){var s=r+i>>>1;e.call(t,t[s],s)<n?r=s+1:i=s}return r},right:function(t,n,r,i){arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);while(r<i){var s=r+i>>>1;n<e.call(t,t[s],s)?i=s:r=s+1}return r}}};var Yi=d3.bisector(function(e){return e});d3.bisectLeft=Yi.left,d3.bisect=d3.bisectRight=Yi.right,d3.first=function(e,t){var n=0,r=e.length,i=e[0],s;arguments.length===1&&(t=d3.ascending);while(++n<r)t.call(e,i,s=e[n])>0&&(i=s);return i},d3.last=function(e,t){var n=0,r=e.length,i=e[0],s;arguments.length===1&&(t=d3.ascending);while(++n<r)t.call(e,i,s=e[n])<=0&&(i=s);return i},d3.nest=function(){function e(t,s){if(s>=i.length)return u?u.call(n,t):o?t.sort(o):t;var a=-1,f=t.length,l=i[s++],c,h,p=new r,d,v={};while(++a<f)(d=p.get(c=l(h=t[a])))?d.push(h):p.set(c,[h]);return p.forEach(function(t,n){v[t]=e(n,s)}),v}function t(e,n){if(n>=i.length)return e;var r=[],o=s[n++],u;for(u in e)r.push({key:u,values:t(e[u],n)});return o&&r.sort(function(e,t){return o(e.key,t.key)}),r}var n={},i=[],s=[],o,u;return n.map=function(t){return e(t,0)},n.entries=function(n){return t(e(n,0),0)},n.key=function(e){return i.push(e),n},n.sortKeys=function(e){return s[i.length-1]=e,n},n.sortValues=function(e){return o=e,n},n.rollup=function(e){return u=e,n},n},d3.keys=function(e){var t=[];for(var n in e)t.push(n);return t},d3.values=function(e){var t=[];for(var n in e)t.push(e[n]);return t},d3.entries=function(e){var t=[];for(var n in e)t.push({key:n,value:e[n]});return t},d3.permute=function(e,t){var n=[],r=-1,i=t.length;while(++r<i)n[r]=e[t[r]];return n},d3.merge=function(e){return Array.prototype.concat.apply([],e)},d3.split=function(e,t){var n=[],r=[],i,s=-1,o=e.length;arguments.length<2&&(t=c);while(++s<o)t.call(r,i=e[s],s)?r=[]:(r.length||n.push(r),r.push(i));return n},d3.range=function(e,t,n){arguments.length<3&&(n=1,arguments.length<2&&(t=e,e=0));if((t-e)/n===Infinity)throw new Error("infinite range");var r=[],i=p(Math.abs(n)),s=-1,o;e*=i,t*=i,n*=i;if(n<0)while((o=e+n*++s)>t)r.push(o/i);else while((o=e+n*++s)<t)r.push(o/i);return r},d3.requote=function(e){return e.replace(Zi,"\\$&")};var Zi=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;d3.round=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},d3.xhr=function(e,t,n){var r=new XMLHttpRequest;arguments.length<3?(n=t,t=null):t&&r.overrideMimeType&&r.overrideMimeType(t),r.open("GET",e,!0),t&&r.setRequestHeader("Accept",t),r.onreadystatechange=function(){if(r.readyState===4){var e=r.status;n(!e&&r.response||e>=200&&e<300||e===304?r:null)}},r.send(null)},d3.text=function(e,t,n){function r(e){n(e&&e.responseText)}arguments.length<3&&(n=t,t=null),d3.xhr(e,t,r)},d3.json=function(e,t){d3.text(e,"application/json",function(e){t(e?JSON.parse(e):null)})},d3.html=function(e,t){d3.text(e,"text/html",function(e){if(e!=null){var n=document.createRange();n.selectNode(document.body),e=n.createContextualFragment(e)}t(e)})},d3.xml=function(e,t,n){function r(e){n(e&&e.responseXML)}arguments.length<3&&(n=t,t=null),d3.xhr(e,t,r)};var es={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:es,qualify:function(e){var t=e.indexOf(":"),n=e;return t>=0&&(n=e.substring(0,t),e=e.substring(t+1)),es.hasOwnProperty(n)?{space:es[n],local:e}:e}},d3.dispatch=function(){var e=new d,t=-1,n=arguments.length;while(++t<n)e[arguments[t]]=v(e);return e},d.prototype.on=function(e,t){var n=e.indexOf("."),r="";return n>0&&(r=e.substring(n+1),e=e.substring(0,n)),arguments.length<2?this[e].on(r):this[e].on(r,t)},d3.format=function(e){var t=ts.exec(e),n=t[1]||" ",r=t[3]||"",i=t[5],s=+t[6],o=t[7],u=t[8],a=t[9],f=1,l="",c=!1;u&&(u=+u.substring(1)),i&&(n="0",o&&(s-=Math.floor((s-1)/4)));switch(a){case"n":o=!0,a="g";break;case"%":f=100,l="%",a="f";break;case"p":f=100,l="%",a="r";break;case"d":c=!0,u=0;break;case"s":f=-1,a="r"}return a=="r"&&!u&&(a="g"),a=ns.get(a)||g,function(e){if(c&&e%1)return"";var t=e<0&&(e=-e)?"-":r;if(f<0){var h=d3.formatPrefix(e,u);e=h.scale(e),l=h.symbol}else e*=f;e=a(e,u);if(i){var p=e.length+t.length;p<s&&(e=(new Array(s-p+1)).join(n)+e),o&&(e=y(e)),e=t+e}else{o&&(e=y(e)),e=t+e;var p=e.length;p<s&&(e=(new Array(s-p+1)).join(n)+e)}return e+l}};var ts=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,ns=d3.map({g:function(e,t){return e.toPrecision(t)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},r:function(e,t){return d3.round(e,t=m(e,t)).toFixed(Math.max(0,Math.min(20,t)))}}),rs=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(b);d3.formatPrefix=function(e,t){var n=0;return e&&(e<0&&(e*=-1),t&&(e=d3.round(e,m(e,t))),n=1+Math.floor(1e-12+Math.log(e)/Math.LN10),n=Math.max(-24,Math.min(24,Math.floor((n<=0?n+1:n-1)/3)*3))),rs[8+n/3]};var is=T(2),ss=T(3),os=function(){return x},us=d3.map({linear:os,poly:T,quad:function(){return is},cubic:function(){return ss},sin:function(){return N},exp:function(){return C},circle:function(){return k},elastic:L,back:A,bounce:function(){return O}}),as=d3.map({"in":x,out:E,"in-out":S,"out-in":function(e){return S(E(e))}});d3.ease=function(e){var t=e.indexOf("-"),n=t>=0?e.substring(0,t):e,r=t>=0?e.substring(t+1):"in";return n=us.get(n)||os,r=as.get(r)||x,w(r(n.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.transform=function(e){var t=document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(e){t.setAttribute("transform",e);var n=t.transform.baseVal.consolidate();return new P(n?n.matrix:ls)})(e)},P.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var fs=180/Math.PI,ls={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolate=function(e,t){var n=d3.interpolators.length,r;while(--n>=0&&!(r=d3.interpolators[n](e,t)));return r},d3.interpolateNumber=function(e,t){return t-=e,function(n){return e+t*n}},d3.interpolateRound=function(e,t){return t-=e,function(n){return Math.round(e+t*n)}},d3.interpolateString=function(e,t){var n,r,i,s=0,o=0,u=[],a=[],f,l;cs.lastIndex=0;for(r=0;n=cs.exec(t);++r)n.index&&u.push(t.substring(s,o=n.index)),a.push({i:u.length,x:n[0]}),u.push(null),s=cs.lastIndex;s<t.length&&u.push(t.substring(s));for(r=0,f=a.length;(n=cs.exec(e))&&r<f;++r){l=a[r];if(l.x==n[0]){if(l.i)if(u[l.i+1]==null){u[l.i-1]+=l.x,u.splice(l.i,1);for(i=r+1;i<f;++i)a[i].i--}else{u[l.i-1]+=l.x+u[l.i+1],u.splice(l.i,2);for(i=r+1;i<f;++i)a[i].i-=2}else if(u[l.i+1]==null)u[l.i]=l.x;else{u[l.i]=l.x+u[l.i+1],u.splice(l.i+1,1);for(i=r+1;i<f;++i)a[i].i--}a.splice(r,1),f--,r--}else l.x=d3.interpolateNumber(parseFloat(n[0]),parseFloat(l.x))}while(r<f)l=a.pop(),u[l.i+1]==null?u[l.i]=l.x:(u[l.i]=l.x+u[l.i+1],u.splice(l.i+1,1)),f--;return u.length===1?u[0]==null?a[0].x:function(){return t}:function(e){for(r=0;r<f;++r)u[(l=a[r]).i]=l.x(e);return u.join("")}},d3.interpolateTransform=function(e,t){var n=[],r=[],i,s=d3.transform(e),o=d3.transform(t),u=s.translate,a=o.translate,f=s.rotate,l=o.rotate,c=s.skew,h=o.skew,p=s.scale,d=o.scale;return u[0]!=a[0]||u[1]!=a[1]?(n.push("translate(",null,",",null,")"),r.push({i:1,x:d3.interpolateNumber(u[0],a[0])},{i:3,x:d3.interpolateNumber(u[1],a[1])})):a[0]||a[1]?n.push("translate("+a+")"):n.push(""),f!=l?(f-l>180?l+=360:l-f>180&&(f+=360),r.push({i:n.push(n.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(f,l)})):l&&n.push(n.pop()+"rotate("+l+")"),c!=h?r.push({i:n.push(n.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(c,h)}):h&&n.push(n.pop()+"skewX("+h+")"),p[0]!=d[0]||p[1]!=d[1]?(i=n.push(n.pop()+"scale(",null,",",null,")"),r.push({i:i-4,x:d3.interpolateNumber(p[0],d[0])},{i:i-2,x:d3.interpolateNumber(p[1],d[1])})):(d[0]!=1||d[1]!=1)&&n.push(n.pop()+"scale("+d+")"),i=r.length,function(e){var t=-1,s;while(++t<i)n[(s=r[t]).i]=s.x(e);return n.join("")}},d3.interpolateRgb=function(e,t){e=d3.rgb(e),t=d3.rgb(t);var n=e.r,r=e.g,i=e.b,s=t.r-n,o=t.g-r,u=t.b-i;return function(e){return"#"+z(Math.round(n+s*e))+z(Math.round(r+o*e))+z(Math.round(i+u*e))}},d3.interpolateHsl=function(e,t){e=d3.hsl(e),t=d3.hsl(t);var n=e.h,r=e.s,i=e.l,s=t.h-n,o=t.s-r,u=t.l-i;return s>180?s-=360:s<-180&&(s+=360),function(e){return G(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateLab=function(e,t){e=d3.lab(e),t=d3.lab(t);var n=e.l,r=e.a,i=e.b,s=t.l-n,o=t.a-r,u=t.b-i;return function(e){return rt(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateHcl=function(e,t){e=d3.hcl(e),t=d3.hcl(t);var n=e.h,r=e.c,i=e.l,s=t.h-n,o=t.c-r,u=t.l-i;return s>180?s-=360:s<-180&&(s+=360),function(e){return et(n+s*e,r+o*e,i+u*e)+""}},d3.interpolateArray=function(e,t){var n=[],r=[],i=e.length,s=t.length,o=Math.min(e.length,t.length),u;for(u=0;u<o;++u)n.push(d3.interpolate(e[u],t[u]));for(;u<i;++u)r[u]=e[u];for(;u<s;++u)r[u]=t[u];return function(e){for(u=0;u<o;++u)r[u]=n[u](e);return r}},d3.interpolateObject=function(e,t){var n={},r={},i;for(i in e)i in t?n[i]=F(i)(e[i],t[i]):r[i]=e[i];for(i in t)i in e||(r[i]=t[i]);return function(e){for(i in n)r[i]=n[i](e);return r}};var cs=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;d3.interpolators=[d3.interpolateObject,function(e,t){return t instanceof Array&&d3.interpolateArray(e,t)},function(e,t){return(typeof e=="string"||typeof t=="string")&&d3.interpolateString(e+"",t+"")},function(e,t){return(typeof t=="string"?hs.has(t)||/^(#|rgb\(|hsl\()/.test(t):t instanceof U||t instanceof Q)&&d3.interpolateRgb(e,t)},function(e,t){return!isNaN(e=+e)&&!isNaN(t=+t)&&d3.interpolateNumber(e,t)}],d3.rgb=function(e,t,n){return arguments.length===1?e instanceof U?R(e.r,e.g,e.b):W(""+e,R,G):R(~~e,~~t,~~n)},U.prototype.brighter=function(e){e=Math.pow(.7,arguments.length?e:1);var t=this.r,n=this.g,r=this.b,i=30;return!t&&!n&&!r?R(i,i,i):(t&&t<i&&(t=i),n&&n<i&&(n=i),r&&r<i&&(r=i),R(Math.min(255,Math.floor(t/e)),Math.min(255,Math.floor(n/e)),Math.min(255,Math.floor(r/e))))},U.prototype.darker=function(e){return e=Math.pow(.7,arguments.length?e:1),R(Math.floor(e*this.r),Math.floor(e*this.g),Math.floor(e*this.b))},U.prototype.hsl=function(){return X(this.r,this.g,this.b)},U.prototype.toString=function(){return"#"+z(this.r)+z(this.g)+z(this.b)};var hs=d3.map({aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});hs.forEach(function(e,t){hs.set(e,W(t,R,G))}),d3.hsl=function(e,t,n){return arguments.length===1?e instanceof Q?K(e.h,e.s,e.l):W(""+e,X,K):K(+e,+t,+n)},Q.prototype.brighter=function(e){return e=Math.pow(.7,arguments.length?e:1),K(this.h,this.s,this.l/e)},Q.prototype.darker=function(e){return e=Math.pow(.7,arguments.length?e:1),K(this.h,this.s,e*this.l)},Q.prototype.rgb=function(){return G(this.h,this.s,this.l)},Q.prototype.toString=function(){return this.rgb().toString()},d3.hcl=function(e,t,n){return arguments.length===1?e instanceof Z?Y(e.h,e.c,e.l):e instanceof nt?it(e.l,e.a,e.b):it((e=V((e=d3.rgb(e)).r,e.g,e.b)).l,e.a,e.b):Y(+e,+t,+n)},Z.prototype.brighter=function(e){return Y(this.h,this.c,Math.min(100,this.l+ps*(arguments.length?e:1)))},Z.prototype.darker=function(e){return Y(this.h,this.c,Math.max(0,this.l-ps*(arguments.length?e:1)))},Z.prototype.rgb=function(){return et(this.h,this.c,this.l).rgb()},Z.prototype.toString=function(){return this.rgb()+""},d3.lab=function(e,t,n){return arguments.length===1?e instanceof nt?tt(e.l,e.a,e.b):e instanceof Z?et(e.l,e.c,e.h):V((e=d3.rgb(e)).r,e.g,e.b):tt(+e,+t,+n)};var ps=18,ds=.95047,vs=1,ms=1.08883;nt.prototype.brighter=function(e){return tt(Math.min(100,this.l+ps*(arguments.length?e:1)),this.a,this.b)},nt.prototype.darker=function(e){return tt(Math.max(0,this.l-ps*(arguments.length?e:1)),this.a,this.b)},nt.prototype.rgb=function(){return rt(this.l,this.a,this.b)},nt.prototype.toString=function(){return this.rgb()+""};var gs=function(e,t){return t.querySelector(e)},ys=function(e,t){return t.querySelectorAll(e)},bs=document.documentElement,ws=bs.matchesSelector||bs.webkitMatchesSelector||bs.mozMatchesSelector||bs.msMatchesSelector||bs.oMatchesSelector,Es=function(e,t){return ws.call(e,t)};typeof Sizzle=="function"&&(gs=function(e,t){return Sizzle(e,t)[0]||null},ys=function(e,t){return Sizzle.uniqueSort(Sizzle(e,t))},Es=Sizzle.matchesSelector);var Ss=[];d3.selection=function(){return xs},d3.selection.prototype=Ss,Ss.select=function(e){var t=[],n,r,i,s;typeof e!="function"&&(e=ft(e));for(var o=-1,u=this.length;++o<u;){t.push(n=[]),n.parentNode=(i=this[o]).parentNode;for(var a=-1,f=i.length;++a<f;)(s=i[a])?(n.push(r=e.call(s,s.__data__,a)),r&&"__data__"in s&&(r.__data__=s.__data__)):n.push(null)}return at(t)},Ss.selectAll=function(e){var t=[],n,r;typeof e!="function"&&(e=lt(e));for(var i=-1,s=this.length;++i<s;)for(var o=this[i],u=-1,a=o.length;++u<a;)if(r=o[u])t.push(n=$i(e.call(r,r.__data__,u))),n.parentNode=r;return at(t)},Ss.attr=function(e,t){if(arguments.length<2){if(typeof e=="string"){var n=this.node();return e=d3.ns.qualify(e),e.local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}for(t in e)this.each(ct(t,e[t]));return this}return this.each(ct(e,t))},Ss.classed=function(e,t){if(arguments.length<2){if(typeof e=="string"){var n=this.node(),r=(e=e.trim().split(/^|\s+/g)).length,i=-1;if(t=n.classList){while(++i<r)if(!t.contains(e[i]))return!1}else{t=n.className,t.baseVal!=null&&(t=t.baseVal);while(++i<r)if(!ht(e[i]).test(t))return!1}return!0}for(t in e)this.each(pt(t,e[t]));return this}return this.each(pt(e,t))},Ss.style=function(e,t,n){var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t="");for(n in e)this.each(vt(n,e[n],t));return this}if(r<2)return window.getComputedStyle(this.node(),null).getPropertyValue(e);n=""}return this.each(vt(e,t,n))},Ss.property=function(e,t){if(arguments.length<2){if(typeof e=="string")return this.node()[e];for(t in e)this.each(mt(t,e[t]));return this}return this.each(mt(e,t))},Ss.text=function(e){return arguments.length<1?this.node().textContent:this.each(typeof e=="function"?function(){var t=e.apply(this,arguments);this.textContent=t==null?"":t}:e==null?function(){this.textContent=""}:function(){this.textContent=e})},Ss.html=function(e){return arguments.length<1?this.node().innerHTML:this.each(typeof e=="function"?function(){var t=e.apply(this,arguments);this.innerHTML=t==null?"":t}:e==null?function(){this.innerHTML=""}:function(){this.innerHTML=e})},Ss.append=function(e){function t(){return this.appendChild(document.createElementNS(this.namespaceURI,e))}function n(){return this.appendChild(document.createElementNS(e.space,e.local))}return e=d3.ns.qualify(e),this.select(e.local?n:t)},Ss.insert=function(e,t){function n(){return this.insertBefore(document.createElementNS(this.namespaceURI,e),gs(t,this))}function r(){return this.insertBefore(document.createElementNS(e.space,e.local),gs(t,this))}return e=d3.ns.qualify(e),this.select(e.local?r:n)},Ss.remove=function(){return this.each(function(){var e=this.parentNode;e&&e.removeChild(this)})},Ss.data=function(e,t){function n(e,n){var i,s=e.length,o=n.length,u=Math.min(s,o),c=Math.max(s,o),h=[],p=[],d=[],v,m;if(t){var g=new r,y=[],b,w=n.length;for(i=-1;++i<s;)b=t.call(v=e[i],v.__data__,i),g.has(b)?d[w++]=v:g.set(b,v),y.push(b);for(i=-1;++i<o;)b=t.call(n,m=n[i],i),g.has(b)?(h[i]=v=g.get(b),v.__data__=m,p[i]=d[i]=null):(p[i]=gt(m),h[i]=d[i]=null),g.remove(b);for(i=-1;++i<s;)g.has(y[i])&&(d[i]=e[i])}else{for(i=-1;++i<u;)v=e[i],m=n[i],v?(v.__data__=m,h[i]=v,p[i]=d[i]=null):(p[i]=gt(m),h[i]=d[i]=null);for(;i<o;++i)p[i]=gt(n[i]),h[i]=d[i]=null;for(;i<c;++i)d[i]=e[i],p[i]=h[i]=null}p.update=h,p.parentNode=h.parentNode=d.parentNode=e.parentNode,a.push(p),f.push(h),l.push(d)}var i=-1,s=this.length,o,u;if(!arguments.length){e=new Array(s=(o=this[0]).length);while(++i<s)if(u=o[i])e[i]=u.__data__;return e}var a=St([]),f=at([]),l=at([]);if(typeof e=="function")while(++i<s)n(o=this[i],e.call(o,o.parentNode.__data__,i));else while(++i<s)n(o=this[i],e);return f.enter=function(){return a},f.exit=function(){return l},f},Ss.datum=Ss.map=function(e){return arguments.length<1?this.property("__data__"):this.property("__data__",e)},Ss.filter=function(e){var t=[],n,r,i;typeof e!="function"&&(e=yt(e));for(var s=0,o=this.length;s<o;s++){t.push(n=[]),n.parentNode=(r=this[s]).parentNode;for(var u=0,a=r.length;u<a;u++)(i=r[u])&&e.call(i,i.__data__,u)&&n.push(i)}return at(t)},Ss.order=function(){for(var e=-1,t=this.length;++e<t;)for(var n=this[e],r=n.length-1,i=n[r],s;--r>=0;)if(s=n[r])i&&i!==s.nextSibling&&i.parentNode.insertBefore(s,i),i=s;return this},Ss.sort=function(e){e=bt.apply(this,arguments);for(var t=-1,n=this.length;++t<n;)this[t].sort(e);return this.order()},Ss.on=function(e,t,n){var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t=!1);for(n in e)this.each(wt(n,e[n],t));return this}if(r<2)return(r=this.node()["__on"+e])&&r._;n=!1}return this.each(wt(e,t,n))},Ss.each=function(e){return Et(this,function(t,n,r){e.call(t,t.__data__,n,r)})},Ss.call=function(e){return e.apply(this,(arguments[0]=this,arguments)),this},Ss.empty=function(){return!this.node()},Ss.node=function(e){for(var t=0,n=this.length;t<n;t++)for(var r=this[t],i=0,s=r.length;i<s;i++){var o=r[i];if(o)return o}return null},Ss.transition=function(){var e=[],t,n;for(var r=-1,i=this.length;++r<i;){e.push(t=[]);for(var s=this[r],o=-1,u=s.length;++o<u;)t.push((n=s[o])?{node:n,delay:Ms,duration:_s}:null)}return xt(e,ks||++Cs,Date.now())};var xs=at([[document]]);xs[0].parentNode=bs,d3.select=function(e){return typeof e=="string"?xs.select(e):at([[e]])},d3.selectAll=function(e){return typeof e=="string"?xs.selectAll(e):at([$i(e)])};var Ts=[];d3.selection.enter=St,d3.selection.enter.prototype=Ts,Ts.append=Ss.append,Ts.insert=Ss.insert,Ts.empty=Ss.empty,Ts.node=Ss.node,Ts.select=function(e){var t=[],n,r,i,s,o;for(var u=-1,a=this.length;++u<a;){i=(s=this[u]).update,t.push(n=[]),n.parentNode=s.parentNode;for(var f=-1,l=s.length;++f<l;)(o=s[f])?(n.push(i[f]=r=e.call(s.parentNode,o.__data__,f)),r.__data__=o.__data__):n.push(null)}return at(t)};var Ns=[],Cs=0,ks=0,Ls=0,As=250,Os=d3.ease("cubic-in-out"),Ms=Ls,_s=As,Ds=Os;Ns.call=Ss.call,d3.transition=function(e){return arguments.length?ks?e.transition():e:xs.transition()},d3.transition.prototype=Ns,Ns.select=function(e){var t=[],n,r,i;typeof e!="function"&&(e=ft(e));for(var s=-1,o=this.length;++s<o;){t.push(n=[]);for(var u=this[s],a=-1,f=u.length;++a<f;)(i=u[a])&&(r=e.call(i.node,i.node.__data__,a))?("__data__"in i.node&&(r.__data__=i.node.__data__),n.push({node:r,delay:i.delay,duration:i.duration})):n.push(null)}return xt(t,this.id,this.time).ease(this.ease())},Ns.selectAll=function(e){var t=[],n,r,i;typeof e!="function"&&(e=lt(e));for(var s=-1,o=this.length;++s<o;)for(var u=this[s],a=-1,f=u.length;++a<f;)if(i=u[a]){r=e.call(i.node,i.node.__data__,a),t.push(n=[]);for(var l=-1,c=r.length;++l<c;)n.push({node:r[l],delay:i.delay,duration:i.duration})}return xt(t,this.id,this.time).ease(this.ease())},Ns.filter=function(e){var t=[],n,r,i;typeof e!="function"&&(e=yt(e));for(var s=0,o=this.length;s<o;s++){t.push(n=[]);for(var r=this[s],u=0,a=r.length;u<a;u++)(i=r[u])&&e.call(i.node,i.node.__data__,u)&&n.push(i)}return xt(t,this.id,this.time).ease(this.ease())},Ns.attr=function(e,t){if(arguments.length<2){for(t in e)this.attrTween(t,Ct(e[t],t));return this}return this.attrTween(e,Ct(t,e))},Ns.attrTween=function(e,t){function n(e,n){var r=t.call(this,e,n,this.getAttribute(i));return r===Ps?(this.removeAttribute(i),null):r&&function(e){this.setAttribute(i,r(e))}}function r(e,n){var r=t.call(this,e,n,this.getAttributeNS(i.space,i.local));return r===Ps?(this.removeAttributeNS(i.space,i.local),null):r&&function(e){this.setAttributeNS(i.space,i.local,r(e))}}var i=d3.ns.qualify(e);return this.tween("attr."+e,i.local?r:n)},Ns.style=function(e,t,n){var r=arguments.length;if(r<3){if(typeof e!="string"){r<2&&(t="");for(n in e)this.styleTween(n,Ct(e[n],n),t);return this}n=""}return this.styleTween(e,Ct(t,e),n)},Ns.styleTween=function(e,t,n){return arguments.length<3&&(n=""),this.tween("style."+e,function(r,i){var s=t.call(this,r,i,window.getComputedStyle(this,null).getPropertyValue(e));return s===Ps?(this.style.removeProperty(e),null):s&&function(t){this.style.setProperty(e,s(t),n)}})},Ns.text=function(e){return this.tween("text",function(t,n){this.textContent=typeof e=="function"?e.call(this,t,n):e})},Ns.remove=function(){return this.each("end.transition",function(){var e;!this.__transition__&&(e=this.parentNode)&&e.removeChild(this)})},Ns.delay=function(e){return Et(this,typeof e=="function"?function(t,n,r){t.delay=e.call(t=t.node,t.__data__,n,r)|0}:(e|=0,function(t){t.delay=e}))},Ns.duration=function(e){return Et(this,typeof e=="function"?function(t,n,r){t.duration=Math.max(1,e.call(t=t.node,t.__data__,n,r)|0)}:(e=Math.max(1,e|0),function(t){t.duration=e}))},Ns.transition=function(){return this.select(s)},d3.tween=function(e,t){function n(n,r,i){var s=e.call(this,n,r);return s==null?i!=""&&Ps:i!=s&&t(i,s)}function r(n,r,i){return i!=e&&t(i,e)}return typeof e=="function"?n:e==null?Nt:(e+="",r)};var Ps={},Hs=null,Bs,js;d3.timer=function(e,t,n){var r=!1,i,s=Hs;if(arguments.length<3){if(arguments.length<2)t=0;else if(!isFinite(t))return;n=Date.now()}while(s){if(s.callback===e){s.then=n,s.delay=t,r=!0;break}i=s,s=s.next}r||(Hs={callback:e,then:n,delay:t,next:Hs}),Bs||(js=clearTimeout(js),Bs=1,Fs(kt))},d3.timer.flush=function(){var e,t=Date.now(),n=Hs;while(n)e=t-n.then,n.delay||(n.flush=n.callback(e)),n=n.next;Lt()};var Fs=window.requestAnimationFrame||window.webkitRequestAnimationFrame||
+window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,17)};d3.mouse=function(e){return At(e,_())};var Is=/WebKit/.test(navigator.userAgent)?-1:0;d3.touches=function(e,t){return arguments.length<2&&(t=_().touches),t?$i(t).map(function(t){var n=At(e,t);return n.identifier=t.identifier,n}):[]},d3.scale={},d3.scale.linear=function(){return Ht([0,1],[0,1],d3.interpolate,!1)},d3.scale.log=function(){return zt(d3.scale.linear(),Wt)};var qs=d3.format(".0e");Wt.pow=function(e){return Math.pow(10,e)},Xt.pow=function(e){return-Math.pow(10,-e)},d3.scale.pow=function(){return Vt(d3.scale.linear(),1)},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return Jt([],{t:"range",a:[[]]})},d3.scale.category10=function(){return d3.scale.ordinal().range(Rs)},d3.scale.category20=function(){return d3.scale.ordinal().range(Us)},d3.scale.category20b=function(){return d3.scale.ordinal().range(zs)},d3.scale.category20c=function(){return d3.scale.ordinal().range(Ws)};var Rs=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],Us=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],zs=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],Ws=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"];d3.scale.quantile=function(){return Kt([],[])},d3.scale.quantize=function(){return Qt(0,1,[0,1])},d3.scale.threshold=function(){return Gt([.5],[0,1])},d3.scale.identity=function(){return Yt([0,1])},d3.svg={},d3.svg.arc=function(){function e(){var e=t.apply(this,arguments),s=n.apply(this,arguments),o=r.apply(this,arguments)+Xs,u=i.apply(this,arguments)+Xs,a=(u<o&&(a=o,o=u,u=a),u-o),f=a<Math.PI?"0":"1",l=Math.cos(o),c=Math.sin(o),h=Math.cos(u),p=Math.sin(u);return a>=Vs?e?"M0,"+s+"A"+s+","+s+" 0 1,1 0,"+ -s+"A"+s+","+s+" 0 1,1 0,"+s+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+s+"A"+s+","+s+" 0 1,1 0,"+ -s+"A"+s+","+s+" 0 1,1 0,"+s+"Z":e?"M"+s*l+","+s*c+"A"+s+","+s+" 0 "+f+",1 "+s*h+","+s*p+"L"+e*h+","+e*p+"A"+e+","+e+" 0 "+f+",0 "+e*l+","+e*c+"Z":"M"+s*l+","+s*c+"A"+s+","+s+" 0 "+f+",1 "+s*h+","+s*p+"L0,0"+"Z"}var t=Zt,n=en,r=tn,i=nn;return e.innerRadius=function(n){return arguments.length?(t=u(n),e):t},e.outerRadius=function(t){return arguments.length?(n=u(t),e):n},e.startAngle=function(t){return arguments.length?(r=u(t),e):r},e.endAngle=function(t){return arguments.length?(i=u(t),e):i},e.centroid=function(){var e=(t.apply(this,arguments)+n.apply(this,arguments))/2,s=(r.apply(this,arguments)+i.apply(this,arguments))/2+Xs;return[Math.cos(s)*e,Math.sin(s)*e]},e};var Xs=-Math.PI/2,Vs=2*Math.PI-1e-6;d3.svg.line=function(){return rn(i)};var $s=d3.map({linear:un,"linear-closed":an,"step-before":fn,"step-after":ln,basis:mn,"basis-open":gn,"basis-closed":yn,bundle:bn,cardinal:pn,"cardinal-open":cn,"cardinal-closed":hn,monotone:Nn});$s.forEach(function(e,t){t.key=e,t.closed=/-closed$/.test(e)});var Js=[0,2/3,1/3,0],Ks=[0,1/3,2/3,0],Qs=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var e=rn(Cn);return e.radius=e.x,delete e.x,e.angle=e.y,delete e.y,e},fn.reverse=ln,ln.reverse=fn,d3.svg.area=function(){return kn(i)},d3.svg.area.radial=function(){var e=kn(Cn);return e.radius=e.x,delete e.x,e.innerRadius=e.x0,delete e.x0,e.outerRadius=e.x1,delete e.x1,e.angle=e.y,delete e.y,e.startAngle=e.y0,delete e.y0,e.endAngle=e.y1,delete e.y1,e},d3.svg.chord=function(){function e(e,u){var a=t(this,s,e,u),f=t(this,o,e,u);return"M"+a.p0+r(a.r,a.p1,a.a1-a.a0)+(n(a,f)?i(a.r,a.p1,a.r,a.p0):i(a.r,a.p1,f.r,f.p0)+r(f.r,f.p1,f.a1-f.a0)+i(f.r,f.p1,a.r,a.p0))+"Z"}function t(e,t,n,r){var i=t.call(e,n,r),s=a.call(e,i,r),o=f.call(e,i,r)+Xs,u=l.call(e,i,r)+Xs;return{r:s,a0:o,a1:u,p0:[s*Math.cos(o),s*Math.sin(o)],p1:[s*Math.cos(u),s*Math.sin(u)]}}function n(e,t){return e.a0==t.a0&&e.a1==t.a1}function r(e,t,n){return"A"+e+","+e+" 0 "+ +(n>Math.PI)+",1 "+t}function i(e,t,n,r){return"Q 0,0 "+r}var s=Ln,o=An,a=On,f=tn,l=nn;return e.radius=function(t){return arguments.length?(a=u(t),e):a},e.source=function(t){return arguments.length?(s=u(t),e):s},e.target=function(t){return arguments.length?(o=u(t),e):o},e.startAngle=function(t){return arguments.length?(f=u(t),e):f},e.endAngle=function(t){return arguments.length?(l=u(t),e):l},e},d3.svg.diagonal=function(){function e(e,i){var s=t.call(this,e,i),o=n.call(this,e,i),u=(s.y+o.y)/2,a=[s,{x:s.x,y:u},{x:o.x,y:u},o];return a=a.map(r),"M"+a[0]+"C"+a[1]+" "+a[2]+" "+a[3]}var t=Ln,n=An,r=Dn;return e.source=function(n){return arguments.length?(t=u(n),e):t},e.target=function(t){return arguments.length?(n=u(t),e):n},e.projection=function(t){return arguments.length?(r=t,e):r},e},d3.svg.diagonal.radial=function(){var e=d3.svg.diagonal(),t=Dn,n=e.projection;return e.projection=function(e){return arguments.length?n(Pn(t=e)):t},e},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function e(e,r){return(Gs.get(t.call(this,e,r))||jn)(n.call(this,e,r))}var t=Bn,n=Hn;return e.type=function(n){return arguments.length?(t=u(n),e):t},e.size=function(t){return arguments.length?(n=u(t),e):n},e};var Gs=d3.map({circle:jn,cross:function(e){var t=Math.sqrt(e/5)/2;return"M"+ -3*t+","+ -t+"H"+ -t+"V"+ -3*t+"H"+t+"V"+ -t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+ -t+"V"+t+"H"+ -3*t+"Z"},diamond:function(e){var t=Math.sqrt(e/(2*Zs)),n=t*Zs;return"M0,"+ -t+"L"+n+",0"+" 0,"+t+" "+ -n+",0"+"Z"},square:function(e){var t=Math.sqrt(e)/2;return"M"+ -t+","+ -t+"L"+t+","+ -t+" "+t+","+t+" "+ -t+","+t+"Z"},"triangle-down":function(e){var t=Math.sqrt(e/Ys),n=t*Ys/2;return"M0,"+n+"L"+t+","+ -n+" "+ -t+","+ -n+"Z"},"triangle-up":function(e){var t=Math.sqrt(e/Ys),n=t*Ys/2;return"M0,"+ -n+"L"+t+","+n+" "+ -t+","+n+"Z"}});d3.svg.symbolTypes=Gs.keys();var Ys=Math.sqrt(3),Zs=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function e(e){e.each(function(){var e=d3.select(this),c=a==null?t.ticks?t.ticks.apply(t,u):t.domain():a,h=f==null?t.tickFormat?t.tickFormat.apply(t,u):String:f,p=qn(t,c,l),d=e.selectAll(".minor").data(p,String),v=d.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),m=d3.transition(d.exit()).style("opacity",1e-6).remove(),g=d3.transition(d).style("opacity",1),y=e.selectAll("g").data(c,String),b=y.enter().insert("g","path").style("opacity",1e-6),w=d3.transition(y.exit()).style("opacity",1e-6).remove(),E=d3.transition(y).style("opacity",1),S,x=_t(t),T=e.selectAll(".domain").data([0]),N=T.enter().append("path").attr("class","domain"),C=d3.transition(T),k=t.copy(),L=this.__chart__||k;this.__chart__=k,b.append("line").attr("class","tick"),b.append("text");var A=b.select("line"),O=E.select("line"),M=y.select("text").text(h),_=b.select("text"),D=E.select("text");switch(n){case"bottom":S=Fn,v.attr("y2",i),g.attr("x2",0).attr("y2",i),A.attr("y2",r),_.attr("y",Math.max(r,0)+o),O.attr("x2",0).attr("y2",r),D.attr("x",0).attr("y",Math.max(r,0)+o),M.attr("dy",".71em").attr("text-anchor","middle"),C.attr("d","M"+x[0]+","+s+"V0H"+x[1]+"V"+s);break;case"top":S=Fn,v.attr("y2",-i),g.attr("x2",0).attr("y2",-i),A.attr("y2",-r),_.attr("y",-(Math.max(r,0)+o)),O.attr("x2",0).attr("y2",-r),D.attr("x",0).attr("y",-(Math.max(r,0)+o)),M.attr("dy","0em").attr("text-anchor","middle"),C.attr("d","M"+x[0]+","+ -s+"V0H"+x[1]+"V"+ -s);break;case"left":S=In,v.attr("x2",-i),g.attr("x2",-i).attr("y2",0),A.attr("x2",-r),_.attr("x",-(Math.max(r,0)+o)),O.attr("x2",-r).attr("y2",0),D.attr("x",-(Math.max(r,0)+o)).attr("y",0),M.attr("dy",".32em").attr("text-anchor","end"),C.attr("d","M"+ -s+","+x[0]+"H0V"+x[1]+"H"+ -s);break;case"right":S=In,v.attr("x2",i),g.attr("x2",i).attr("y2",0),A.attr("x2",r),_.attr("x",Math.max(r,0)+o),O.attr("x2",r).attr("y2",0),D.attr("x",Math.max(r,0)+o).attr("y",0),M.attr("dy",".32em").attr("text-anchor","start"),C.attr("d","M"+s+","+x[0]+"H0V"+x[1]+"H"+s)}if(t.ticks)b.call(S,L),E.call(S,k),w.call(S,k),v.call(S,L),g.call(S,k),m.call(S,k);else{var P=k.rangeBand()/2,H=function(e){return k(e)+P};b.call(S,H),E.call(S,H)}})}var t=d3.scale.linear(),n="bottom",r=6,i=6,s=6,o=3,u=[10],a=null,f,l=0;return e.scale=function(n){return arguments.length?(t=n,e):t},e.orient=function(t){return arguments.length?(n=t,e):n},e.ticks=function(){return arguments.length?(u=arguments,e):u},e.tickValues=function(t){return arguments.length?(a=t,e):a},e.tickFormat=function(t){return arguments.length?(f=t,e):f},e.tickSize=function(t,n,o){if(!arguments.length)return r;var u=arguments.length-1;return r=+t,i=u>1?+n:r,s=u>0?+arguments[u]:r,e},e.tickPadding=function(t){return arguments.length?(o=+t,e):o},e.tickSubdivide=function(t){return arguments.length?(l=+t,e):l},e},d3.svg.brush=function(){function e(s){s.each(function(){var s=d3.select(this),f=s.selectAll(".background").data([0]),l=s.selectAll(".extent").data([0]),c=s.selectAll(".resize").data(a,String),h;s.style("pointer-events","all").on("mousedown.brush",i).on("touchstart.brush",i),f.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),l.enter().append("rect").attr("class","extent").style("cursor","move"),c.enter().append("g").attr("class",function(e){return"resize "+e}).style("cursor",function(e){return eo[e]}).append("rect").attr("x",function(e){return/[ew]$/.test(e)?-3:null}).attr("y",function(e){return/^[ns]/.test(e)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),c.style("display",e.empty()?"none":null),c.exit().remove(),o&&(h=_t(o),f.attr("x",h[0]).attr("width",h[1]-h[0]),n(s)),u&&(h=_t(u),f.attr("y",h[0]).attr("height",h[1]-h[0]),r(s)),t(s)})}function t(e){e.selectAll(".resize").attr("transform",function(e){return"translate("+f[+/e$/.test(e)][0]+","+f[+/^s/.test(e)][1]+")"})}function n(e){e.select(".extent").attr("x",f[0][0]),e.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1][0]-f[0][0])}function r(e){e.select(".extent").attr("y",f[0][1]),e.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1][1]-f[0][1])}function i(){function i(){var e=d3.event.changedTouches;return e?d3.touches(v,e)[0]:d3.mouse(v)}function a(){d3.event.keyCode==32&&(S||(x=null,T[0]-=f[1][0],T[1]-=f[1][1],S=2),M())}function c(){d3.event.keyCode==32&&S==2&&(T[0]+=f[1][0],T[1]+=f[1][1],S=0,M())}function h(){var e=i(),s=!1;N&&(e[0]+=N[0],e[1]+=N[1]),S||(d3.event.altKey?(x||(x=[(f[0][0]+f[1][0])/2,(f[0][1]+f[1][1])/2]),T[0]=f[+(e[0]<x[0])][0],T[1]=f[+(e[1]<x[1])][1]):x=null),w&&p(e,o,0)&&(n(y),s=!0),E&&p(e,u,1)&&(r(y),s=!0),s&&(t(y),g({type:"brush",mode:S?"move":"resize"}))}function p(e,t,n){var r=_t(t),i=r[0],s=r[1],o=T[n],u=f[1][n]-f[0][n],a,c;S&&(i-=o,s-=u+o),a=Math.max(i,Math.min(s,e[n])),S?c=(a+=o)+u:(x&&(o=Math.max(i,Math.min(s,2*x[n]-a))),o<a?(c=a,a=o):c=o);if(f[0][n]!==a||f[1][n]!==c)return l=null,f[0][n]=a,f[1][n]=c,!0}function d(){h(),y.style("pointer-events","all").selectAll(".resize").style("display",e.empty()?"none":null),d3.select("body").style("cursor",null),C.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),g({type:"brushend"}),M()}var v=this,m=d3.select(d3.event.target),g=s.of(v,arguments),y=d3.select(v),b=m.datum(),w=!/^(n|s)$/.test(b)&&o,E=!/^(e|w)$/.test(b)&&u,S=m.classed("extent"),x,T=i(),N,C=d3.select(window).on("mousemove.brush",h).on("mouseup.brush",d).on("touchmove.brush",h).on("touchend.brush",d).on("keydown.brush",a).on("keyup.brush",c);if(S)T[0]=f[0][0]-T[0],T[1]=f[0][1]-T[1];else if(b){var k=+/w$/.test(b),L=+/^n/.test(b);N=[f[1-k][0]-T[0],f[1-L][1]-T[1]],T[0]=f[k][0],T[1]=f[L][1]}else d3.event.altKey&&(x=T.slice());y.style("pointer-events","none").selectAll(".resize").style("display",null),d3.select("body").style("cursor",m.style("cursor")),g({type:"brushstart"}),h(),M()}var s=D(e,"brushstart","brush","brushend"),o=null,u=null,a=to[0],f=[[0,0],[0,0]],l;return e.x=function(t){return arguments.length?(o=t,a=to[!o<<1|!u],e):o},e.y=function(t){return arguments.length?(u=t,a=to[!o<<1|!u],e):u},e.extent=function(t){var n,r,i,s,a;return arguments.length?(l=[[0,0],[0,0]],o&&(n=t[0],r=t[1],u&&(n=n[0],r=r[0]),l[0][0]=n,l[1][0]=r,o.invert&&(n=o(n),r=o(r)),r<n&&(a=n,n=r,r=a),f[0][0]=n|0,f[1][0]=r|0),u&&(i=t[0],s=t[1],o&&(i=i[1],s=s[1]),l[0][1]=i,l[1][1]=s,u.invert&&(i=u(i),s=u(s)),s<i&&(a=i,i=s,s=a),f[0][1]=i|0,f[1][1]=s|0),e):(t=l||f,o&&(n=t[0][0],r=t[1][0],l||(n=f[0][0],r=f[1][0],o.invert&&(n=o.invert(n),r=o.invert(r)),r<n&&(a=n,n=r,r=a))),u&&(i=t[0][1],s=t[1][1],l||(i=f[0][1],s=f[1][1],u.invert&&(i=u.invert(i),s=u.invert(s)),s<i&&(a=i,i=s,s=a))),o&&u?[[n,i],[r,s]]:o?[n,r]:u&&[i,s])},e.clear=function(){return l=null,f[0][0]=f[0][1]=f[1][0]=f[1][1]=0,e},e.empty=function(){return o&&f[0][0]===f[1][0]||u&&f[0][1]===f[1][1]},d3.rebind(e,s,"on")};var eo={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},to=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]];d3.behavior={},d3.behavior.drag=function(){function e(){this.on("mousedown.drag",t).on("touchstart.drag",t)}function t(){function e(){var e=o.parentNode;return f?d3.touches(e).filter(function(e){return e.identifier===f})[0]:d3.mouse(e)}function t(){if(!o.parentNode)return i();var t=e(),n=t[0]-c[0],r=t[1]-c[1];h|=n|r,c=t,M(),u({type:"drag",x:t[0]+l[0],y:t[1]+l[1],dx:n,dy:r})}function i(){u({type:"dragend"}),h&&(M(),d3.event.target===a&&p.on("click.drag",s,!0)),p.on(f?"touchmove.drag-"+f:"mousemove.drag",null).on(f?"touchend.drag-"+f:"mouseup.drag",null)}function s(){M(),p.on("click.drag",null)}var o=this,u=n.of(o,arguments),a=d3.event.target,f=d3.event.touches&&d3.event.changedTouches[0].identifier,l,c=e(),h=0,p=d3.select(window).on(f?"touchmove.drag-"+f:"mousemove.drag",t).on(f?"touchend.drag-"+f:"mouseup.drag",i,!0);r?(l=r.apply(o,arguments),l=[l.x-c[0],l.y-c[1]]):l=[0,0],f||M(),u({type:"dragstart"})}var n=D(e,"drag","dragstart","dragend"),r=null;return e.origin=function(t){return arguments.length?(r=t,e):r},d3.rebind(e,n,"on")},d3.behavior.zoom=function(){function e(){this.on("mousedown.zoom",o).on("mousewheel.zoom",u).on("mousemove.zoom",a).on("DOMMouseScroll.zoom",u).on("dblclick.zoom",f).on("touchstart.zoom",l).on("touchmove.zoom",c).on("touchend.zoom",l)}function t(e){return[(e[0]-h[0])/d,(e[1]-h[1])/d]}function n(e){return[e[0]*d+h[0],e[1]*d+h[1]]}function r(e){d=Math.max(m[0],Math.min(m[1],e))}function i(e,t){t=n(t),h[0]+=e[0]-t[0],h[1]+=e[1]-t[1]}function s(e){b&&b.domain(y.range().map(function(e){return(e-h[0])/d}).map(y.invert)),E&&E.domain(w.range().map(function(e){return(e-h[1])/d}).map(w.invert)),d3.event.preventDefault(),e({type:"zoom",scale:d,translate:h})}function o(){function e(){f=1,i(d3.mouse(o),c),s(u)}function n(){f&&M(),l.on("mousemove.zoom",null).on("mouseup.zoom",null),f&&d3.event.target===a&&l.on("click.zoom",r,!0)}function r(){M(),l.on("click.zoom",null)}var o=this,u=g.of(o,arguments),a=d3.event.target,f=0,l=d3.select(window).on("mousemove.zoom",e).on("mouseup.zoom",n),c=t(d3.mouse(o));window.focus(),M()}function u(){p||(p=t(d3.mouse(this))),r(Math.pow(2,Rn()*.002)*d),i(d3.mouse(this),p),s(g.of(this,arguments))}function a(){p=null}function f(){var e=d3.mouse(this),n=t(e);r(d3.event.shiftKey?d/2:d*2),i(e,n),s(g.of(this,arguments))}function l(){var e=d3.touches(this),n=Date.now();v=d,p={},e.forEach(function(e){p[e.identifier]=t(e)}),M();if(e.length===1){if(n-S<500){var o=e[0],u=t(e[0]);r(d*2),i(o,u),s(g.of(this,arguments))}S=n}}function c(){var e=d3.touches(this),t=e[0],n=p[t.identifier];if(o=e[1]){var o,u=p[o.identifier];t=[(t[0]+o[0])/2,(t[1]+o[1])/2],n=[(n[0]+u[0])/2,(n[1]+u[1])/2],r(d3.event.scale*v)}i(t,n),S=null,s(g.of(this,arguments))}var h=[0,0],p,d=1,v,m=ro,g=D(e,"zoom"),y,b,w,E,S;return e.translate=function(t){return arguments.length?(h=t.map(Number),e):h},e.scale=function(t){return arguments.length?(d=+t,e):d},e.scaleExtent=function(t){return arguments.length?(m=t==null?ro:t.map(Number),e):m},e.x=function(t){return arguments.length?(b=t,y=t.copy(),e):b},e.y=function(t){return arguments.length?(E=t,w=t.copy(),e):E},d3.rebind(e,g,"on")};var no,ro=[0,Infinity];d3.layout={},d3.layout.bundle=function(){return function(e){var t=[],n=-1,r=e.length;while(++n<r)t.push(Un(e[n]));return t}},d3.layout.chord=function(){function e(){var e={},n=[],c=d3.range(o),h=[],p,d,v,m,g;r=[],i=[],p=0,m=-1;while(++m<o){d=0,g=-1;while(++g<o)d+=s[m][g];n.push(d),h.push(d3.range(o)),p+=d}a&&c.sort(function(e,t){return a(n[e],n[t])}),f&&h.forEach(function(e,t){e.sort(function(e,n){return f(s[t][e],s[t][n])})}),p=(2*Math.PI-u*o)/p,d=0,m=-1;while(++m<o){v=d,g=-1;while(++g<o){var y=c[m],b=h[y][g],w=s[y][b],E=d,S=d+=w*p;e[y+"-"+b]={index:y,subindex:b,startAngle:E,endAngle:S,value:w}}i[y]={index:y,startAngle:v,endAngle:d,value:(d-v)/p},d+=u}m=-1;while(++m<o){g=m-1;while(++g<o){var x=e[m+"-"+g],T=e[g+"-"+m];(x.value||T.value)&&r.push(x.value<T.value?{source:T,target:x}:{source:x,target:T})}}l&&t()}function t(){r.sort(function(e,t){return l((e.source.value+e.target.value)/2,(t.source.value+t.target.value)/2)})}var n={},r,i,s,o,u=0,a,f,l;return n.matrix=function(e){return arguments.length?(o=(s=e)&&s.length,r=i=null,n):s},n.padding=function(e){return arguments.length?(u=e,r=i=null,n):u},n.sortGroups=function(e){return arguments.length?(a=e,r=i=null,n):a},n.sortSubgroups=function(e){return arguments.length?(f=e,r=null,n):f},n.sortChords=function(e){return arguments.length?(l=e,r&&t(),n):l},n.chords=function(){return r||e(),r},n.groups=function(){return i||e(),i},n},d3.layout.force=function(){function e(e){return function(t,n,r,i,s){if(t.point!==e){var o=t.cx-e.x,u=t.cy-e.y,a=1/Math.sqrt(o*o+u*u);if((i-n)*a<d){var f=t.charge*a*a;return e.px-=o*f,e.py-=u*f,!0}if(t.point&&isFinite(a)){var f=t.pointCharge*a*a;e.px-=o*f,e.py-=u*f}}return!t.charge}}function t(e){e.px=d3.event.x,e.py=d3.event.y,n.resume()}var n={},r=d3.dispatch("start","tick","end"),s=[1,1],o,a,f=.9,l=Qn,c=Gn,h=-30,p=.1,d=.8,v,m=[],g=[],y,b,w;return n.tick=function(){if((a*=.99)<.005)return r.end({type:"end",alpha:a=0}),!0;var t=m.length,n=g.length,i,o,u,l,c,d,v,E,S;for(o=0;o<n;++o){u=g[o],l=u.source,c=u.target,E=c.x-l.x,S=c.y-l.y;if(d=E*E+S*S)d=a*b[o]*((d=Math.sqrt(d))-y[o])/d,E*=d,S*=d,c.x-=E*(v=l.weight/(c.weight+l.weight)),c.y-=S*v,l.x+=E*(v=1-v),l.y+=S*v}if(v=a*p){E=s[0]/2,S=s[1]/2,o=-1;if(v)while(++o<t)u=m[o],u.x+=(E-u.x)*v,u.y+=(S-u.y)*v}if(h){Kn(i=d3.geom.quadtree(m),a,w),o=-1;while(++o<t)(u=m[o]).fixed||i.visit(e(u))}o=-1;while(++o<t)u=m[o],u.fixed?(u.x=u.px,u.y=u.py):(u.x-=(u.px-(u.px=u.x))*f,u.y-=(u.py-(u.py=u.y))*f);r.tick({type:"tick",alpha:a})},n.nodes=function(e){return arguments.length?(m=e,n):m},n.links=function(e){return arguments.length?(g=e,n):g},n.size=function(e){return arguments.length?(s=e,n):s},n.linkDistance=function(e){return arguments.length?(l=u(e),n):l},n.distance=n.linkDistance,n.linkStrength=function(e){return arguments.length?(c=u(e),n):c},n.friction=function(e){return arguments.length?(f=e,n):f},n.charge=function(e){return arguments.length?(h=typeof e=="function"?e:+e,n):h},n.gravity=function(e){return arguments.length?(p=e,n):p},n.theta=function(e){return arguments.length?(d=e,n):d},n.alpha=function(e){return arguments.length?(a?e>0?a=e:a=0:e>0&&(r.start({type:"start",alpha:a=e}),d3.timer(n.tick)),n):a},n.start=function(){function e(e,n){var i=t(r),s=-1,o=i.length,u;while(++s<o)if(!isNaN(u=i[s][e]))return u;return Math.random()*n}function t(){if(!p){p=[];for(i=0;i<o;++i)p[i]=[];for(i=0;i<u;++i){var e=g[i];p[e.source.index].push(e.target),p[e.target.index].push(e.source)}}return p[r]}var r,i,o=m.length,u=g.length,a=s[0],f=s[1],p,d;for(r=0;r<o;++r)(d=m[r]).index=r,d.weight=0;y=[],b=[];for(r=0;r<u;++r)d=g[r],typeof d.source=="number"&&(d.source=m[d.source]),typeof d.target=="number"&&(d.target=m[d.target]),y[r]=l.call(this,d,r),b[r]=c.call(this,d,r),++d.source.weight,++d.target.weight;for(r=0;r<o;++r)d=m[r],isNaN(d.x)&&(d.x=e("x",a)),isNaN(d.y)&&(d.y=e("y",f)),isNaN(d.px)&&(d.px=d.x),isNaN(d.py)&&(d.py=d.y);w=[];if(typeof h=="function")for(r=0;r<o;++r)w[r]=+h.call(this,m[r],r);else for(r=0;r<o;++r)w[r]=h;return n.resume()},n.resume=function(){return n.alpha(.1)},n.stop=function(){return n.alpha(0)},n.drag=function(){o||(o=d3.behavior.drag().origin(i).on("dragstart",Xn).on("drag",t).on("dragend",Vn)),this.on("mouseover.force",$n).on("mouseout.force",Jn).call(o)},d3.rebind(n,r,"on")},d3.layout.partition=function(){function e(t,n,r,i){var s=t.children;t.x=n,t.y=t.depth*i,t.dx=r,t.dy=i;if(s&&(u=s.length)){var o=-1,u,a,f;r=t.value?r/t.value:0;while(++o<u)e(a=s[o],n,f=a.value*r,i),n+=f}}function t(e){var n=e.children,r=0;if(n&&(s=n.length)){var i=-1,s;while(++i<s)r=Math.max(r,t(n[i]))}return 1+r}function n(n,s){var o=r.call(this,n,s);return e(o[0],0,i[0],i[1]/t(o[0])),o}var r=d3.layout.hierarchy(),i=[1,1];return n.size=function(e){return arguments.length?(i=e,n):i},fr(n,r)},d3.layout.pie=function(){function e(s,o){var u=s.map(function(n,r){return+t.call(e,n,r)}),a=+(typeof r=="function"?r.apply(this,arguments):r),f=((typeof i=="function"?i.apply(this,arguments):i)-r)/d3.sum(u),l=d3.range(s.length);n!=null&&l.sort(n===io?function(e,t){return u[t]-u[e]}:function(e,t){return n(s[e],s[t])});var c=[];return l.forEach(function(e){var t;c[e]={data:s[e],value:t=u[e],startAngle:a,endAngle:a+=t*f}}),c}var t=Number,n=io,r=0,i=2*Math.PI;return e.value=function(n){return arguments.length?(t=n,e):t},e.sort=function(t){return arguments.length?(n=t,e):n},e.startAngle=function(t){return arguments.length?(r=t,e):r},e.endAngle=function(t){return arguments.length?(i=t,e):i},e};var io={};d3.layout.stack=function(){function e(i,a){var f=i.map(function(n,r){return t.call(e,n,r)}),l=f.map(function(t,n){return t.map(function(t,n){return[o.call(e,t,n),u.call(e,t,n)]})}),c=n.call(e,l,a);f=d3.permute(f,c),l=d3.permute(l,c);var h=r.call(e,l,a),p=f.length,d=f[0].length,v,m,g;for(m=0;m<d;++m){s.call(e,f[0][m],g=h[m],l[0][m][1]);for(v=1;v<p;++v)s.call(e,f[v][m],g+=l[v-1][m][1],l[v][m][1])}return i}var t=i,n=tr,r=nr,s=er,o=Yn,u=Zn;return e.values=function(n){return arguments.length?(t=n,e):t},e.order=function(t){return arguments.length?(n=typeof t=="function"?t:so.get(t)||tr,e):n},e.offset=function(t){return arguments.length?(r=typeof t=="function"?t:oo.get(t)||nr,e):r},e.x=function(t){return arguments.length?(o=t,e):o},e.y=function(t){return arguments.length?(u=t,e):u},e.out=function(t){return arguments.length?(s=t,e):s},e};var so=d3.map({"inside-out":function(e){var t=e.length,n,r,i=e.map(rr),s=e.map(ir),o=d3.range(t).sort(function(e,t){return i[e]-i[t]}),u=0,a=0,f=[],l=[];for(n=0;n<t;++n)r=o[n],u<a?(u+=s[r],f.push(r)):(a+=s[r],l.push(r));return l.reverse().concat(f)},reverse:function(e){return d3.range(e.length).reverse()},"default":tr}),oo=d3.map({silhouette:function(e){var t=e.length,n=e[0].length,r=[],i=0,s,o,u,a=[];for(o=0;o<n;++o){for(s=0,u=0;s<t;s++)u+=e[s][o][1];u>i&&(i=u),r.push(u)}for(o=0;o<n;++o)a[o]=(i-r[o])/2;return a},wiggle:function(e){var t=e.length,n=e[0],r=n.length,i=0,s,o,u,a,f,l,c,h,p,d=[];d[0]=h=p=0;for(o=1;o<r;++o){for(s=0,a=0;s<t;++s)a+=e[s][o][1];for(s=0,f=0,c=n[o][0]-n[o-1][0];s<t;++s){for(u=0,l=(e[s][o][1]-e[s][o-1][1])/(2*c);u<s;++u)l+=(e[u][o][1]-e[u][o-1][1])/c;f+=l*e[s][o][1]}d[o]=h-=a?f/a*c:0,h<p&&(p=h)}for(o=0;o<r;++o)d[o]-=p;return d},expand:function(e){var t=e.length,n=e[0].length,r=1/t,i,s,o,u=[];for(s=0;s<n;++s){for(i=0,o=0;i<t;i++)o+=e[i][s][1];if(o)for(i=0;i<t;i++)e[i][s][1]/=o;else for(i=0;i<t;i++)e[i][s][1]=r}for(s=0;s<n;++s)u[s]=0;return u},zero:nr});d3.layout.histogram=function(){function e(e,s){var o=[],u=e.map(n,this),a=r.call(this,u,s),f=i.call(this,a,u,s),l,s=-1,c=u.length,h=f.length-1,p=t?1:1/c,d;while(++s<h)l=o[s]=[],l.dx=f[s+1]-(l.x=f[s]),l.y=0;if(h>0){s=-1;while(++s<c)d=u[s],d>=a[0]&&d<=a[1]&&(l=o[d3.bisect(f,d,1,h)-1],l.y+=p,l.push(e[s]))}return o}var t=!0,n=Number,r=ar,i=or;return e.value=function(t){return arguments.length?(n=t,e):n},e.range=function(t){return arguments.length?(r=u(t),e):r},e.bins=function(t){return arguments.length?(i=typeof t=="number"?function(e){return ur(e,t)}:u(t),e):i},e.frequency=function(n){return arguments.length?(t=!!n,e):t},e},d3.layout.hierarchy=function(){function e(t,o,u){var a=i.call(n,t,o),f=uo?t:{data:t};f.depth=o,u.push(f);if(a&&(c=a.length)){var l=-1,c,h=f.children=[],p=0,d=o+1,v;while(++l<c)v=e(a[l],d,u),v.parent=f,h.push(v),p+=v.value;r&&h.sort(r),s&&(f.value=p)}else s&&(f.value=+s.call(n,t,o)||0);return f}function t(e,r){var i=e.children,o=0;if(i&&(a=i.length)){var u=-1,a,f=r+1;while(++u<a)o+=t(i[u],f)}else s&&(o=+s.call(n,uo?e:e.data,r)||0);return s&&(e.value=o),o}function n(t){var n=[];return e(t,0,n),n}var r=hr,i=lr,s=cr;return n.sort=function(e){return arguments.length?(r=e,n):r},n.children=function(e){return arguments.length?(i=e,n):i},n.value=function(e){return arguments.length?(s=e,n):s},n.revalue=function(e){return t(e,0),e},n};var uo=!1;d3.layout.pack=function(){function e(e,i){var s=t.call(this,e,i),o=s[0];o.x=0,o.y=0,Pr(o,function(e){e.r=Math.sqrt(e.value)}),Pr(o,yr);var u=r[0],a=r[1],f=Math.max(2*o.r/u,2*o.r/a);if(n>0){var l=n*f/2;Pr(o,function(e){e.r+=l}),Pr(o,yr),Pr(o,function(e){e.r-=l}),f=Math.max(2*o.r/u,2*o.r/a)}return Er(o,u/2,a/2,1/f),s}var t=d3.layout.hierarchy().sort(dr),n=0,r=[1,1];return e.size=function(t){return arguments.length?(r=t,e):r},e.padding=function(t){return arguments.length?(n=+t,e):n},fr(e,t)},d3.layout.cluster=function(){function e(e,i){var s=t.call(this,e,i),o=s[0],u,a=0,f,l;Pr(o,function(e){var t=e.children;t&&t.length?(e.x=Tr(t),e.y=xr(t)):(e.x=u?a+=n(e,u):0,e.y=0,u=e)});var c=Nr(o),h=Cr(o),p=c.x-n(c,h)/2,d=h.x+n(h,c)/2;return Pr(o,function(e){e.x=(e.x-p)/(d-p)*r[0],e.y=(1-(o.y?e.y/o.y:1))*r[1]}),s}var t=d3.layout.hierarchy().sort(null).value(null),n=kr,r=[1,1];return e.separation=function(t){return arguments.length?(n=t,e):n},e.size=function(t){return arguments.length?(r=t,e):r},fr(e,t)},d3.layout.tree=function(){function e(e,i){function s(e,t){var r=e.children,i=e._tree;if(r&&(o=r.length)){var o,a=r[0],f,l=a,c,h=-1;while(++h<o)c=r[h],s(c,f),l=u(c,f,l),f=c;Hr(e);var p=.5*(a._tree.prelim+c._tree.prelim);t?(i.prelim=t._tree.prelim+n(e,t),i.mod=i.prelim-p):i.prelim=p}else t&&(i.prelim=t._tree.prelim+n(e,t))}function o(e,t){e.x=e._tree.prelim+t;var n=e.children;if(n&&(i=n.length)){var r=-1,i;t+=e._tree.mod;while(++r<i)o(n[r],t)}}function u(e,t,r){if(t){var i=e,s=e,o=t,u=e.parent.children[0],a=i._tree.mod,f=s._tree.mod,l=o._tree.mod,c=u._tree.mod,h;while(o=Ar(o),i=Lr(i),o&&i)u=Lr(u),s=Ar(s),s._tree.ancestor=e,h=o._tree.prelim+l-i._tree.prelim-a+n(o,i),h>0&&(Br(jr(o,e,r),e,h),a+=h,f+=h),l+=o._tree.mod,a+=i._tree.mod,c+=u._tree.mod,f+=s._tree.mod;o&&!Ar(s)&&(s._tree.thread=o,s._tree.mod+=l-f),i&&!Lr(u)&&(u._tree.thread=i,u._tree.mod+=a-c,r=e)}return r}var a=t.call(this,e,i),f=a[0];Pr(f,function(e,t){e._tree={ancestor:e,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),s(f),o(f,-f._tree.prelim);var l=Or(f,_r),c=Or(f,Mr),h=Or(f,Dr),p=l.x-n(l,c)/2,d=c.x+n(c,l)/2,v=h.depth||1;return Pr(f,function(e){e.x=(e.x-p)/(d-p)*r[0],e.y=e.depth/v*r[1],delete e._tree}),a}var t=d3.layout.hierarchy().sort(null).value(null),n=kr,r=[1,1];return e.separation=function(t){return arguments.length?(n=t,e):n},e.size=function(t){return arguments.length?(r=t,e):r},fr(e,t)},d3.layout.treemap=function(){function e(e,t){var n=-1,r=e.length,i,s;while(++n<r)s=(i=e[n]).value*(t<0?0:t),i.area=isNaN(s)||s<=0?0:s}function t(n){var s=n.children;if(s&&s.length){var o=l(n),u=[],a=s.slice(),f,c=Infinity,h,p=Math.min(o.dx,o.dy),d;e(a,o.dx*o.dy/n.value),u.area=0;while((d=a.length)>0)u.push(f=a[d-1]),u.area+=f.area,(h=r(u,p))<=c?(a.pop(),c=h):(u.area-=u.pop().area,i(u,p,o,!1),p=Math.min(o.dx,o.dy),u.length=u.area=0,c=Infinity);u.length&&(i(u,p,o,!0),u.length=u.area=0),s.forEach(t)}}function n(t){var r=t.children;if(r&&r.length){var s=l(t),o=r.slice(),u,a=[];e(o,s.dx*s.dy/t.value),a.area=0;while(u=o.pop())a.push(u),a.area+=u.area,u.z!=null&&(i(a,u.z?s.dx:s.dy,s,!o.length),a.length=a.area=0);r.forEach(n)}}function r(e,t){var n=e.area,r,i=0,s=Infinity,o=-1,u=e.length;while(++o<u){if(!(r=e[o].area))continue;r<s&&(s=r),r>i&&(i=r)}return n*=n,t*=t,n?Math.max(t*i*p/n,n/(t*s*p)):Infinity}function i(e,t,n,r){var i=-1,s=e.length,o=n.x,a=n.y,f=t?u(e.area/t):0,l;if(t==n.dx){if(r||f>n.dy)f=n.dy;while(++i<s)l=e[i],l.x=o,l.y=a,l.dy=f,o+=l.dx=Math.min(n.x+n.dx-o,f?u(l.area/f):0);l.z=!0,l.dx+=n.x+n.dx-o,n.y+=f,n.dy-=f}else{if(r||f>n.dx)f=n.dx;while(++i<s)l=e[i],l.x=o,l.y=a,l.dx=f,a+=l.dy=Math.min(n.y+n.dy-a,f?u(l.area/f):0);l.z=!1,l.dy+=n.y+n.dy-a,n.x+=f,n.dx-=f}}function s(r){var i=h||o(r),s=i[0];return s.x=0,s.y=0,s.dx=a[0],s.dy=a[1],h&&o.revalue(s),e([s],s.dx*s.dy/s.value),(h?n:t)(s),c&&(h=i),i}var o=d3.layout.hierarchy(),u=Math.round,a=[1,1],f=null,l=Fr,c=!1,h,p=.5*(1+Math.sqrt(5));return s.size=function(e){return arguments.length?(a=e,s):a},s.padding=function(e){function t(t){var n=e.call(s,t,t.depth);return n==null?Fr(t):Ir(t,typeof n=="number"?[n,n,n,n]:n)}function n(t){return Ir(t,e)}if(!arguments.length)return f;var r;return l=(f=e)==null?Fr:(r=typeof e)==="function"?t:r==="number"?(e=[e,e,e,e],n):n,s},s.round=function(e){return arguments.length?(u=e?Math.round:Number,s):u!=Number},s.sticky=function(e){return arguments.length?(c=e,h=null,s):c},s.ratio=function(e){return arguments.length?(p=e,s):p},fr(s,o)},d3.csv=qr(",","text/csv"),d3.tsv=qr("	","text/tab-separated-values"),d3.geo={};var ao=Math.PI/180;d3.geo.azimuthal=function(){function e(e){var n=e[0]*ao-s,o=e[1]*ao,f=Math.cos(n),l=Math.sin(n),c=Math.cos(o),h=Math.sin(o),p=t!=="orthographic"?a*h+u*c*f:null,d,v=t==="stereographic"?1/(1+p):t==="gnomonic"?1/p:t==="equidistant"?(d=Math.acos(p),d?d/Math.sin(d):0):t==="equalarea"?Math.sqrt(2/(1+p)):1,m=v*c*l,g=v*(a*c*f-u*h);return[r*m+i[0],r*g+i[1]]}var t="orthographic",n,r=200,i=[480,250],s,o,u,a;return e.invert=function(e){var n=(e[0]-i[0])/r,o=(e[1]-i[1])/r,f=Math.sqrt(n*n+o*o),l=t==="stereographic"?2*Math.atan(f):t==="gnomonic"?Math.atan(f):t==="equidistant"?f:t==="equalarea"?2*Math.asin(.5*f):Math.asin(f),c=Math.sin(l),h=Math.cos(l);return[(s+Math.atan2(n*c,f*u*h+o*a*c))/ao,Math.asin(h*a-(f?o*c*u/f:0))/ao]},e.mode=function(n){return arguments.length?(t=n+"",e):t},e.origin=function(t){return arguments.length?(n=t,s=n[0]*ao,o=n[1]*ao,u=Math.cos(o),a=Math.sin(o),e):n},e.scale=function(t){return arguments.length?(r=+t,e):r},e.translate=function(t){return arguments.length?(i=[+t[0],+t[1]],e):i},e.origin([0,0])},d3.geo.albers=function(){function e(e){var t=u*(ao*e[0]-o),n=Math.sqrt(a-2*u*Math.sin(ao*e[1]))/u;return[i*n*Math.sin(t)+s[0],i*(n*Math.cos(t)-f)+s[1]]}function t(){var t=ao*r[0],i=ao*r[1],s=ao*n[1],l=Math.sin(t),c=Math.cos(t);return o=ao*n[0],u=.5*(l+Math.sin(i)),a=c*c+2*u*l,f=Math.sqrt(a-2*u*Math.sin(s))/u,e}var n=[-98,38],r=[29.5,45.5],i=1e3,s=[480,250],o,u,a,f;return e.invert=function(e){var t=(e[0]-s[0])/i,n=(e[1]-s[1])/i,r=f+n,l=Math.atan2(t,r),c=Math.sqrt(t*t+r*r);return[(o+l/u)/ao,Math.asin((a-c*c*u*u)/(2*u))/ao]},e.origin=function(e){return arguments.length?(n=[+e[0],+e[1]],t()):n},e.parallels=function(e){return arguments.length?(r=[+e[0],+e[1]],t()):r},e.scale=function(t){return arguments.length?(i=+t,e):i},e.translate=function(t){return arguments.length?(s=[+t[0],+t[1]],e):s},t()},d3.geo.albersUsa=function(){function e(e){var s=e[0],o=e[1];return(o>50?n:s<-140?r:o<21?i:t)(e)}var t=d3.geo.albers(),n=d3.geo.albers().origin([-160,60]).parallels([55,65]),r=d3.geo.albers().origin([-160,20]).parallels([8,18]),i=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(s){return arguments.length?(t.scale(s),n.scale(s*.6),r.scale(s),i.scale(s*1.5),e.translate(t.translate())):t.scale()},e.translate=function(s){if(!arguments.length)return t.translate();var o=t.scale()/1e3,u=s[0],a=s[1];return t.translate(s),n.translate([u-400*o,a+170*o]),r.translate([u-190*o,a+200*o]),i.translate([u+580*o,a+430*o]),e},e.scale(t.scale())},d3.geo.bonne=function(){function e(e){var u=e[0]*ao-r,a=e[1]*ao-i;if(s){var f=o+s-a,l=u*Math.cos(a)/f;u=f*Math.sin(l),a=f*Math.cos(l)-o}else u*=Math.cos(a),a*=-1;return[t*u+n[0],t*a+n[1]]}var t=200,n=[480,250],r,i,s,o;return e.invert=function(e){var i=(e[0]-n[0])/t,u=(e[1]-n[1])/t;if(s){var a=o+u,f=Math.sqrt(i*i+a*a);u=o+s-f,i=r+f*Math.atan2(i,a)/Math.cos(u)}else u*=-1,i/=Math.cos(u);return[i/ao,u/ao]},e.parallel=function(t){return arguments.length?(o=1/Math.tan
+(s=t*ao),e):s/ao},e.origin=function(t){return arguments.length?(r=t[0]*ao,i=t[1]*ao,e):[r/ao,i/ao]},e.scale=function(n){return arguments.length?(t=+n,e):t},e.translate=function(t){return arguments.length?(n=[+t[0],+t[1]],e):n},e.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function e(e){var r=e[0]/360,i=-e[1]/360;return[t*r+n[0],t*i+n[1]]}var t=500,n=[480,250];return e.invert=function(e){var r=(e[0]-n[0])/t,i=(e[1]-n[1])/t;return[360*r,-360*i]},e.scale=function(n){return arguments.length?(t=+n,e):t},e.translate=function(t){return arguments.length?(n=[+t[0],+t[1]],e):n},e},d3.geo.mercator=function(){function e(e){var r=e[0]/360,i=-(Math.log(Math.tan(Math.PI/4+e[1]*ao/2))/ao)/360;return[t*r+n[0],t*Math.max(-0.5,Math.min(.5,i))+n[1]]}var t=500,n=[480,250];return e.invert=function(e){var r=(e[0]-n[0])/t,i=(e[1]-n[1])/t;return[360*r,2*Math.atan(Math.exp(-360*i*ao))/ao-90]},e.scale=function(n){return arguments.length?(t=+n,e):t},e.translate=function(t){return arguments.length?(n=[+t[0],+t[1]],e):n},e},d3.geo.path=function(){function e(e,t){typeof s=="function"&&(o=Ur(s.apply(this,arguments))),f(e);var n=a.length?a.join(""):null;return a=[],n}function t(e){return u(e).join(",")}function n(e){var t=i(e[0]),n=0,r=e.length;while(++n<r)t-=i(e[n]);return t}function r(e){var t=d3.geom.polygon(e[0].map(u)),n=t.area(),r=t.centroid(n<0?(n*=-1,1):-1),i=r[0],s=r[1],o=n,a=0,f=e.length;while(++a<f)t=d3.geom.polygon(e[a].map(u)),n=t.area(),r=t.centroid(n<0?(n*=-1,1):-1),i-=r[0],s-=r[1],o-=n;return[i,s,6*o]}function i(e){return Math.abs(d3.geom.polygon(e.map(u)).area())}var s=4.5,o=Ur(s),u=d3.geo.albersUsa(),a=[],f=Rr({FeatureCollection:function(e){var t=e.features,n=-1,r=t.length;while(++n<r)a.push(f(t[n].geometry))},Feature:function(e){f(e.geometry)},Point:function(e){a.push("M",t(e.coordinates),o)},MultiPoint:function(e){var n=e.coordinates,r=-1,i=n.length;while(++r<i)a.push("M",t(n[r]),o)},LineString:function(e){var n=e.coordinates,r=-1,i=n.length;a.push("M");while(++r<i)a.push(t(n[r]),"L");a.pop()},MultiLineString:function(e){var n=e.coordinates,r=-1,i=n.length,s,o,u;while(++r<i){s=n[r],o=-1,u=s.length,a.push("M");while(++o<u)a.push(t(s[o]),"L");a.pop()}},Polygon:function(e){var n=e.coordinates,r=-1,i=n.length,s,o,u;while(++r<i){s=n[r],o=-1;if((u=s.length-1)>0){a.push("M");while(++o<u)a.push(t(s[o]),"L");a[a.length-1]="Z"}}},MultiPolygon:function(e){var n=e.coordinates,r=-1,i=n.length,s,o,u,f,l,c;while(++r<i){s=n[r],o=-1,u=s.length;while(++o<u){f=s[o],l=-1;if((c=f.length-1)>0){a.push("M");while(++l<c)a.push(t(f[l]),"L");a[a.length-1]="Z"}}}},GeometryCollection:function(e){var t=e.geometries,n=-1,r=t.length;while(++n<r)a.push(f(t[n]))}}),l=e.area=Rr({FeatureCollection:function(e){var t=0,n=e.features,r=-1,i=n.length;while(++r<i)t+=l(n[r]);return t},Feature:function(e){return l(e.geometry)},Polygon:function(e){return n(e.coordinates)},MultiPolygon:function(e){var t=0,r=e.coordinates,i=-1,s=r.length;while(++i<s)t+=n(r[i]);return t},GeometryCollection:function(e){var t=0,n=e.geometries,r=-1,i=n.length;while(++r<i)t+=l(n[r]);return t}},0),c=e.centroid=Rr({Feature:function(e){return c(e.geometry)},Polygon:function(e){var t=r(e.coordinates);return[t[0]/t[2],t[1]/t[2]]},MultiPolygon:function(e){var t=0,n=e.coordinates,i,s=0,o=0,u=0,a=-1,f=n.length;while(++a<f)i=r(n[a]),s+=i[0],o+=i[1],u+=i[2];return[s/u,o/u]}});return e.projection=function(t){return u=t,e},e.pointRadius=function(t){return typeof t=="function"?s=t:(s=+t,o=Ur(s)),e},e},d3.geo.bounds=function(e){var t=Infinity,n=Infinity,r=-Infinity,i=-Infinity;return zr(e,function(e,s){e<t&&(t=e),e>r&&(r=e),s<n&&(n=s),s>i&&(i=s)}),[[t,n],[r,i]]};var fo={Feature:Wr,FeatureCollection:Xr,GeometryCollection:Vr,LineString:$r,MultiLineString:Jr,MultiPoint:$r,MultiPolygon:Kr,Point:Qr,Polygon:Gr};d3.geo.circle=function(){function e(){}function t(e){return a.distance(e)<u}function n(e){var t=-1,n=e.length,i=[],s,o,f,l,c;while(++t<n)c=a.distance(f=e[t]),c<u?(o&&i.push(ti(o,f)((l-u)/(l-c))),i.push(f),s=o=null):(o=f,!s&&i.length&&(i.push(ti(i[i.length-1],o)((u-l)/(c-l))),s=o)),l=c;return s=e[0],o=i[0],o&&f[0]===s[0]&&f[1]===s[1]&&(f[0]!==o[0]||f[1]!==o[1])&&i.push(o),r(i)}function r(e){var t=0,n=e.length,r,i,s=n?[e[0]]:e,o,u=a.source();while(++t<n){o=a.source(e[t-1])(e[t]).coordinates;for(r=0,i=o.length;++r<i;)s.push(o[r])}return a.source(u),s}var s=[0,0],o=89.99,u=o*ao,a=d3.geo.greatArc().source(s).target(i);e.clip=function(e){return typeof s=="function"&&a.source(s.apply(this,arguments)),f(e)||null};var f=Rr({FeatureCollection:function(e){var t=e.features.map(f).filter(i);return t&&(e=Object.create(e),e.features=t,e)},Feature:function(e){var t=f(e.geometry);return t&&(e=Object.create(e),e.geometry=t,e)},Point:function(e){return t(e.coordinates)&&e},MultiPoint:function(e){var n=e.coordinates.filter(t);return n.length&&{type:e.type,coordinates:n}},LineString:function(e){var t=n(e.coordinates);return t.length&&(e=Object.create(e),e.coordinates=t,e)},MultiLineString:function(e){var t=e.coordinates.map(n).filter(function(e){return e.length});return t.length&&(e=Object.create(e),e.coordinates=t,e)},Polygon:function(e){var t=e.coordinates.map(n);return t[0].length&&(e=Object.create(e),e.coordinates=t,e)},MultiPolygon:function(e){var t=e.coordinates.map(function(e){return e.map(n)}).filter(function(e){return e[0].length});return t.length&&(e=Object.create(e),e.coordinates=t,e)},GeometryCollection:function(e){var t=e.geometries.map(f).filter(i);return t.length&&(e=Object.create(e),e.geometries=t,e)}});return e.origin=function(t){return arguments.length?(s=t,typeof s!="function"&&a.source(s),e):s},e.angle=function(t){return arguments.length?(u=(o=+t)*ao,e):o},d3.rebind(e,a,"precision")},d3.geo.greatArc=function(){function e(){var t=e.distance.apply(this,arguments),r=0,u=s/t,a=[n];while((r+=u)<1)a.push(o(r));return a.push(i),{type:"LineString",coordinates:a}}var t=Yr,n,r=Zr,i,s=6*ao,o=ei();return e.distance=function(){return typeof t=="function"&&o.source(n=t.apply(this,arguments)),typeof r=="function"&&o.target(i=r.apply(this,arguments)),o.distance()},e.source=function(r){return arguments.length?(t=r,typeof t!="function"&&o.source(n=t),e):t},e.target=function(t){return arguments.length?(r=t,typeof r!="function"&&o.target(i=r),e):r},e.precision=function(t){return arguments.length?(s=t*ao,e):s/ao},e},d3.geo.greatCircle=d3.geo.circle,d3.geom={},d3.geom.contour=function(e,t){var n=t||ni(e),r=[],i=n[0],s=n[1],o=0,u=0,a=NaN,f=NaN,l=0;do l=0,e(i-1,s-1)&&(l+=1),e(i,s-1)&&(l+=2),e(i-1,s)&&(l+=4),e(i,s)&&(l+=8),l===6?(o=f===-1?-1:1,u=0):l===9?(o=0,u=a===1?-1:1):(o=lo[l],u=co[l]),o!=a&&u!=f&&(r.push([i,s]),a=o,f=u),i+=o,s+=u;while(n[0]!=i||n[1]!=s);return r};var lo=[1,0,1,1,-1,0,-1,1,0,0,0,0,-1,0,-1,NaN],co=[0,-1,0,0,0,-1,0,0,1,-1,1,1,0,-1,0,NaN];d3.geom.hull=function(e){if(e.length<3)return[];var t=e.length,n=t-1,r=[],i=[],s,o,u=0,a,f,l,c,h,p,d,v;for(s=1;s<t;++s)e[s][1]<e[u][1]?u=s:e[s][1]==e[u][1]&&(u=e[s][0]<e[u][0]?s:u);for(s=0;s<t;++s){if(s===u)continue;f=e[s][1]-e[u][1],a=e[s][0]-e[u][0],r.push({angle:Math.atan2(f,a),index:s})}r.sort(function(e,t){return e.angle-t.angle}),d=r[0].angle,p=r[0].index,h=0;for(s=1;s<n;++s)o=r[s].index,d==r[s].angle?(a=e[p][0]-e[u][0],f=e[p][1]-e[u][1],l=e[o][0]-e[u][0],c=e[o][1]-e[u][1],a*a+f*f>=l*l+c*c?r[s].index=-1:(r[h].index=-1,d=r[s].angle,h=s,p=o)):(d=r[s].angle,h=s,p=o);i.push(u);for(s=0,o=0;s<2;++o)r[o].index!==-1&&(i.push(r[o].index),s++);v=i.length;for(;o<n;++o){if(r[o].index===-1)continue;while(!ri(i[v-2],i[v-1],r[o].index,e))--v;i[v++]=r[o].index}var m=[];for(s=0;s<v;++s)m.push(e[i[s]]);return m},d3.geom.polygon=function(e){return e.area=function(){var t=0,n=e.length,r=e[n-1][0]*e[0][1],i=e[n-1][1]*e[0][0];while(++t<n)r+=e[t-1][0]*e[t][1],i+=e[t-1][1]*e[t][0];return(i-r)*.5},e.centroid=function(t){var n=-1,r=e.length,i=0,s=0,o,u=e[r-1],a;arguments.length||(t=-1/(6*e.area()));while(++n<r)o=u,u=e[n],a=o[0]*u[1]-u[0]*o[1],i+=(o[0]+u[0])*a,s+=(o[1]+u[1])*a;return[i*t,s*t]},e.clip=function(t){var n,r=-1,i=e.length,s,o,u=e[i-1],a,f,l;while(++r<i){n=t.slice(),t.length=0,a=e[r],f=n[(o=n.length)-1],s=-1;while(++s<o)l=n[s],ii(l,u,a)?(ii(f,u,a)||t.push(si(f,l,u,a)),t.push(l)):ii(f,u,a)&&t.push(si(f,l,u,a)),f=l;u=a}return t},e},d3.geom.voronoi=function(e){var t=e.map(function(){return[]});return oi(e,function(e){var n,r,i,s,o,u;e.a===1&&e.b>=0?(n=e.ep.r,r=e.ep.l):(n=e.ep.l,r=e.ep.r),e.a===1?(o=n?n.y:-1e6,i=e.c-e.b*o,u=r?r.y:1e6,s=e.c-e.b*u):(i=n?n.x:-1e6,o=e.c-e.a*i,s=r?r.x:1e6,u=e.c-e.a*s);var a=[i,o],f=[s,u];t[e.region.l.index].push(a,f),t[e.region.r.index].push(a,f)}),t.map(function(t,n){var r=e[n][0],i=e[n][1];return t.forEach(function(e){e.angle=Math.atan2(e[0]-r,e[1]-i)}),t.sort(function(e,t){return e.angle-t.angle}).filter(function(e,n){return!n||e.angle-t[n-1].angle>1e-10})})};var ho={l:"r",r:"l"};d3.geom.delaunay=function(e){var t=e.map(function(){return[]}),n=[];return oi(e,function(n){t[n.region.l.index].push(e[n.region.r.index])}),t.forEach(function(t,r){var i=e[r],s=i[0],o=i[1];t.forEach(function(e){e.angle=Math.atan2(e[0]-s,e[1]-o)}),t.sort(function(e,t){return e.angle-t.angle});for(var u=0,a=t.length-1;u<a;u++)n.push([i,t[u],t[u+1]])}),n},d3.geom.quadtree=function(e,t,n,r,i){function s(e,t,n,r,i,s){if(isNaN(t.x)||isNaN(t.y))return;if(e.leaf){var u=e.point;u?Math.abs(u.x-t.x)+Math.abs(u.y-t.y)<.01?o(e,t,n,r,i,s):(e.point=null,o(e,u,n,r,i,s),o(e,t,n,r,i,s)):e.point=t}else o(e,t,n,r,i,s)}function o(e,t,n,r,i,o){var u=(n+i)*.5,a=(r+o)*.5,f=t.x>=u,l=t.y>=a,c=(l<<1)+f;e.leaf=!1,e=e.nodes[c]||(e.nodes[c]=ui()),f?n=u:i=u,l?r=a:o=a,s(e,t,n,r,i,o)}var u,a=-1,f=e.length;f&&isNaN(e[0].x)&&(e=e.map(fi));if(arguments.length<5)if(arguments.length===3)i=r=n,n=t;else{t=n=Infinity,r=i=-Infinity;while(++a<f)u=e[a],u.x<t&&(t=u.x),u.y<n&&(n=u.y),u.x>r&&(r=u.x),u.y>i&&(i=u.y);var l=r-t,c=i-n;l>c?i=n+l:r=t+c}var h=ui();return h.add=function(e){s(h,e,t,n,r,i)},h.visit=function(e){ai(e,h,t,n,r,i)},e.forEach(h.add),h},d3.time={};var po=Date,vo=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];li.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){mo.setUTCDate.apply(this._,arguments)},setDay:function(){mo.setUTCDay.apply(this._,arguments)},setFullYear:function(){mo.setUTCFullYear.apply(this._,arguments)},setHours:function(){mo.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){mo.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){mo.setUTCMinutes.apply(this._,arguments)},setMonth:function(){mo.setUTCMonth.apply(this._,arguments)},setSeconds:function(){mo.setUTCSeconds.apply(this._,arguments)},setTime:function(){mo.setTime.apply(this._,arguments)}};var mo=Date.prototype,go="%a %b %e %H:%M:%S %Y",yo="%m/%d/%y",bo="%H:%M:%S",wo=vo,Eo=wo.map(ci),So=["January","February","March","April","May","June","July","August","September","October","November","December"],xo=So.map(ci);d3.time.format=function(e){function t(t){var r=[],i=-1,s=0,o,u;while(++i<n)e.charCodeAt(i)==37&&(r.push(e.substring(s,i),(u=Po[o=e.charAt(++i)])?u(t):o),s=i+1);return r.push(e.substring(s,i)),r.join("")}var n=e.length;return t.parse=function(t){var n={y:1900,m:0,d:1,H:0,M:0,S:0,L:0},r=hi(n,e,t,0);if(r!=t.length)return null;"p"in n&&(n.H=n.H%12+n.p*12);var i=new po;return i.setFullYear(n.y,n.m,n.d),i.setHours(n.H,n.M,n.S,n.L),i},t.toString=function(){return e},t};var To=d3.format("02d"),No=d3.format("03d"),Co=d3.format("04d"),ko=d3.format("2d"),Lo=pi(wo),Ao=pi(Eo),Oo=pi(So),Mo=di(So),_o=pi(xo),Do=di(xo),Po={a:function(e){return Eo[e.getDay()]},A:function(e){return wo[e.getDay()]},b:function(e){return xo[e.getMonth()]},B:function(e){return So[e.getMonth()]},c:d3.time.format(go),d:function(e){return To(e.getDate())},e:function(e){return ko(e.getDate())},H:function(e){return To(e.getHours())},I:function(e){return To(e.getHours()%12||12)},j:function(e){return No(1+d3.time.dayOfYear(e))},L:function(e){return No(e.getMilliseconds())},m:function(e){return To(e.getMonth()+1)},M:function(e){return To(e.getMinutes())},p:function(e){return e.getHours()>=12?"PM":"AM"},S:function(e){return To(e.getSeconds())},U:function(e){return To(d3.time.sundayOfYear(e))},w:function(e){return e.getDay()},W:function(e){return To(d3.time.mondayOfYear(e))},x:d3.time.format(yo),X:d3.time.format(bo),y:function(e){return To(e.getFullYear()%100)},Y:function(e){return Co(e.getFullYear()%1e4)},Z:_i,"%":function(e){return"%"}},Ho={a:vi,A:mi,b:gi,B:yi,c:bi,d:Ci,e:Ci,H:ki,I:ki,L:Oi,m:Ni,M:Li,p:Mi,S:Ai,x:wi,X:Ei,y:xi,Y:Si},Bo=/^\s*\d+/,jo=d3.map({am:0,pm:1});d3.time.format.utc=function(e){function t(e){try{po=li;var t=new po;return t._=e,n(t)}finally{po=Date}}var n=d3.time.format(e);return t.parse=function(e){try{po=li;var t=n.parse(e);return t&&t._}finally{po=Date}},t.toString=n.toString,t};var Fo=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?Di:Fo,Di.parse=function(e){var t=new Date(e);return isNaN(t)?null:t},Di.toString=Fo.toString,d3.time.second=Pi(function(e){return new po(Math.floor(e/1e3)*1e3)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*1e3)},function(e){return e.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=Pi(function(e){return new po(Math.floor(e/6e4)*6e4)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*6e4)},function(e){return e.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=Pi(function(e){var t=e.getTimezoneOffset()/60;return new po((Math.floor(e/36e5-t)+t)*36e5)},function(e,t){e.setTime(e.getTime()+Math.floor(t)*36e5)},function(e){return e.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=Pi(function(e){var t=new po(1970,0);return t.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),t},function(e,t){e.setDate(e.getDate()+t)},function(e){return e.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(e){var t=d3.time.year(e);return Math.floor((e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5)},vo.forEach(function(e,t){e=e.toLowerCase(),t=7-t;var n=d3.time[e]=Pi(function(e){return(e=d3.time.day(e)).setDate(e.getDate()-(e.getDay()+t)%7),e},function(e,t){e.setDate(e.getDate()+Math.floor(t)*7)},function(e){var n=d3.time.year(e).getDay();return Math.floor((d3.time.dayOfYear(e)+(n+t)%7)/7)-(n!==t)});d3.time[e+"s"]=n.range,d3.time[e+"s"].utc=n.utc.range,d3.time[e+"OfYear"]=function(e){var n=d3.time.year(e).getDay();return Math.floor((d3.time.dayOfYear(e)+(n+t)%7)/7)}}),d3.time.week=d3.time.sunday,d3.time.weeks=d3.time.sunday.range,d3.time.weeks.utc=d3.time.sunday.utc.range,d3.time.weekOfYear=d3.time.sundayOfYear,d3.time.month=Pi(function(e){return e=d3.time.day(e),e.setDate(1),e},function(e,t){e.setMonth(e.getMonth()+t)},function(e){return e.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=Pi(function(e){return e=d3.time.day(e),e.setMonth(0,1),e},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e){return e.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var Io=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],qo=[[d3.time.second,1],[d3.time.second,5],[d3.time.second,15],[d3.time.second,30],[d3.time.minute,1],[d3.time.minute,5],[d3.time.minute,15],[d3.time.minute,30],[d3.time.hour,1],[d3.time.hour,3],[d3.time.hour,6],[d3.time.hour,12],[d3.time.day,1],[d3.time.day,2],[d3.time.week,1],[d3.time.month,1],[d3.time.month,3],[d3.time.year,1]],Ro=[[d3.time.format("%Y"),function(e){return!0}],[d3.time.format("%B"),function(e){return e.getMonth()}],[d3.time.format("%b %d"),function(e){return e.getDate()!=1}],[d3.time.format("%a %d"),function(e){return e.getDay()&&e.getDate()!=1}],[d3.time.format("%I %p"),function(e){return e.getHours()}],[d3.time.format("%I:%M"),function(e){return e.getMinutes()}],[d3.time.format(":%S"),function(e){return e.getSeconds()}],[d3.time.format(".%L"),function(e){return e.getMilliseconds()}]],Uo=d3.scale.linear(),zo=Ii(Ro);qo.year=function(e,t){return Uo.domain(e.map(Ri)).ticks(t).map(qi)},d3.time.scale=function(){return Bi(d3.scale.linear(),qo,zo)};var Wo=qo.map(function(e){return[e[0].utc,e[1]]}),Xo=[[d3.time.format.utc("%Y"),function(e){return!0}],[d3.time.format.utc("%B"),function(e){return e.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(e){return e.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(e){return e.getUTCDay()&&e.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(e){return e.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(e){return e.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(e){return e.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(e){return e.getUTCMilliseconds()}]],Vo=Ii(Xo);Wo.year=function(e,t){return Uo.domain(e.map(zi)).ticks(t).map(Ui)},d3.time.scale.utc=function(){return Bi(d3.scale.linear(),Wo,Vo)}})();
\ No newline at end of file
diff --git a/lib/d3.v3.js b/lib/d3.v3.js
new file mode 100644
index 0000000..8dd7ffe
--- /dev/null
+++ b/lib/d3.v3.js
@@ -0,0 +1,8436 @@
+d3 = function() {
+  var d3 = {
+    version: "3.1.5"
+  };
+  if (!Date.now) Date.now = function() {
+    return +new Date();
+  };
+  var d3_document = document, d3_window = window;
+  try {
+    d3_document.createElement("div").style.setProperty("opacity", 0, "");
+  } catch (error) {
+    var d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
+    d3_style_prototype.setProperty = function(name, value, priority) {
+      d3_style_setProperty.call(this, name, value + "", priority);
+    };
+  }
+  d3.ascending = function(a, b) {
+    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+  };
+  d3.descending = function(a, b) {
+    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+  };
+  d3.min = function(array, f) {
+    var i = -1, n = array.length, a, b;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = array[i]) != null && a > b) a = b;
+    } else {
+      while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
+    }
+    return a;
+  };
+  d3.max = function(array, f) {
+    var i = -1, n = array.length, a, b;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = array[i]) != null && b > a) a = b;
+    } else {
+      while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
+    }
+    return a;
+  };
+  d3.extent = function(array, f) {
+    var i = -1, n = array.length, a, b, c;
+    if (arguments.length === 1) {
+      while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
+      while (++i < n) if ((b = array[i]) != null) {
+        if (a > b) a = b;
+        if (c < b) c = b;
+      }
+    } else {
+      while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
+      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
+        if (a > b) a = b;
+        if (c < b) c = b;
+      }
+    }
+    return [ a, c ];
+  };
+  d3.sum = function(array, f) {
+    var s = 0, n = array.length, a, i = -1;
+    if (arguments.length === 1) {
+      while (++i < n) if (!isNaN(a = +array[i])) s += a;
+    } else {
+      while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
+    }
+    return s;
+  };
+  function d3_number(x) {
+    return x != null && !isNaN(x);
+  }
+  d3.mean = function(array, f) {
+    var n = array.length, a, m = 0, i = -1, j = 0;
+    if (arguments.length === 1) {
+      while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
+    } else {
+      while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
+    }
+    return j ? m : undefined;
+  };
+  d3.quantile = function(values, p) {
+    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
+    return e ? v + e * (values[h] - v) : v;
+  };
+  d3.median = function(array, f) {
+    if (arguments.length > 1) array = array.map(f);
+    array = array.filter(d3_number);
+    return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
+  };
+  d3.bisector = function(f) {
+    return {
+      left: function(a, x, lo, hi) {
+        if (arguments.length < 3) lo = 0;
+        if (arguments.length < 4) hi = a.length;
+        while (lo < hi) {
+          var mid = lo + hi >>> 1;
+          if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid;
+        }
+        return lo;
+      },
+      right: function(a, x, lo, hi) {
+        if (arguments.length < 3) lo = 0;
+        if (arguments.length < 4) hi = a.length;
+        while (lo < hi) {
+          var mid = lo + hi >>> 1;
+          if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
+        }
+        return lo;
+      }
+    };
+  };
+  var d3_bisector = d3.bisector(function(d) {
+    return d;
+  });
+  d3.bisectLeft = d3_bisector.left;
+  d3.bisect = d3.bisectRight = d3_bisector.right;
+  d3.shuffle = function(array) {
+    var m = array.length, t, i;
+    while (m) {
+      i = Math.random() * m-- | 0;
+      t = array[m], array[m] = array[i], array[i] = t;
+    }
+    return array;
+  };
+  d3.permute = function(array, indexes) {
+    var permutes = [], i = -1, n = indexes.length;
+    while (++i < n) permutes[i] = array[indexes[i]];
+    return permutes;
+  };
+  d3.zip = function() {
+    if (!(n = arguments.length)) return [];
+    for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
+      for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
+        zip[j] = arguments[j][i];
+      }
+    }
+    return zips;
+  };
+  function d3_zipLength(d) {
+    return d.length;
+  }
+  d3.transpose = function(matrix) {
+    return d3.zip.apply(d3, matrix);
+  };
+  d3.keys = function(map) {
+    var keys = [];
+    for (var key in map) keys.push(key);
+    return keys;
+  };
+  d3.values = function(map) {
+    var values = [];
+    for (var key in map) values.push(map[key]);
+    return values;
+  };
+  d3.entries = function(map) {
+    var entries = [];
+    for (var key in map) entries.push({
+      key: key,
+      value: map[key]
+    });
+    return entries;
+  };
+  d3.merge = function(arrays) {
+    return Array.prototype.concat.apply([], arrays);
+  };
+  d3.range = function(start, stop, step) {
+    if (arguments.length < 3) {
+      step = 1;
+      if (arguments.length < 2) {
+        stop = start;
+        start = 0;
+      }
+    }
+    if ((stop - start) / step === Infinity) throw new Error("infinite range");
+    var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j;
+    start *= k, stop *= k, step *= k;
+    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
+    return range;
+  };
+  function d3_range_integerScale(x) {
+    var k = 1;
+    while (x * k % 1) k *= 10;
+    return k;
+  }
+  function d3_class(ctor, properties) {
+    try {
+      for (var key in properties) {
+        Object.defineProperty(ctor.prototype, key, {
+          value: properties[key],
+          enumerable: false
+        });
+      }
+    } catch (e) {
+      ctor.prototype = properties;
+    }
+  }
+  d3.map = function(object) {
+    var map = new d3_Map();
+    for (var key in object) map.set(key, object[key]);
+    return map;
+  };
+  function d3_Map() {}
+  d3_class(d3_Map, {
+    has: function(key) {
+      return d3_map_prefix + key in this;
+    },
+    get: function(key) {
+      return this[d3_map_prefix + key];
+    },
+    set: function(key, value) {
+      return this[d3_map_prefix + key] = value;
+    },
+    remove: function(key) {
+      key = d3_map_prefix + key;
+      return key in this && delete this[key];
+    },
+    keys: function() {
+      var keys = [];
+      this.forEach(function(key) {
+        keys.push(key);
+      });
+      return keys;
+    },
+    values: function() {
+      var values = [];
+      this.forEach(function(key, value) {
+        values.push(value);
+      });
+      return values;
+    },
+    entries: function() {
+      var entries = [];
+      this.forEach(function(key, value) {
+        entries.push({
+          key: key,
+          value: value
+        });
+      });
+      return entries;
+    },
+    forEach: function(f) {
+      for (var key in this) {
+        if (key.charCodeAt(0) === d3_map_prefixCode) {
+          f.call(this, key.substring(1), this[key]);
+        }
+      }
+    }
+  });
+  var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
+  d3.nest = function() {
+    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
+    function map(mapType, array, depth) {
+      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
+      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;
+      while (++i < n) {
+        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
+          values.push(object);
+        } else {
+          valuesByKey.set(keyValue, [ object ]);
+        }
+      }
+      if (mapType) {
+        object = mapType();
+        setter = function(keyValue, values) {
+          object.set(keyValue, map(mapType, values, depth));
+        };
+      } else {
+        object = {};
+        setter = function(keyValue, values) {
+          object[keyValue] = map(mapType, values, depth);
+        };
+      }
+      valuesByKey.forEach(setter);
+      return object;
+    }
+    function entries(map, depth) {
+      if (depth >= keys.length) return map;
+      var array = [], sortKey = sortKeys[depth++];
+      map.forEach(function(key, keyMap) {
+        array.push({
+          key: key,
+          values: entries(keyMap, depth)
+        });
+      });
+      return sortKey ? array.sort(function(a, b) {
+        return sortKey(a.key, b.key);
+      }) : array;
+    }
+    nest.map = function(array, mapType) {
+      return map(mapType, array, 0);
+    };
+    nest.entries = function(array) {
+      return entries(map(d3.map, array, 0), 0);
+    };
+    nest.key = function(d) {
+      keys.push(d);
+      return nest;
+    };
+    nest.sortKeys = function(order) {
+      sortKeys[keys.length - 1] = order;
+      return nest;
+    };
+    nest.sortValues = function(order) {
+      sortValues = order;
+      return nest;
+    };
+    nest.rollup = function(f) {
+      rollup = f;
+      return nest;
+    };
+    return nest;
+  };
+  d3.set = function(array) {
+    var set = new d3_Set();
+    if (array) for (var i = 0; i < array.length; i++) set.add(array[i]);
+    return set;
+  };
+  function d3_Set() {}
+  d3_class(d3_Set, {
+    has: function(value) {
+      return d3_map_prefix + value in this;
+    },
+    add: function(value) {
+      this[d3_map_prefix + value] = true;
+      return value;
+    },
+    remove: function(value) {
+      value = d3_map_prefix + value;
+      return value in this && delete this[value];
+    },
+    values: function() {
+      var values = [];
+      this.forEach(function(value) {
+        values.push(value);
+      });
+      return values;
+    },
+    forEach: function(f) {
+      for (var value in this) {
+        if (value.charCodeAt(0) === d3_map_prefixCode) {
+          f.call(this, value.substring(1));
+        }
+      }
+    }
+  });
+  d3.behavior = {};
+  d3.rebind = function(target, source) {
+    var i = 1, n = arguments.length, method;
+    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
+    return target;
+  };
+  function d3_rebind(target, source, method) {
+    return function() {
+      var value = method.apply(source, arguments);
+      return value === source ? target : value;
+    };
+  }
+  d3.dispatch = function() {
+    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
+    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+    return dispatch;
+  };
+  function d3_dispatch() {}
+  d3_dispatch.prototype.on = function(type, listener) {
+    var i = type.indexOf("."), name = "";
+    if (i >= 0) {
+      name = type.substring(i + 1);
+      type = type.substring(0, i);
+    }
+    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
+    if (arguments.length === 2) {
+      if (listener == null) for (type in this) {
+        if (this.hasOwnProperty(type)) this[type].on(name, null);
+      }
+      return this;
+    }
+  };
+  function d3_dispatch_event(dispatch) {
+    var listeners = [], listenerByName = new d3_Map();
+    function event() {
+      var z = listeners, i = -1, n = z.length, l;
+      while (++i < n) if (l = z[i].on) l.apply(this, arguments);
+      return dispatch;
+    }
+    event.on = function(name, listener) {
+      var l = listenerByName.get(name), i;
+      if (arguments.length < 2) return l && l.on;
+      if (l) {
+        l.on = null;
+        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
+        listenerByName.remove(name);
+      }
+      if (listener) listeners.push(listenerByName.set(name, {
+        on: listener
+      }));
+      return dispatch;
+    };
+    return event;
+  }
+  d3.event = null;
+  function d3_eventCancel() {
+    d3.event.stopPropagation();
+    d3.event.preventDefault();
+  }
+  function d3_eventSource() {
+    var e = d3.event, s;
+    while (s = e.sourceEvent) e = s;
+    return e;
+  }
+  function d3_eventSuppress(target, type) {
+    function off() {
+      target.on(type, null);
+    }
+    target.on(type, function() {
+      d3_eventCancel();
+      off();
+    }, true);
+    setTimeout(off, 0);
+  }
+  function d3_eventDispatch(target) {
+    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
+    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+    dispatch.of = function(thiz, argumentz) {
+      return function(e1) {
+        try {
+          var e0 = e1.sourceEvent = d3.event;
+          e1.target = target;
+          d3.event = e1;
+          dispatch[e1.type].apply(thiz, argumentz);
+        } finally {
+          d3.event = e0;
+        }
+      };
+    };
+    return dispatch;
+  }
+  d3.mouse = function(container) {
+    return d3_mousePoint(container, d3_eventSource());
+  };
+  var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
+  function d3_mousePoint(container, e) {
+    var svg = container.ownerSVGElement || container;
+    if (svg.createSVGPoint) {
+      var point = svg.createSVGPoint();
+      if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
+        svg = d3.select(d3_document.body).append("svg").style("position", "absolute").style("top", 0).style("left", 0);
+        var ctm = svg[0][0].getScreenCTM();
+        d3_mouse_bug44083 = !(ctm.f || ctm.e);
+        svg.remove();
+      }
+      if (d3_mouse_bug44083) {
+        point.x = e.pageX;
+        point.y = e.pageY;
+      } else {
+        point.x = e.clientX;
+        point.y = e.clientY;
+      }
+      point = point.matrixTransform(container.getScreenCTM().inverse());
+      return [ point.x, point.y ];
+    }
+    var rect = container.getBoundingClientRect();
+    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
+  }
+  var d3_array = d3_arraySlice;
+  function d3_arrayCopy(pseudoarray) {
+    var i = -1, n = pseudoarray.length, array = [];
+    while (++i < n) array.push(pseudoarray[i]);
+    return array;
+  }
+  function d3_arraySlice(pseudoarray) {
+    return Array.prototype.slice.call(pseudoarray);
+  }
+  try {
+    d3_array(d3_document.documentElement.childNodes)[0].nodeType;
+  } catch (e) {
+    d3_array = d3_arrayCopy;
+  }
+  var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
+    array.__proto__ = prototype;
+  } : function(array, prototype) {
+    for (var property in prototype) array[property] = prototype[property];
+  };
+  d3.touches = function(container, touches) {
+    if (arguments.length < 2) touches = d3_eventSource().touches;
+    return touches ? d3_array(touches).map(function(touch) {
+      var point = d3_mousePoint(container, touch);
+      point.identifier = touch.identifier;
+      return point;
+    }) : [];
+  };
+  d3.behavior.drag = function() {
+    var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null;
+    function drag() {
+      this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown);
+    }
+    function mousedown() {
+      var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), moved = 0;
+      var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true);
+      if (origin) {
+        offset = origin.apply(target, arguments);
+        offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
+      } else {
+        offset = [ 0, 0 ];
+      }
+      if (touchId == null) d3_eventCancel();
+      event_({
+        type: "dragstart"
+      });
+      function point() {
+        var p = target.parentNode;
+        return touchId != null ? d3.touches(p).filter(function(p) {
+          return p.identifier === touchId;
+        })[0] : d3.mouse(p);
+      }
+      function dragmove() {
+        if (!target.parentNode) return dragend();
+        var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
+        moved |= dx | dy;
+        origin_ = p;
+        d3_eventCancel();
+        event_({
+          type: "drag",
+          x: p[0] + offset[0],
+          y: p[1] + offset[1],
+          dx: dx,
+          dy: dy
+        });
+      }
+      function dragend() {
+        event_({
+          type: "dragend"
+        });
+        if (moved) {
+          d3_eventCancel();
+          if (d3.event.target === eventTarget) d3_eventSuppress(w, "click");
+        }
+        w.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
+      }
+    }
+    drag.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = x;
+      return drag;
+    };
+    return d3.rebind(drag, event, "on");
+  };
+  function d3_selection(groups) {
+    d3_arraySubclass(groups, d3_selectionPrototype);
+    return groups;
+  }
+  var d3_select = function(s, n) {
+    return n.querySelector(s);
+  }, d3_selectAll = function(s, n) {
+    return n.querySelectorAll(s);
+  }, d3_selectRoot = d3_document.documentElement, d3_selectMatcher = d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector || d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector || d3_selectRoot.oMatchesSelector, d3_selectMatches = function(n, s) {
+    return d3_selectMatcher.call(n, s);
+  };
+  if (typeof Sizzle === "function") {
+    d3_select = function(s, n) {
+      return Sizzle(s, n)[0] || null;
+    };
+    d3_selectAll = function(s, n) {
+      return Sizzle.uniqueSort(Sizzle(s, n));
+    };
+    d3_selectMatches = Sizzle.matchesSelector;
+  }
+  var d3_selectionPrototype = [];
+  d3.selection = function() {
+    return d3_selectionRoot;
+  };
+  d3.selection.prototype = d3_selectionPrototype;
+  d3_selectionPrototype.select = function(selector) {
+    var subgroups = [], subgroup, subnode, group, node;
+    if (typeof selector !== "function") selector = d3_selection_selector(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = (group = this[j]).parentNode;
+      for (var i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroup.push(subnode = selector.call(node, node.__data__, i));
+          if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  function d3_selection_selector(selector) {
+    return function() {
+      return d3_select(selector, this);
+    };
+  }
+  d3_selectionPrototype.selectAll = function(selector) {
+    var subgroups = [], subgroup, node;
+    if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i)));
+          subgroup.parentNode = node;
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  function d3_selection_selectorAll(selector) {
+    return function() {
+      return d3_selectAll(selector, this);
+    };
+  }
+  var d3_nsPrefix = {
+    svg: "http://www.w3.org/2000/svg",
+    xhtml: "http://www.w3.org/1999/xhtml",
+    xlink: "http://www.w3.org/1999/xlink",
+    xml: "http://www.w3.org/XML/1998/namespace",
+    xmlns: "http://www.w3.org/2000/xmlns/"
+  };
+  d3.ns = {
+    prefix: d3_nsPrefix,
+    qualify: function(name) {
+      var i = name.indexOf(":"), prefix = name;
+      if (i >= 0) {
+        prefix = name.substring(0, i);
+        name = name.substring(i + 1);
+      }
+      return d3_nsPrefix.hasOwnProperty(prefix) ? {
+        space: d3_nsPrefix[prefix],
+        local: name
+      } : name;
+    }
+  };
+  d3_selectionPrototype.attr = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") {
+        var node = this.node();
+        name = d3.ns.qualify(name);
+        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
+      }
+      for (value in name) this.each(d3_selection_attr(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_attr(name, value));
+  };
+  function d3_selection_attr(name, value) {
+    name = d3.ns.qualify(name);
+    function attrNull() {
+      this.removeAttribute(name);
+    }
+    function attrNullNS() {
+      this.removeAttributeNS(name.space, name.local);
+    }
+    function attrConstant() {
+      this.setAttribute(name, value);
+    }
+    function attrConstantNS() {
+      this.setAttributeNS(name.space, name.local, value);
+    }
+    function attrFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
+    }
+    function attrFunctionNS() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
+    }
+    return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
+  }
+  function d3_collapse(s) {
+    return s.trim().replace(/\s+/g, " ");
+  }
+  d3.requote = function(s) {
+    return s.replace(d3_requote_re, "\\$&");
+  };
+  var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
+  d3_selectionPrototype.classed = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") {
+        var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
+        if (value = node.classList) {
+          while (++i < n) if (!value.contains(name[i])) return false;
+        } else {
+          value = node.getAttribute("class");
+          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
+        }
+        return true;
+      }
+      for (value in name) this.each(d3_selection_classed(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_classed(name, value));
+  };
+  function d3_selection_classedRe(name) {
+    return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
+  }
+  function d3_selection_classed(name, value) {
+    name = name.trim().split(/\s+/).map(d3_selection_classedName);
+    var n = name.length;
+    function classedConstant() {
+      var i = -1;
+      while (++i < n) name[i](this, value);
+    }
+    function classedFunction() {
+      var i = -1, x = value.apply(this, arguments);
+      while (++i < n) name[i](this, x);
+    }
+    return typeof value === "function" ? classedFunction : classedConstant;
+  }
+  function d3_selection_classedName(name) {
+    var re = d3_selection_classedRe(name);
+    return function(node, value) {
+      if (c = node.classList) return value ? c.add(name) : c.remove(name);
+      var c = node.getAttribute("class") || "";
+      if (value) {
+        re.lastIndex = 0;
+        if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
+      } else {
+        node.setAttribute("class", d3_collapse(c.replace(re, " ")));
+      }
+    };
+  }
+  d3_selectionPrototype.style = function(name, value, priority) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof name !== "string") {
+        if (n < 2) value = "";
+        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
+        return this;
+      }
+      if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
+      priority = "";
+    }
+    return this.each(d3_selection_style(name, value, priority));
+  };
+  function d3_selection_style(name, value, priority) {
+    function styleNull() {
+      this.style.removeProperty(name);
+    }
+    function styleConstant() {
+      this.style.setProperty(name, value, priority);
+    }
+    function styleFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
+    }
+    return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
+  }
+  d3_selectionPrototype.property = function(name, value) {
+    if (arguments.length < 2) {
+      if (typeof name === "string") return this.node()[name];
+      for (value in name) this.each(d3_selection_property(value, name[value]));
+      return this;
+    }
+    return this.each(d3_selection_property(name, value));
+  };
+  function d3_selection_property(name, value) {
+    function propertyNull() {
+      delete this[name];
+    }
+    function propertyConstant() {
+      this[name] = value;
+    }
+    function propertyFunction() {
+      var x = value.apply(this, arguments);
+      if (x == null) delete this[name]; else this[name] = x;
+    }
+    return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
+  }
+  d3_selectionPrototype.text = function(value) {
+    return arguments.length ? this.each(typeof value === "function" ? function() {
+      var v = value.apply(this, arguments);
+      this.textContent = v == null ? "" : v;
+    } : value == null ? function() {
+      this.textContent = "";
+    } : function() {
+      this.textContent = value;
+    }) : this.node().textContent;
+  };
+  d3_selectionPrototype.html = function(value) {
+    return arguments.length ? this.each(typeof value === "function" ? function() {
+      var v = value.apply(this, arguments);
+      this.innerHTML = v == null ? "" : v;
+    } : value == null ? function() {
+      this.innerHTML = "";
+    } : function() {
+      this.innerHTML = value;
+    }) : this.node().innerHTML;
+  };
+  d3_selectionPrototype.append = function(name) {
+    name = d3.ns.qualify(name);
+    function append() {
+      return this.appendChild(d3_document.createElementNS(this.namespaceURI, name));
+    }
+    function appendNS() {
+      return this.appendChild(d3_document.createElementNS(name.space, name.local));
+    }
+    return this.select(name.local ? appendNS : append);
+  };
+  d3_selectionPrototype.insert = function(name, before) {
+    name = d3.ns.qualify(name);
+    if (typeof before !== "function") before = d3_selection_selector(before);
+    function insert(d, i) {
+      return this.insertBefore(d3_document.createElementNS(this.namespaceURI, name), before.call(this, d, i));
+    }
+    function insertNS(d, i) {
+      return this.insertBefore(d3_document.createElementNS(name.space, name.local), before.call(this, d, i));
+    }
+    return this.select(name.local ? insertNS : insert);
+  };
+  d3_selectionPrototype.remove = function() {
+    return this.each(function() {
+      var parent = this.parentNode;
+      if (parent) parent.removeChild(this);
+    });
+  };
+  d3_selectionPrototype.data = function(value, key) {
+    var i = -1, n = this.length, group, node;
+    if (!arguments.length) {
+      value = new Array(n = (group = this[0]).length);
+      while (++i < n) {
+        if (node = group[i]) {
+          value[i] = node.__data__;
+        }
+      }
+      return value;
+    }
+    function bind(group, groupData) {
+      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
+      if (key) {
+        var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue;
+        for (i = -1; ++i < n; ) {
+          keyValue = key.call(node = group[i], node.__data__, i);
+          if (nodeByKeyValue.has(keyValue)) {
+            exitNodes[i] = node;
+          } else {
+            nodeByKeyValue.set(keyValue, node);
+          }
+          keyValues.push(keyValue);
+        }
+        for (i = -1; ++i < m; ) {
+          keyValue = key.call(groupData, nodeData = groupData[i], i);
+          if (node = nodeByKeyValue.get(keyValue)) {
+            updateNodes[i] = node;
+            node.__data__ = nodeData;
+          } else if (!dataByKeyValue.has(keyValue)) {
+            enterNodes[i] = d3_selection_dataNode(nodeData);
+          }
+          dataByKeyValue.set(keyValue, nodeData);
+          nodeByKeyValue.remove(keyValue);
+        }
+        for (i = -1; ++i < n; ) {
+          if (nodeByKeyValue.has(keyValues[i])) {
+            exitNodes[i] = group[i];
+          }
+        }
+      } else {
+        for (i = -1; ++i < n0; ) {
+          node = group[i];
+          nodeData = groupData[i];
+          if (node) {
+            node.__data__ = nodeData;
+            updateNodes[i] = node;
+          } else {
+            enterNodes[i] = d3_selection_dataNode(nodeData);
+          }
+        }
+        for (;i < m; ++i) {
+          enterNodes[i] = d3_selection_dataNode(groupData[i]);
+        }
+        for (;i < n; ++i) {
+          exitNodes[i] = group[i];
+        }
+      }
+      enterNodes.update = updateNodes;
+      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
+      enter.push(enterNodes);
+      update.push(updateNodes);
+      exit.push(exitNodes);
+    }
+    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
+    if (typeof value === "function") {
+      while (++i < n) {
+        bind(group = this[i], value.call(group, group.parentNode.__data__, i));
+      }
+    } else {
+      while (++i < n) {
+        bind(group = this[i], value);
+      }
+    }
+    update.enter = function() {
+      return enter;
+    };
+    update.exit = function() {
+      return exit;
+    };
+    return update;
+  };
+  function d3_selection_dataNode(data) {
+    return {
+      __data__: data
+    };
+  }
+  d3_selectionPrototype.datum = function(value) {
+    return arguments.length ? this.property("__data__", value) : this.property("__data__");
+  };
+  d3_selectionPrototype.filter = function(filter) {
+    var subgroups = [], subgroup, group, node;
+    if (typeof filter !== "function") filter = d3_selection_filter(filter);
+    for (var j = 0, m = this.length; j < m; j++) {
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = (group = this[j]).parentNode;
+      for (var i = 0, n = group.length; i < n; i++) {
+        if ((node = group[i]) && filter.call(node, node.__data__, i)) {
+          subgroup.push(node);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  function d3_selection_filter(selector) {
+    return function() {
+      return d3_selectMatches(this, selector);
+    };
+  }
+  d3_selectionPrototype.order = function() {
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
+        if (node = group[i]) {
+          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
+          next = node;
+        }
+      }
+    }
+    return this;
+  };
+  d3_selectionPrototype.sort = function(comparator) {
+    comparator = d3_selection_sortComparator.apply(this, arguments);
+    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
+    return this.order();
+  };
+  function d3_selection_sortComparator(comparator) {
+    if (!arguments.length) comparator = d3.ascending;
+    return function(a, b) {
+      return !a - !b || comparator(a.__data__, b.__data__);
+    };
+  }
+  function d3_noop() {}
+  d3_selectionPrototype.on = function(type, listener, capture) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof type !== "string") {
+        if (n < 2) listener = false;
+        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
+        return this;
+      }
+      if (n < 2) return (n = this.node()["__on" + type]) && n._;
+      capture = false;
+    }
+    return this.each(d3_selection_on(type, listener, capture));
+  };
+  function d3_selection_on(type, listener, capture) {
+    var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
+    if (i > 0) type = type.substring(0, i);
+    var filter = d3_selection_onFilters.get(type);
+    if (filter) type = filter, wrap = d3_selection_onFilter;
+    function onRemove() {
+      var l = this[name];
+      if (l) {
+        this.removeEventListener(type, l, l.$);
+        delete this[name];
+      }
+    }
+    function onAdd() {
+      var l = wrap(listener, d3_array(arguments));
+      onRemove.call(this);
+      this.addEventListener(type, this[name] = l, l.$ = capture);
+      l._ = listener;
+    }
+    function removeAll() {
+      var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
+      for (var name in this) {
+        if (match = name.match(re)) {
+          var l = this[name];
+          this.removeEventListener(match[1], l, l.$);
+          delete this[name];
+        }
+      }
+    }
+    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
+  }
+  var d3_selection_onFilters = d3.map({
+    mouseenter: "mouseover",
+    mouseleave: "mouseout"
+  });
+  d3_selection_onFilters.forEach(function(k) {
+    if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
+  });
+  function d3_selection_onListener(listener, argumentz) {
+    return function(e) {
+      var o = d3.event;
+      d3.event = e;
+      argumentz[0] = this.__data__;
+      try {
+        listener.apply(this, argumentz);
+      } finally {
+        d3.event = o;
+      }
+    };
+  }
+  function d3_selection_onFilter(listener, argumentz) {
+    var l = d3_selection_onListener(listener, argumentz);
+    return function(e) {
+      var target = this, related = e.relatedTarget;
+      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
+        l.call(target, e);
+      }
+    };
+  }
+  d3_selectionPrototype.each = function(callback) {
+    return d3_selection_each(this, function(node, i, j) {
+      callback.call(node, node.__data__, i, j);
+    });
+  };
+  function d3_selection_each(groups, callback) {
+    for (var j = 0, m = groups.length; j < m; j++) {
+      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
+        if (node = group[i]) callback(node, i, j);
+      }
+    }
+    return groups;
+  }
+  d3_selectionPrototype.call = function(callback) {
+    var args = d3_array(arguments);
+    callback.apply(args[0] = this, args);
+    return this;
+  };
+  d3_selectionPrototype.empty = function() {
+    return !this.node();
+  };
+  d3_selectionPrototype.node = function() {
+    for (var j = 0, m = this.length; j < m; j++) {
+      for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+        var node = group[i];
+        if (node) return node;
+      }
+    }
+    return null;
+  };
+  function d3_selection_enter(selection) {
+    d3_arraySubclass(selection, d3_selection_enterPrototype);
+    return selection;
+  }
+  var d3_selection_enterPrototype = [];
+  d3.selection.enter = d3_selection_enter;
+  d3.selection.enter.prototype = d3_selection_enterPrototype;
+  d3_selection_enterPrototype.append = d3_selectionPrototype.append;
+  d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
+  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
+  d3_selection_enterPrototype.node = d3_selectionPrototype.node;
+  d3_selection_enterPrototype.select = function(selector) {
+    var subgroups = [], subgroup, subnode, upgroup, group, node;
+    for (var j = -1, m = this.length; ++j < m; ) {
+      upgroup = (group = this[j]).update;
+      subgroups.push(subgroup = []);
+      subgroup.parentNode = group.parentNode;
+      for (var i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i));
+          subnode.__data__ = node.__data__;
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_selection(subgroups);
+  };
+  d3_selectionPrototype.transition = function() {
+    var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = Object.create(d3_transitionInherit);
+    transition.time = Date.now();
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) d3_transitionNode(node, i, id, transition);
+        subgroup.push(node);
+      }
+    }
+    return d3_transition(subgroups, id);
+  };
+  var d3_selectionRoot = d3_selection([ [ d3_document ] ]);
+  d3_selectionRoot[0].parentNode = d3_selectRoot;
+  d3.select = function(selector) {
+    return typeof selector === "string" ? d3_selectionRoot.select(selector) : d3_selection([ [ selector ] ]);
+  };
+  d3.selectAll = function(selector) {
+    return typeof selector === "string" ? d3_selectionRoot.selectAll(selector) : d3_selection([ d3_array(selector) ]);
+  };
+  d3.behavior.zoom = function() {
+    var translate = [ 0, 0 ], translate0, scale = 1, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime;
+    function zoom() {
+      this.on("mousedown.zoom", mousedown).on("mousemove.zoom", mousemove).on(d3_behavior_zoomWheel + ".zoom", mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom", touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom", touchstart);
+    }
+    zoom.translate = function(x) {
+      if (!arguments.length) return translate;
+      translate = x.map(Number);
+      rescale();
+      return zoom;
+    };
+    zoom.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = +x;
+      rescale();
+      return zoom;
+    };
+    zoom.scaleExtent = function(x) {
+      if (!arguments.length) return scaleExtent;
+      scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number);
+      return zoom;
+    };
+    zoom.x = function(z) {
+      if (!arguments.length) return x1;
+      x1 = z;
+      x0 = z.copy();
+      translate = [ 0, 0 ];
+      scale = 1;
+      return zoom;
+    };
+    zoom.y = function(z) {
+      if (!arguments.length) return y1;
+      y1 = z;
+      y0 = z.copy();
+      translate = [ 0, 0 ];
+      scale = 1;
+      return zoom;
+    };
+    function location(p) {
+      return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ];
+    }
+    function point(l) {
+      return [ l[0] * scale + translate[0], l[1] * scale + translate[1] ];
+    }
+    function scaleTo(s) {
+      scale = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
+    }
+    function translateTo(p, l) {
+      l = point(l);
+      translate[0] += p[0] - l[0];
+      translate[1] += p[1] - l[1];
+    }
+    function rescale() {
+      if (x1) x1.domain(x0.range().map(function(x) {
+        return (x - translate[0]) / scale;
+      }).map(x0.invert));
+      if (y1) y1.domain(y0.range().map(function(y) {
+        return (y - translate[1]) / scale;
+      }).map(y0.invert));
+    }
+    function dispatch(event) {
+      rescale();
+      d3.event.preventDefault();
+      event({
+        type: "zoom",
+        scale: scale,
+        translate: translate
+      });
+    }
+    function mousedown() {
+      var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target));
+      d3_window.focus();
+      d3_eventCancel();
+      function mousemove() {
+        moved = 1;
+        translateTo(d3.mouse(target), l);
+        dispatch(event_);
+      }
+      function mouseup() {
+        if (moved) d3_eventCancel();
+        w.on("mousemove.zoom", null).on("mouseup.zoom", null);
+        if (moved && d3.event.target === eventTarget) d3_eventSuppress(w, "click.zoom");
+      }
+    }
+    function mousewheel() {
+      if (!translate0) translate0 = location(d3.mouse(this));
+      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * scale);
+      translateTo(d3.mouse(this), translate0);
+      dispatch(event.of(this, arguments));
+    }
+    function mousemove() {
+      translate0 = null;
+    }
+    function dblclick() {
+      var p = d3.mouse(this), l = location(p), k = Math.log(scale) / Math.LN2;
+      scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
+      translateTo(p, l);
+      dispatch(event.of(this, arguments));
+    }
+    function touchstart() {
+      var touches = d3.touches(this), now = Date.now();
+      scale0 = scale;
+      translate0 = {};
+      touches.forEach(function(t) {
+        translate0[t.identifier] = location(t);
+      });
+      d3_eventCancel();
+      if (touches.length === 1) {
+        if (now - touchtime < 500) {
+          var p = touches[0], l = location(touches[0]);
+          scaleTo(scale * 2);
+          translateTo(p, l);
+          dispatch(event.of(this, arguments));
+        }
+        touchtime = now;
+      }
+    }
+    function touchmove() {
+      var touches = d3.touches(this), p0 = touches[0], l0 = translate0[p0.identifier];
+      if (p1 = touches[1]) {
+        var p1, l1 = translate0[p1.identifier];
+        p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
+        l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
+        scaleTo(d3.event.scale * scale0);
+      }
+      translateTo(p0, l0);
+      touchtime = null;
+      dispatch(event.of(this, arguments));
+    }
+    return d3.rebind(zoom, event, "on");
+  };
+  var d3_behavior_zoomInfinity = [ 0, Infinity ];
+  var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() {
+    return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);
+  }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() {
+    return d3.event.wheelDelta;
+  }, "mousewheel") : (d3_behavior_zoomDelta = function() {
+    return -d3.event.detail;
+  }, "MozMousePixelScroll");
+  function d3_Color() {}
+  d3_Color.prototype.toString = function() {
+    return this.rgb() + "";
+  };
+  d3.hsl = function(h, s, l) {
+    return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
+  };
+  function d3_hsl(h, s, l) {
+    return new d3_Hsl(h, s, l);
+  }
+  function d3_Hsl(h, s, l) {
+    this.h = h;
+    this.s = s;
+    this.l = l;
+  }
+  var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
+  d3_hslPrototype.brighter = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_hsl(this.h, this.s, this.l / k);
+  };
+  d3_hslPrototype.darker = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_hsl(this.h, this.s, k * this.l);
+  };
+  d3_hslPrototype.rgb = function() {
+    return d3_hsl_rgb(this.h, this.s, this.l);
+  };
+  function d3_hsl_rgb(h, s, l) {
+    var m1, m2;
+    h = h % 360;
+    if (h < 0) h += 360;
+    s = s < 0 ? 0 : s > 1 ? 1 : s;
+    l = l < 0 ? 0 : l > 1 ? 1 : l;
+    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
+    m1 = 2 * l - m2;
+    function v(h) {
+      if (h > 360) h -= 360; else if (h < 0) h += 360;
+      if (h < 60) return m1 + (m2 - m1) * h / 60;
+      if (h < 180) return m2;
+      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
+      return m1;
+    }
+    function vv(h) {
+      return Math.round(v(h) * 255);
+    }
+    return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
+  }
+  var π = Math.PI, ε = 1e-6, d3_radians = π / 180, d3_degrees = 180 / π;
+  function d3_sgn(x) {
+    return x > 0 ? 1 : x < 0 ? -1 : 0;
+  }
+  function d3_acos(x) {
+    return Math.acos(Math.max(-1, Math.min(1, x)));
+  }
+  function d3_asin(x) {
+    return x > 1 ? π / 2 : x < -1 ? -π / 2 : Math.asin(x);
+  }
+  function d3_sinh(x) {
+    return (Math.exp(x) - Math.exp(-x)) / 2;
+  }
+  function d3_cosh(x) {
+    return (Math.exp(x) + Math.exp(-x)) / 2;
+  }
+  function d3_haversin(x) {
+    return (x = Math.sin(x / 2)) * x;
+  }
+  d3.hcl = function(h, c, l) {
+    return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
+  };
+  function d3_hcl(h, c, l) {
+    return new d3_Hcl(h, c, l);
+  }
+  function d3_Hcl(h, c, l) {
+    this.h = h;
+    this.c = c;
+    this.l = l;
+  }
+  var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
+  d3_hclPrototype.brighter = function(k) {
+    return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
+  };
+  d3_hclPrototype.darker = function(k) {
+    return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
+  };
+  d3_hclPrototype.rgb = function() {
+    return d3_hcl_lab(this.h, this.c, this.l).rgb();
+  };
+  function d3_hcl_lab(h, c, l) {
+    return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
+  }
+  d3.lab = function(l, a, b) {
+    return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
+  };
+  function d3_lab(l, a, b) {
+    return new d3_Lab(l, a, b);
+  }
+  function d3_Lab(l, a, b) {
+    this.l = l;
+    this.a = a;
+    this.b = b;
+  }
+  var d3_lab_K = 18;
+  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
+  var d3_labPrototype = d3_Lab.prototype = new d3_Color();
+  d3_labPrototype.brighter = function(k) {
+    return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+  d3_labPrototype.darker = function(k) {
+    return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+  };
+  d3_labPrototype.rgb = function() {
+    return d3_lab_rgb(this.l, this.a, this.b);
+  };
+  function d3_lab_rgb(l, a, b) {
+    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
+    x = d3_lab_xyz(x) * d3_lab_X;
+    y = d3_lab_xyz(y) * d3_lab_Y;
+    z = d3_lab_xyz(z) * d3_lab_Z;
+    return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
+  }
+  function d3_lab_hcl(l, a, b) {
+    return d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l);
+  }
+  function d3_lab_xyz(x) {
+    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
+  }
+  function d3_xyz_lab(x) {
+    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
+  }
+  function d3_xyz_rgb(r) {
+    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
+  }
+  d3.rgb = function(r, g, b) {
+    return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
+  };
+  function d3_rgb(r, g, b) {
+    return new d3_Rgb(r, g, b);
+  }
+  function d3_Rgb(r, g, b) {
+    this.r = r;
+    this.g = g;
+    this.b = b;
+  }
+  var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
+  d3_rgbPrototype.brighter = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    var r = this.r, g = this.g, b = this.b, i = 30;
+    if (!r && !g && !b) return d3_rgb(i, i, i);
+    if (r && r < i) r = i;
+    if (g && g < i) g = i;
+    if (b && b < i) b = i;
+    return d3_rgb(Math.min(255, Math.floor(r / k)), Math.min(255, Math.floor(g / k)), Math.min(255, Math.floor(b / k)));
+  };
+  d3_rgbPrototype.darker = function(k) {
+    k = Math.pow(.7, arguments.length ? k : 1);
+    return d3_rgb(Math.floor(k * this.r), Math.floor(k * this.g), Math.floor(k * this.b));
+  };
+  d3_rgbPrototype.hsl = function() {
+    return d3_rgb_hsl(this.r, this.g, this.b);
+  };
+  d3_rgbPrototype.toString = function() {
+    return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
+  };
+  function d3_rgb_hex(v) {
+    return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
+  }
+  function d3_rgb_parse(format, rgb, hsl) {
+    var r = 0, g = 0, b = 0, m1, m2, name;
+    m1 = /([a-z]+)\((.*)\)/i.exec(format);
+    if (m1) {
+      m2 = m1[2].split(",");
+      switch (m1[1]) {
+       case "hsl":
+        {
+          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
+        }
+
+       case "rgb":
+        {
+          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
+        }
+      }
+    }
+    if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
+    if (format != null && format.charAt(0) === "#") {
+      if (format.length === 4) {
+        r = format.charAt(1);
+        r += r;
+        g = format.charAt(2);
+        g += g;
+        b = format.charAt(3);
+        b += b;
+      } else if (format.length === 7) {
+        r = format.substring(1, 3);
+        g = format.substring(3, 5);
+        b = format.substring(5, 7);
+      }
+      r = parseInt(r, 16);
+      g = parseInt(g, 16);
+      b = parseInt(b, 16);
+    }
+    return rgb(r, g, b);
+  }
+  function d3_rgb_hsl(r, g, b) {
+    var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
+    if (d) {
+      s = l < .5 ? d / (max + min) : d / (2 - max - min);
+      if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
+      h *= 60;
+    } else {
+      s = h = 0;
+    }
+    return d3_hsl(h, s, l);
+  }
+  function d3_rgb_lab(r, g, b) {
+    r = d3_rgb_xyz(r);
+    g = d3_rgb_xyz(g);
+    b = d3_rgb_xyz(b);
+    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
+    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
+  }
+  function d3_rgb_xyz(r) {
+    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
+  }
+  function d3_rgb_parseNumber(c) {
+    var f = parseFloat(c);
+    return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
+  }
+  var d3_rgb_names = d3.map({
+    aliceblue: "#f0f8ff",
+    antiquewhite: "#faebd7",
+    aqua: "#00ffff",
+    aquamarine: "#7fffd4",
+    azure: "#f0ffff",
+    beige: "#f5f5dc",
+    bisque: "#ffe4c4",
+    black: "#000000",
+    blanchedalmond: "#ffebcd",
+    blue: "#0000ff",
+    blueviolet: "#8a2be2",
+    brown: "#a52a2a",
+    burlywood: "#deb887",
+    cadetblue: "#5f9ea0",
+    chartreuse: "#7fff00",
+    chocolate: "#d2691e",
+    coral: "#ff7f50",
+    cornflowerblue: "#6495ed",
+    cornsilk: "#fff8dc",
+    crimson: "#dc143c",
+    cyan: "#00ffff",
+    darkblue: "#00008b",
+    darkcyan: "#008b8b",
+    darkgoldenrod: "#b8860b",
+    darkgray: "#a9a9a9",
+    darkgreen: "#006400",
+    darkgrey: "#a9a9a9",
+    darkkhaki: "#bdb76b",
+    darkmagenta: "#8b008b",
+    darkolivegreen: "#556b2f",
+    darkorange: "#ff8c00",
+    darkorchid: "#9932cc",
+    darkred: "#8b0000",
+    darksalmon: "#e9967a",
+    darkseagreen: "#8fbc8f",
+    darkslateblue: "#483d8b",
+    darkslategray: "#2f4f4f",
+    darkslategrey: "#2f4f4f",
+    darkturquoise: "#00ced1",
+    darkviolet: "#9400d3",
+    deeppink: "#ff1493",
+    deepskyblue: "#00bfff",
+    dimgray: "#696969",
+    dimgrey: "#696969",
+    dodgerblue: "#1e90ff",
+    firebrick: "#b22222",
+    floralwhite: "#fffaf0",
+    forestgreen: "#228b22",
+    fuchsia: "#ff00ff",
+    gainsboro: "#dcdcdc",
+    ghostwhite: "#f8f8ff",
+    gold: "#ffd700",
+    goldenrod: "#daa520",
+    gray: "#808080",
+    green: "#008000",
+    greenyellow: "#adff2f",
+    grey: "#808080",
+    honeydew: "#f0fff0",
+    hotpink: "#ff69b4",
+    indianred: "#cd5c5c",
+    indigo: "#4b0082",
+    ivory: "#fffff0",
+    khaki: "#f0e68c",
+    lavender: "#e6e6fa",
+    lavenderblush: "#fff0f5",
+    lawngreen: "#7cfc00",
+    lemonchiffon: "#fffacd",
+    lightblue: "#add8e6",
+    lightcoral: "#f08080",
+    lightcyan: "#e0ffff",
+    lightgoldenrodyellow: "#fafad2",
+    lightgray: "#d3d3d3",
+    lightgreen: "#90ee90",
+    lightgrey: "#d3d3d3",
+    lightpink: "#ffb6c1",
+    lightsalmon: "#ffa07a",
+    lightseagreen: "#20b2aa",
+    lightskyblue: "#87cefa",
+    lightslategray: "#778899",
+    lightslategrey: "#778899",
+    lightsteelblue: "#b0c4de",
+    lightyellow: "#ffffe0",
+    lime: "#00ff00",
+    limegreen: "#32cd32",
+    linen: "#faf0e6",
+    magenta: "#ff00ff",
+    maroon: "#800000",
+    mediumaquamarine: "#66cdaa",
+    mediumblue: "#0000cd",
+    mediumorchid: "#ba55d3",
+    mediumpurple: "#9370db",
+    mediumseagreen: "#3cb371",
+    mediumslateblue: "#7b68ee",
+    mediumspringgreen: "#00fa9a",
+    mediumturquoise: "#48d1cc",
+    mediumvioletred: "#c71585",
+    midnightblue: "#191970",
+    mintcream: "#f5fffa",
+    mistyrose: "#ffe4e1",
+    moccasin: "#ffe4b5",
+    navajowhite: "#ffdead",
+    navy: "#000080",
+    oldlace: "#fdf5e6",
+    olive: "#808000",
+    olivedrab: "#6b8e23",
+    orange: "#ffa500",
+    orangered: "#ff4500",
+    orchid: "#da70d6",
+    palegoldenrod: "#eee8aa",
+    palegreen: "#98fb98",
+    paleturquoise: "#afeeee",
+    palevioletred: "#db7093",
+    papayawhip: "#ffefd5",
+    peachpuff: "#ffdab9",
+    peru: "#cd853f",
+    pink: "#ffc0cb",
+    plum: "#dda0dd",
+    powderblue: "#b0e0e6",
+    purple: "#800080",
+    red: "#ff0000",
+    rosybrown: "#bc8f8f",
+    royalblue: "#4169e1",
+    saddlebrown: "#8b4513",
+    salmon: "#fa8072",
+    sandybrown: "#f4a460",
+    seagreen: "#2e8b57",
+    seashell: "#fff5ee",
+    sienna: "#a0522d",
+    silver: "#c0c0c0",
+    skyblue: "#87ceeb",
+    slateblue: "#6a5acd",
+    slategray: "#708090",
+    slategrey: "#708090",
+    snow: "#fffafa",
+    springgreen: "#00ff7f",
+    steelblue: "#4682b4",
+    tan: "#d2b48c",
+    teal: "#008080",
+    thistle: "#d8bfd8",
+    tomato: "#ff6347",
+    turquoise: "#40e0d0",
+    violet: "#ee82ee",
+    wheat: "#f5deb3",
+    white: "#ffffff",
+    whitesmoke: "#f5f5f5",
+    yellow: "#ffff00",
+    yellowgreen: "#9acd32"
+  });
+  d3_rgb_names.forEach(function(key, value) {
+    d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb));
+  });
+  function d3_functor(v) {
+    return typeof v === "function" ? v : function() {
+      return v;
+    };
+  }
+  d3.functor = d3_functor;
+  function d3_identity(d) {
+    return d;
+  }
+  d3.xhr = function(url, mimeType, callback) {
+    var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, response = d3_identity, request = new (d3_window.XDomainRequest && /^(http(s)?:)?\/\//.test(url) ? XDomainRequest : XMLHttpRequest)();
+    "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
+      request.readyState > 3 && respond();
+    };
+    function respond() {
+      var s = request.status;
+      !s && request.responseText || s >= 200 && s < 300 || s === 304 ? dispatch.load.call(xhr, response.call(xhr, request)) : dispatch.error.call(xhr, request);
+    }
+    request.onprogress = function(event) {
+      var o = d3.event;
+      d3.event = event;
+      try {
+        dispatch.progress.call(xhr, request);
+      } finally {
+        d3.event = o;
+      }
+    };
+    xhr.header = function(name, value) {
+      name = (name + "").toLowerCase();
+      if (arguments.length < 2) return headers[name];
+      if (value == null) delete headers[name]; else headers[name] = value + "";
+      return xhr;
+    };
+    xhr.mimeType = function(value) {
+      if (!arguments.length) return mimeType;
+      mimeType = value == null ? null : value + "";
+      return xhr;
+    };
+    xhr.response = function(value) {
+      response = value;
+      return xhr;
+    };
+    [ "get", "post" ].forEach(function(method) {
+      xhr[method] = function() {
+        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
+      };
+    });
+    xhr.send = function(method, data, callback) {
+      if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
+      request.open(method, url, true);
+      if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
+      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
+      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
+      if (callback != null) xhr.on("error", callback).on("load", function(request) {
+        callback(null, request);
+      });
+      request.send(data == null ? null : data);
+      return xhr;
+    };
+    xhr.abort = function() {
+      request.abort();
+      return xhr;
+    };
+    d3.rebind(xhr, dispatch, "on");
+    if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, 
+    mimeType = null;
+    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
+  };
+  function d3_xhr_fixCallback(callback) {
+    return callback.length === 1 ? function(error, request) {
+      callback(error == null ? request : null);
+    } : callback;
+  }
+  function d3_dsv(delimiter, mimeType) {
+    var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
+    function dsv(url, row, callback) {
+      if (arguments.length < 3) callback = row, row = null;
+      var xhr = d3.xhr(url, mimeType, callback);
+      xhr.row = function(_) {
+        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;
+      };
+      return xhr.row(row);
+    }
+    function response(request) {
+      return dsv.parse(request.responseText);
+    }
+    function typedResponse(f) {
+      return function(request) {
+        return dsv.parse(request.responseText, f);
+      };
+    }
+    dsv.parse = function(text, f) {
+      var o;
+      return dsv.parseRows(text, function(row, i) {
+        if (o) return o(row, i - 1);
+        var a = new Function("d", "return {" + row.map(function(name, i) {
+          return JSON.stringify(name) + ": d[" + i + "]";
+        }).join(",") + "}");
+        o = f ? function(row, i) {
+          return f(a(row), i);
+        } : a;
+      });
+    };
+    dsv.parseRows = function(text, f) {
+      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;
+      function token() {
+        if (I >= N) return EOF;
+        if (eol) return eol = false, EOL;
+        var j = I;
+        if (text.charCodeAt(j) === 34) {
+          var i = j;
+          while (i++ < N) {
+            if (text.charCodeAt(i) === 34) {
+              if (text.charCodeAt(i + 1) !== 34) break;
+              ++i;
+            }
+          }
+          I = i + 2;
+          var c = text.charCodeAt(i + 1);
+          if (c === 13) {
+            eol = true;
+            if (text.charCodeAt(i + 2) === 10) ++I;
+          } else if (c === 10) {
+            eol = true;
+          }
+          return text.substring(j + 1, i).replace(/""/g, '"');
+        }
+        while (I < N) {
+          var c = text.charCodeAt(I++), k = 1;
+          if (c === 10) eol = true; else if (c === 13) {
+            eol = true;
+            if (text.charCodeAt(I) === 10) ++I, ++k;
+          } else if (c !== delimiterCode) continue;
+          return text.substring(j, I - k);
+        }
+        return text.substring(j);
+      }
+      while ((t = token()) !== EOF) {
+        var a = [];
+        while (t !== EOL && t !== EOF) {
+          a.push(t);
+          t = token();
+        }
+        if (f && !(a = f(a, n++))) continue;
+        rows.push(a);
+      }
+      return rows;
+    };
+    dsv.format = function(rows) {
+      if (Array.isArray(rows[0])) return dsv.formatRows(rows);
+      var fieldSet = new d3_Set(), fields = [];
+      rows.forEach(function(row) {
+        for (var field in row) {
+          if (!fieldSet.has(field)) {
+            fields.push(fieldSet.add(field));
+          }
+        }
+      });
+      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {
+        return fields.map(function(field) {
+          return formatValue(row[field]);
+        }).join(delimiter);
+      })).join("\n");
+    };
+    dsv.formatRows = function(rows) {
+      return rows.map(formatRow).join("\n");
+    };
+    function formatRow(row) {
+      return row.map(formatValue).join(delimiter);
+    }
+    function formatValue(text) {
+      return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
+    }
+    return dsv;
+  }
+  d3.csv = d3_dsv(",", "text/csv");
+  d3.tsv = d3_dsv("	", "text/tab-separated-values");
+  var d3_timer_id = 0, d3_timer_byId = {}, d3_timer_queue = null, d3_timer_interval, d3_timer_timeout;
+  d3.timer = function(callback, delay, then) {
+    if (arguments.length < 3) {
+      if (arguments.length < 2) delay = 0; else if (!isFinite(delay)) return;
+      then = Date.now();
+    }
+    var timer = d3_timer_byId[callback.id];
+    if (timer && timer.callback === callback) {
+      timer.then = then;
+      timer.delay = delay;
+    } else d3_timer_byId[callback.id = ++d3_timer_id] = d3_timer_queue = {
+      callback: callback,
+      then: then,
+      delay: delay,
+      next: d3_timer_queue
+    };
+    if (!d3_timer_interval) {
+      d3_timer_timeout = clearTimeout(d3_timer_timeout);
+      d3_timer_interval = 1;
+      d3_timer_frame(d3_timer_step);
+    }
+  };
+  function d3_timer_step() {
+    var elapsed, now = Date.now(), t1 = d3_timer_queue;
+    while (t1) {
+      elapsed = now - t1.then;
+      if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed);
+      t1 = t1.next;
+    }
+    var delay = d3_timer_flush() - now;
+    if (delay > 24) {
+      if (isFinite(delay)) {
+        clearTimeout(d3_timer_timeout);
+        d3_timer_timeout = setTimeout(d3_timer_step, delay);
+      }
+      d3_timer_interval = 0;
+    } else {
+      d3_timer_interval = 1;
+      d3_timer_frame(d3_timer_step);
+    }
+  }
+  d3.timer.flush = function() {
+    var elapsed, now = Date.now(), t1 = d3_timer_queue;
+    while (t1) {
+      elapsed = now - t1.then;
+      if (!t1.delay) t1.flush = t1.callback(elapsed);
+      t1 = t1.next;
+    }
+    d3_timer_flush();
+  };
+  function d3_timer_flush() {
+    var t0 = null, t1 = d3_timer_queue, then = Infinity;
+    while (t1) {
+      if (t1.flush) {
+        delete d3_timer_byId[t1.callback.id];
+        t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next;
+      } else {
+        then = Math.min(then, t1.then + t1.delay);
+        t1 = (t0 = t1).next;
+      }
+    }
+    return then;
+  }
+  var d3_timer_frame = d3_window.requestAnimationFrame || d3_window.webkitRequestAnimationFrame || d3_window.mozRequestAnimationFrame || d3_window.oRequestAnimationFrame || d3_window.msRequestAnimationFrame || function(callback) {
+    setTimeout(callback, 17);
+  };
+  var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ];
+  var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
+  d3.formatPrefix = function(value, precision) {
+    var i = 0;
+    if (value) {
+      if (value < 0) value *= -1;
+      if (precision) value = d3.round(value, d3_format_precision(value, precision));
+      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
+      i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
+    }
+    return d3_formatPrefixes[8 + i / 3];
+  };
+  function d3_formatPrefix(d, i) {
+    var k = Math.pow(10, Math.abs(8 - i) * 3);
+    return {
+      scale: i > 8 ? function(d) {
+        return d / k;
+      } : function(d) {
+        return d * k;
+      },
+      symbol: d
+    };
+  }
+  d3.round = function(x, n) {
+    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
+  };
+  d3.format = function(specifier) {
+    var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", basePrefix = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false;
+    if (precision) precision = +precision.substring(1);
+    if (zfill || fill === "0" && align === "=") {
+      zfill = fill = "0";
+      align = "=";
+      if (comma) width -= Math.floor((width - 1) / 4);
+    }
+    switch (type) {
+     case "n":
+      comma = true;
+      type = "g";
+      break;
+
+     case "%":
+      scale = 100;
+      suffix = "%";
+      type = "f";
+      break;
+
+     case "p":
+      scale = 100;
+      suffix = "%";
+      type = "r";
+      break;
+
+     case "b":
+     case "o":
+     case "x":
+     case "X":
+      if (basePrefix) basePrefix = "0" + type.toLowerCase();
+
+     case "c":
+     case "d":
+      integer = true;
+      precision = 0;
+      break;
+
+     case "s":
+      scale = -1;
+      type = "r";
+      break;
+    }
+    if (basePrefix === "#") basePrefix = "";
+    if (type == "r" && !precision) type = "g";
+    if (precision != null) {
+      if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision));
+    }
+    type = d3_format_types.get(type) || d3_format_typeDefault;
+    var zcomma = zfill && comma;
+    return function(value) {
+      if (integer && value % 1) return "";
+      var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
+      if (scale < 0) {
+        var prefix = d3.formatPrefix(value, precision);
+        value = prefix.scale(value);
+        suffix = prefix.symbol;
+      } else {
+        value *= scale;
+      }
+      value = type(value, precision);
+      if (!zfill && comma) value = d3_format_group(value);
+      var length = basePrefix.length + value.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
+      if (zcomma) value = d3_format_group(padding + value);
+      if (d3_format_decimalPoint) value.replace(".", d3_format_decimalPoint);
+      negative += basePrefix;
+      return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix;
+    };
+  };
+  var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i;
+  var d3_format_types = d3.map({
+    b: function(x) {
+      return x.toString(2);
+    },
+    c: function(x) {
+      return String.fromCharCode(x);
+    },
+    o: function(x) {
+      return x.toString(8);
+    },
+    x: function(x) {
+      return x.toString(16);
+    },
+    X: function(x) {
+      return x.toString(16).toUpperCase();
+    },
+    g: function(x, p) {
+      return x.toPrecision(p);
+    },
+    e: function(x, p) {
+      return x.toExponential(p);
+    },
+    f: function(x, p) {
+      return x.toFixed(p);
+    },
+    r: function(x, p) {
+      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
+    }
+  });
+  function d3_format_precision(x, p) {
+    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
+  }
+  function d3_format_typeDefault(x) {
+    return x + "";
+  }
+  var d3_format_group = d3_identity;
+  if (d3_format_grouping) {
+    var d3_format_groupingLength = d3_format_grouping.length;
+    d3_format_group = function(value) {
+      var i = value.lastIndexOf("."), f = i >= 0 ? "." + value.substring(i + 1) : (i = value.length, 
+      ""), t = [], j = 0, g = d3_format_grouping[0];
+      while (i > 0 && g > 0) {
+        t.push(value.substring(i -= g, i + g));
+        g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength];
+      }
+      return t.reverse().join(d3_format_thousandsSeparator || "") + f;
+    };
+  }
+  d3.geo = {};
+  d3.geo.stream = function(object, listener) {
+    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
+      d3_geo_streamObjectType[object.type](object, listener);
+    } else {
+      d3_geo_streamGeometry(object, listener);
+    }
+  };
+  function d3_geo_streamGeometry(geometry, listener) {
+    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
+      d3_geo_streamGeometryType[geometry.type](geometry, listener);
+    }
+  }
+  var d3_geo_streamObjectType = {
+    Feature: function(feature, listener) {
+      d3_geo_streamGeometry(feature.geometry, listener);
+    },
+    FeatureCollection: function(object, listener) {
+      var features = object.features, i = -1, n = features.length;
+      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
+    }
+  };
+  var d3_geo_streamGeometryType = {
+    Sphere: function(object, listener) {
+      listener.sphere();
+    },
+    Point: function(object, listener) {
+      var coordinate = object.coordinates;
+      listener.point(coordinate[0], coordinate[1]);
+    },
+    MultiPoint: function(object, listener) {
+      var coordinates = object.coordinates, i = -1, n = coordinates.length, coordinate;
+      while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]);
+    },
+    LineString: function(object, listener) {
+      d3_geo_streamLine(object.coordinates, listener, 0);
+    },
+    MultiLineString: function(object, listener) {
+      var coordinates = object.coordinates, i = -1, n = coordinates.length;
+      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
+    },
+    Polygon: function(object, listener) {
+      d3_geo_streamPolygon(object.coordinates, listener);
+    },
+    MultiPolygon: function(object, listener) {
+      var coordinates = object.coordinates, i = -1, n = coordinates.length;
+      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
+    },
+    GeometryCollection: function(object, listener) {
+      var geometries = object.geometries, i = -1, n = geometries.length;
+      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
+    }
+  };
+  function d3_geo_streamLine(coordinates, listener, closed) {
+    var i = -1, n = coordinates.length - closed, coordinate;
+    listener.lineStart();
+    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]);
+    listener.lineEnd();
+  }
+  function d3_geo_streamPolygon(coordinates, listener) {
+    var i = -1, n = coordinates.length;
+    listener.polygonStart();
+    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
+    listener.polygonEnd();
+  }
+  d3.geo.area = function(object) {
+    d3_geo_areaSum = 0;
+    d3.geo.stream(object, d3_geo_area);
+    return d3_geo_areaSum;
+  };
+  var d3_geo_areaSum, d3_geo_areaRingU, d3_geo_areaRingV;
+  var d3_geo_area = {
+    sphere: function() {
+      d3_geo_areaSum += 4 * π;
+    },
+    point: d3_noop,
+    lineStart: d3_noop,
+    lineEnd: d3_noop,
+    polygonStart: function() {
+      d3_geo_areaRingU = 1, d3_geo_areaRingV = 0;
+      d3_geo_area.lineStart = d3_geo_areaRingStart;
+    },
+    polygonEnd: function() {
+      var area = 2 * Math.atan2(d3_geo_areaRingV, d3_geo_areaRingU);
+      d3_geo_areaSum += area < 0 ? 4 * π + area : area;
+      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
+    }
+  };
+  function d3_geo_areaRingStart() {
+    var λ00, φ00, λ0, cosφ0, sinφ0;
+    d3_geo_area.point = function(λ, φ) {
+      d3_geo_area.point = nextPoint;
+      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), 
+      sinφ0 = Math.sin(φ);
+    };
+    function nextPoint(λ, φ) {
+      λ *= d3_radians;
+      φ = φ * d3_radians / 2 + π / 4;
+      var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u0 = d3_geo_areaRingU, v0 = d3_geo_areaRingV, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ);
+      d3_geo_areaRingU = u0 * u - v0 * v;
+      d3_geo_areaRingV = v0 * u + u0 * v;
+      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
+    }
+    d3_geo_area.lineEnd = function() {
+      nextPoint(λ00, φ00);
+    };
+  }
+  d3.geo.bounds = d3_geo_bounds(d3_identity);
+  function d3_geo_bounds(projectStream) {
+    var x0, y0, x1, y1;
+    var bound = {
+      point: boundPoint,
+      lineStart: d3_noop,
+      lineEnd: d3_noop,
+      polygonStart: function() {
+        bound.lineEnd = boundPolygonLineEnd;
+      },
+      polygonEnd: function() {
+        bound.point = boundPoint;
+      }
+    };
+    function boundPoint(x, y) {
+      if (x < x0) x0 = x;
+      if (x > x1) x1 = x;
+      if (y < y0) y0 = y;
+      if (y > y1) y1 = y;
+    }
+    function boundPolygonLineEnd() {
+      bound.point = bound.lineEnd = d3_noop;
+    }
+    return function(feature) {
+      y1 = x1 = -(x0 = y0 = Infinity);
+      d3.geo.stream(feature, projectStream(bound));
+      return [ [ x0, y0 ], [ x1, y1 ] ];
+    };
+  }
+  d3.geo.centroid = function(object) {
+    d3_geo_centroidDimension = d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+    d3.geo.stream(object, d3_geo_centroid);
+    var m;
+    if (d3_geo_centroidW && Math.abs(m = Math.sqrt(d3_geo_centroidX * d3_geo_centroidX + d3_geo_centroidY * d3_geo_centroidY + d3_geo_centroidZ * d3_geo_centroidZ)) > ε) {
+      return [ Math.atan2(d3_geo_centroidY, d3_geo_centroidX) * d3_degrees, Math.asin(Math.max(-1, Math.min(1, d3_geo_centroidZ / m))) * d3_degrees ];
+    }
+  };
+  var d3_geo_centroidDimension, d3_geo_centroidW, d3_geo_centroidX, d3_geo_centroidY, d3_geo_centroidZ;
+  var d3_geo_centroid = {
+    sphere: function() {
+      if (d3_geo_centroidDimension < 2) {
+        d3_geo_centroidDimension = 2;
+        d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+      }
+    },
+    point: d3_geo_centroidPoint,
+    lineStart: d3_geo_centroidLineStart,
+    lineEnd: d3_geo_centroidLineEnd,
+    polygonStart: function() {
+      if (d3_geo_centroidDimension < 2) {
+        d3_geo_centroidDimension = 2;
+        d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+      }
+      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
+    },
+    polygonEnd: function() {
+      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
+    }
+  };
+  function d3_geo_centroidPoint(λ, φ) {
+    if (d3_geo_centroidDimension) return;
+    ++d3_geo_centroidW;
+    λ *= d3_radians;
+    var cosφ = Math.cos(φ *= d3_radians);
+    d3_geo_centroidX += (cosφ * Math.cos(λ) - d3_geo_centroidX) / d3_geo_centroidW;
+    d3_geo_centroidY += (cosφ * Math.sin(λ) - d3_geo_centroidY) / d3_geo_centroidW;
+    d3_geo_centroidZ += (Math.sin(φ) - d3_geo_centroidZ) / d3_geo_centroidW;
+  }
+  function d3_geo_centroidRingStart() {
+    var λ00, φ00;
+    d3_geo_centroidDimension = 1;
+    d3_geo_centroidLineStart();
+    d3_geo_centroidDimension = 2;
+    var linePoint = d3_geo_centroid.point;
+    d3_geo_centroid.point = function(λ, φ) {
+      linePoint(λ00 = λ, φ00 = φ);
+    };
+    d3_geo_centroid.lineEnd = function() {
+      d3_geo_centroid.point(λ00, φ00);
+      d3_geo_centroidLineEnd();
+      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
+    };
+  }
+  function d3_geo_centroidLineStart() {
+    var x0, y0, z0;
+    if (d3_geo_centroidDimension > 1) return;
+    if (d3_geo_centroidDimension < 1) {
+      d3_geo_centroidDimension = 1;
+      d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+    }
+    d3_geo_centroid.point = function(λ, φ) {
+      λ *= d3_radians;
+      var cosφ = Math.cos(φ *= d3_radians);
+      x0 = cosφ * Math.cos(λ);
+      y0 = cosφ * Math.sin(λ);
+      z0 = Math.sin(φ);
+      d3_geo_centroid.point = nextPoint;
+    };
+    function nextPoint(λ, φ) {
+      λ *= d3_radians;
+      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
+      d3_geo_centroidW += w;
+      d3_geo_centroidX += w * (x0 + (x0 = x));
+      d3_geo_centroidY += w * (y0 + (y0 = y));
+      d3_geo_centroidZ += w * (z0 + (z0 = z));
+    }
+  }
+  function d3_geo_centroidLineEnd() {
+    d3_geo_centroid.point = d3_geo_centroidPoint;
+  }
+  function d3_geo_cartesian(spherical) {
+    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);
+    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];
+  }
+  function d3_geo_cartesianDot(a, b) {
+    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+  }
+  function d3_geo_cartesianCross(a, b) {
+    return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];
+  }
+  function d3_geo_cartesianAdd(a, b) {
+    a[0] += b[0];
+    a[1] += b[1];
+    a[2] += b[2];
+  }
+  function d3_geo_cartesianScale(vector, k) {
+    return [ vector[0] * k, vector[1] * k, vector[2] * k ];
+  }
+  function d3_geo_cartesianNormalize(d) {
+    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
+    d[0] /= l;
+    d[1] /= l;
+    d[2] /= l;
+  }
+  function d3_true() {
+    return true;
+  }
+  function d3_geo_spherical(cartesian) {
+    return [ Math.atan2(cartesian[1], cartesian[0]), Math.asin(Math.max(-1, Math.min(1, cartesian[2]))) ];
+  }
+  function d3_geo_sphericalEqual(a, b) {
+    return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε;
+  }
+  function d3_geo_clipPolygon(segments, compare, inside, interpolate, listener) {
+    var subject = [], clip = [];
+    segments.forEach(function(segment) {
+      if ((n = segment.length - 1) <= 0) return;
+      var n, p0 = segment[0], p1 = segment[n];
+      if (d3_geo_sphericalEqual(p0, p1)) {
+        listener.lineStart();
+        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
+        listener.lineEnd();
+        return;
+      }
+      var a = {
+        point: p0,
+        points: segment,
+        other: null,
+        visited: false,
+        entry: true,
+        subject: true
+      }, b = {
+        point: p0,
+        points: [ p0 ],
+        other: a,
+        visited: false,
+        entry: false,
+        subject: false
+      };
+      a.other = b;
+      subject.push(a);
+      clip.push(b);
+      a = {
+        point: p1,
+        points: [ p1 ],
+        other: null,
+        visited: false,
+        entry: false,
+        subject: true
+      };
+      b = {
+        point: p1,
+        points: [ p1 ],
+        other: a,
+        visited: false,
+        entry: true,
+        subject: false
+      };
+      a.other = b;
+      subject.push(a);
+      clip.push(b);
+    });
+    clip.sort(compare);
+    d3_geo_clipPolygonLinkCircular(subject);
+    d3_geo_clipPolygonLinkCircular(clip);
+    if (!subject.length) return;
+    if (inside) for (var i = 1, e = !inside(clip[0].point), n = clip.length; i < n; ++i) {
+      clip[i].entry = e = !e;
+    }
+    var start = subject[0], current, points, point;
+    while (1) {
+      current = start;
+      while (current.visited) if ((current = current.next) === start) return;
+      points = current.points;
+      listener.lineStart();
+      do {
+        current.visited = current.other.visited = true;
+        if (current.entry) {
+          if (current.subject) {
+            for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]);
+          } else {
+            interpolate(current.point, current.next.point, 1, listener);
+          }
+          current = current.next;
+        } else {
+          if (current.subject) {
+            points = current.prev.points;
+            for (var i = points.length; --i >= 0; ) listener.point((point = points[i])[0], point[1]);
+          } else {
+            interpolate(current.point, current.prev.point, -1, listener);
+          }
+          current = current.prev;
+        }
+        current = current.other;
+        points = current.points;
+      } while (!current.visited);
+      listener.lineEnd();
+    }
+  }
+  function d3_geo_clipPolygonLinkCircular(array) {
+    if (!(n = array.length)) return;
+    var n, i = 0, a = array[0], b;
+    while (++i < n) {
+      a.next = b = array[i];
+      b.prev = a;
+      a = b;
+    }
+    a.next = b = array[0];
+    b.prev = a;
+  }
+  function d3_geo_clip(pointVisible, clipLine, interpolate) {
+    return function(listener) {
+      var line = clipLine(listener);
+      var clip = {
+        point: point,
+        lineStart: lineStart,
+        lineEnd: lineEnd,
+        polygonStart: function() {
+          clip.point = pointRing;
+          clip.lineStart = ringStart;
+          clip.lineEnd = ringEnd;
+          invisible = false;
+          invisibleArea = visibleArea = 0;
+          segments = [];
+          listener.polygonStart();
+        },
+        polygonEnd: function() {
+          clip.point = point;
+          clip.lineStart = lineStart;
+          clip.lineEnd = lineEnd;
+          segments = d3.merge(segments);
+          if (segments.length) {
+            d3_geo_clipPolygon(segments, d3_geo_clipSort, null, interpolate, listener);
+          } else if (visibleArea < -ε || invisible && invisibleArea < -ε) {
+            listener.lineStart();
+            interpolate(null, null, 1, listener);
+            listener.lineEnd();
+          }
+          listener.polygonEnd();
+          segments = null;
+        },
+        sphere: function() {
+          listener.polygonStart();
+          listener.lineStart();
+          interpolate(null, null, 1, listener);
+          listener.lineEnd();
+          listener.polygonEnd();
+        }
+      };
+      function point(λ, φ) {
+        if (pointVisible(λ, φ)) listener.point(λ, φ);
+      }
+      function pointLine(λ, φ) {
+        line.point(λ, φ);
+      }
+      function lineStart() {
+        clip.point = pointLine;
+        line.lineStart();
+      }
+      function lineEnd() {
+        clip.point = point;
+        line.lineEnd();
+      }
+      var segments, visibleArea, invisibleArea, invisible;
+      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), ring;
+      function pointRing(λ, φ) {
+        ringListener.point(λ, φ);
+        ring.push([ λ, φ ]);
+      }
+      function ringStart() {
+        ringListener.lineStart();
+        ring = [];
+      }
+      function ringEnd() {
+        pointRing(ring[0][0], ring[0][1]);
+        ringListener.lineEnd();
+        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;
+        if (!n) {
+          invisible = true;
+          invisibleArea += d3_geo_clipAreaRing(ring, -1);
+          ring = null;
+          return;
+        }
+        ring = null;
+        if (clean & 1) {
+          segment = ringSegments[0];
+          visibleArea += d3_geo_clipAreaRing(segment, 1);
+          var n = segment.length - 1, i = -1, point;
+          listener.lineStart();
+          while (++i < n) listener.point((point = segment[i])[0], point[1]);
+          listener.lineEnd();
+          return;
+        }
+        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
+        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
+      }
+      return clip;
+    };
+  }
+  function d3_geo_clipSegmentLength1(segment) {
+    return segment.length > 1;
+  }
+  function d3_geo_clipBufferListener() {
+    var lines = [], line;
+    return {
+      lineStart: function() {
+        lines.push(line = []);
+      },
+      point: function(λ, φ) {
+        line.push([ λ, φ ]);
+      },
+      lineEnd: d3_noop,
+      buffer: function() {
+        var buffer = lines;
+        lines = [];
+        line = null;
+        return buffer;
+      },
+      rejoin: function() {
+        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
+      }
+    };
+  }
+  function d3_geo_clipAreaRing(ring, invisible) {
+    if (!(n = ring.length)) return 0;
+    var n, i = 0, area = 0, p = ring[0], λ = p[0], φ = p[1], cosφ = Math.cos(φ), x0 = Math.atan2(invisible * Math.sin(λ) * cosφ, Math.sin(φ)), y0 = 1 - invisible * Math.cos(λ) * cosφ, x1 = x0, x, y;
+    while (++i < n) {
+      p = ring[i];
+      cosφ = Math.cos(φ = p[1]);
+      x = Math.atan2(invisible * Math.sin(λ = p[0]) * cosφ, Math.sin(φ));
+      y = 1 - invisible * Math.cos(λ) * cosφ;
+      if (Math.abs(y0 - 2) < ε && Math.abs(y - 2) < ε) continue;
+      if (Math.abs(y) < ε || Math.abs(y0) < ε) {} else if (Math.abs(Math.abs(x - x0) - π) < ε) {
+        if (y + y0 > 2) area += 4 * (x - x0);
+      } else if (Math.abs(y0 - 2) < ε) area += 4 * (x - x1); else area += ((3 * π + x - x0) % (2 * π) - π) * (y0 + y);
+      x1 = x0, x0 = x, y0 = y;
+    }
+    return area;
+  }
+  function d3_geo_clipSort(a, b) {
+    return ((a = a.point)[0] < 0 ? a[1] - π / 2 - ε : π / 2 - a[1]) - ((b = b.point)[0] < 0 ? b[1] - π / 2 - ε : π / 2 - b[1]);
+  }
+  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate);
+  function d3_geo_clipAntimeridianLine(listener) {
+    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
+    return {
+      lineStart: function() {
+        listener.lineStart();
+        clean = 1;
+      },
+      point: function(λ1, φ1) {
+        var sλ1 = λ1 > 0 ? π : -π, dλ = Math.abs(λ1 - λ0);
+        if (Math.abs(dλ - π) < ε) {
+          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? π / 2 : -π / 2);
+          listener.point(sλ0, φ0);
+          listener.lineEnd();
+          listener.lineStart();
+          listener.point(sλ1, φ0);
+          listener.point(λ1, φ0);
+          clean = 0;
+        } else if (sλ0 !== sλ1 && dλ >= π) {
+          if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
+          if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
+          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
+          listener.point(sλ0, φ0);
+          listener.lineEnd();
+          listener.lineStart();
+          listener.point(sλ1, φ0);
+          clean = 0;
+        }
+        listener.point(λ0 = λ1, φ0 = φ1);
+        sλ0 = sλ1;
+      },
+      lineEnd: function() {
+        listener.lineEnd();
+        λ0 = φ0 = NaN;
+      },
+      clean: function() {
+        return 2 - clean;
+      }
+    };
+  }
+  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
+    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
+    return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
+  }
+  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
+    var φ;
+    if (from == null) {
+      φ = direction * π / 2;
+      listener.point(-π, φ);
+      listener.point(0, φ);
+      listener.point(π, φ);
+      listener.point(π, 0);
+      listener.point(π, -φ);
+      listener.point(0, -φ);
+      listener.point(-π, -φ);
+      listener.point(-π, 0);
+      listener.point(-π, φ);
+    } else if (Math.abs(from[0] - to[0]) > ε) {
+      var s = (from[0] < to[0] ? 1 : -1) * π;
+      φ = direction * s / 2;
+      listener.point(-s, φ);
+      listener.point(0, φ);
+      listener.point(s, φ);
+    } else {
+      listener.point(to[0], to[1]);
+    }
+  }
+  function d3_geo_clipCircle(radius) {
+    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = Math.abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
+    return d3_geo_clip(visible, clipLine, interpolate);
+    function visible(λ, φ) {
+      return Math.cos(λ) * Math.cos(φ) > cr;
+    }
+    function clipLine(listener) {
+      var point0, c0, v0, v00, clean;
+      return {
+        lineStart: function() {
+          v00 = v0 = false;
+          clean = 1;
+        },
+        point: function(λ, φ) {
+          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
+          if (!point0 && (v00 = v0 = v)) listener.lineStart();
+          if (v !== v0) {
+            point2 = intersect(point0, point1);
+            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
+              point1[0] += ε;
+              point1[1] += ε;
+              v = visible(point1[0], point1[1]);
+            }
+          }
+          if (v !== v0) {
+            clean = 0;
+            if (v) {
+              listener.lineStart();
+              point2 = intersect(point1, point0);
+              listener.point(point2[0], point2[1]);
+            } else {
+              point2 = intersect(point0, point1);
+              listener.point(point2[0], point2[1]);
+              listener.lineEnd();
+            }
+            point0 = point2;
+          } else if (notHemisphere && point0 && smallRadius ^ v) {
+            var t;
+            if (!(c & c0) && (t = intersect(point1, point0, true))) {
+              clean = 0;
+              if (smallRadius) {
+                listener.lineStart();
+                listener.point(t[0][0], t[0][1]);
+                listener.point(t[1][0], t[1][1]);
+                listener.lineEnd();
+              } else {
+                listener.point(t[1][0], t[1][1]);
+                listener.lineEnd();
+                listener.lineStart();
+                listener.point(t[0][0], t[0][1]);
+              }
+            }
+          }
+          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
+            listener.point(point1[0], point1[1]);
+          }
+          point0 = point1, v0 = v, c0 = c;
+        },
+        lineEnd: function() {
+          if (v0) listener.lineEnd();
+          point0 = null;
+        },
+        clean: function() {
+          return clean | (v00 && v0) << 1;
+        }
+      };
+    }
+    function intersect(a, b, two) {
+      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);
+      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
+      if (!determinant) return !two && a;
+      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);
+      d3_geo_cartesianAdd(A, B);
+      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
+      if (t2 < 0) return;
+      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);
+      d3_geo_cartesianAdd(q, A);
+      q = d3_geo_spherical(q);
+      if (!two) return q;
+      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;
+      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
+      var δλ = λ1 - λ0, polar = Math.abs(δλ - π) < ε, meridian = polar || δλ < ε;
+      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
+      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (Math.abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
+        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
+        d3_geo_cartesianAdd(q1, A);
+        return [ q, d3_geo_spherical(q1) ];
+      }
+    }
+    function code(λ, φ) {
+      var r = smallRadius ? radius : π - radius, code = 0;
+      if (λ < -r) code |= 1; else if (λ > r) code |= 2;
+      if (φ < -r) code |= 4; else if (φ > r) code |= 8;
+      return code;
+    }
+  }
+  var d3_geo_clipViewMAX = 1e9;
+  function d3_geo_clipView(x0, y0, x1, y1) {
+    return function(listener) {
+      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), segments, polygon, ring;
+      var clip = {
+        point: point,
+        lineStart: lineStart,
+        lineEnd: lineEnd,
+        polygonStart: function() {
+          listener = bufferListener;
+          segments = [];
+          polygon = [];
+        },
+        polygonEnd: function() {
+          listener = listener_;
+          if ((segments = d3.merge(segments)).length) {
+            listener.polygonStart();
+            d3_geo_clipPolygon(segments, compare, inside, interpolate, listener);
+            listener.polygonEnd();
+          } else if (insidePolygon([ x0, y0 ])) {
+            listener.polygonStart(), listener.lineStart();
+            interpolate(null, null, 1, listener);
+            listener.lineEnd(), listener.polygonEnd();
+          }
+          segments = polygon = ring = null;
+        }
+      };
+      function inside(point) {
+        var a = corner(point, -1), i = insidePolygon([ a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0 ]);
+        return i;
+      }
+      function insidePolygon(p) {
+        var wn = 0, n = polygon.length, y = p[1];
+        for (var i = 0; i < n; ++i) {
+          for (var j = 1, v = polygon[i], m = v.length, a = v[0]; j < m; ++j) {
+            b = v[j];
+            if (a[1] <= y) {
+              if (b[1] > y && isLeft(a, b, p) > 0) ++wn;
+            } else {
+              if (b[1] <= y && isLeft(a, b, p) < 0) --wn;
+            }
+            a = b;
+          }
+        }
+        return wn !== 0;
+      }
+      function isLeft(a, b, c) {
+        return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]);
+      }
+      function interpolate(from, to, direction, listener) {
+        var a = 0, a1 = 0;
+        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {
+          do {
+            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
+          } while ((a = (a + direction + 4) % 4) !== a1);
+        } else {
+          listener.point(to[0], to[1]);
+        }
+      }
+      function visible(x, y) {
+        return x0 <= x && x <= x1 && y0 <= y && y <= y1;
+      }
+      function point(x, y) {
+        if (visible(x, y)) listener.point(x, y);
+      }
+      var x__, y__, v__, x_, y_, v_, first;
+      function lineStart() {
+        clip.point = linePoint;
+        if (polygon) polygon.push(ring = []);
+        first = true;
+        v_ = false;
+        x_ = y_ = NaN;
+      }
+      function lineEnd() {
+        if (segments) {
+          linePoint(x__, y__);
+          if (v__ && v_) bufferListener.rejoin();
+          segments.push(bufferListener.buffer());
+        }
+        clip.point = point;
+        if (v_) listener.lineEnd();
+      }
+      function linePoint(x, y) {
+        x = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, x));
+        y = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, y));
+        var v = visible(x, y);
+        if (polygon) ring.push([ x, y ]);
+        if (first) {
+          x__ = x, y__ = y, v__ = v;
+          first = false;
+          if (v) {
+            listener.lineStart();
+            listener.point(x, y);
+          }
+        } else {
+          if (v && v_) listener.point(x, y); else {
+            var a = [ x_, y_ ], b = [ x, y ];
+            if (clipLine(a, b)) {
+              if (!v_) {
+                listener.lineStart();
+                listener.point(a[0], a[1]);
+              }
+              listener.point(b[0], b[1]);
+              if (!v) listener.lineEnd();
+            } else {
+              listener.lineStart();
+              listener.point(x, y);
+            }
+          }
+        }
+        x_ = x, y_ = y, v_ = v;
+      }
+      return clip;
+    };
+    function corner(p, direction) {
+      return Math.abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : Math.abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : Math.abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
+    }
+    function compare(a, b) {
+      return comparePoints(a.point, b.point);
+    }
+    function comparePoints(a, b) {
+      var ca = corner(a, 1), cb = corner(b, 1);
+      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
+    }
+    function clipLine(a, b) {
+      var dx = b[0] - a[0], dy = b[1] - a[1], t = [ 0, 1 ];
+      if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1;
+      if (d3_geo_clipViewT(x0 - a[0], dx, t) && d3_geo_clipViewT(a[0] - x1, -dx, t) && d3_geo_clipViewT(y0 - a[1], dy, t) && d3_geo_clipViewT(a[1] - y1, -dy, t)) {
+        if (t[1] < 1) {
+          b[0] = a[0] + t[1] * dx;
+          b[1] = a[1] + t[1] * dy;
+        }
+        if (t[0] > 0) {
+          a[0] += t[0] * dx;
+          a[1] += t[0] * dy;
+        }
+        return true;
+      }
+      return false;
+    }
+  }
+  function d3_geo_clipViewT(num, denominator, t) {
+    if (Math.abs(denominator) < ε) return num <= 0;
+    var u = num / denominator;
+    if (denominator > 0) {
+      if (u > t[1]) return false;
+      if (u > t[0]) t[0] = u;
+    } else {
+      if (u < t[0]) return false;
+      if (u < t[1]) t[1] = u;
+    }
+    return true;
+  }
+  function d3_geo_compose(a, b) {
+    function compose(x, y) {
+      return x = a(x, y), b(x[0], x[1]);
+    }
+    if (a.invert && b.invert) compose.invert = function(x, y) {
+      return x = b.invert(x, y), x && a.invert(x[0], x[1]);
+    };
+    return compose;
+  }
+  function d3_geo_resample(project) {
+    var δ2 = .5, maxDepth = 16;
+    function resample(stream) {
+      var λ0, x0, y0, a0, b0, c0;
+      var resample = {
+        point: point,
+        lineStart: lineStart,
+        lineEnd: lineEnd,
+        polygonStart: function() {
+          stream.polygonStart();
+          resample.lineStart = polygonLineStart;
+        },
+        polygonEnd: function() {
+          stream.polygonEnd();
+          resample.lineStart = lineStart;
+        }
+      };
+      function point(x, y) {
+        x = project(x, y);
+        stream.point(x[0], x[1]);
+      }
+      function lineStart() {
+        x0 = NaN;
+        resample.point = linePoint;
+        stream.lineStart();
+      }
+      function linePoint(λ, φ) {
+        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
+        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
+        stream.point(x0, y0);
+      }
+      function lineEnd() {
+        resample.point = point;
+        stream.lineEnd();
+      }
+      function polygonLineStart() {
+        var λ00, φ00, x00, y00, a00, b00, c00;
+        lineStart();
+        resample.point = function(λ, φ) {
+          linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
+          resample.point = linePoint;
+        };
+        resample.lineEnd = function() {
+          resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
+          resample.lineEnd = lineEnd;
+          lineEnd();
+        };
+      }
+      return resample;
+    }
+    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
+      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
+      if (d2 > 4 * δ2 && depth--) {
+        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;
+        if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3) {
+          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
+          stream.point(x2, y2);
+          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
+        }
+      }
+    }
+    resample.precision = function(_) {
+      if (!arguments.length) return Math.sqrt(δ2);
+      maxDepth = (δ2 = _ * _) > 0 && 16;
+      return resample;
+    };
+    return resample;
+  }
+  d3.geo.projection = d3_geo_projection;
+  d3.geo.projectionMutator = d3_geo_projectionMutator;
+  function d3_geo_projection(project) {
+    return d3_geo_projectionMutator(function() {
+      return project;
+    })();
+  }
+  function d3_geo_projectionMutator(projectAt) {
+    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {
+      x = project(x, y);
+      return [ x[0] * k + δx, δy - x[1] * k ];
+    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null;
+    function projection(point) {
+      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
+      return [ point[0] * k + δx, δy - point[1] * k ];
+    }
+    function invert(point) {
+      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
+      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
+    }
+    projection.stream = function(stream) {
+      return d3_geo_projectionRadiansRotate(rotate, preclip(projectResample(postclip(stream))));
+    };
+    projection.clipAngle = function(_) {
+      if (!arguments.length) return clipAngle;
+      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
+      return projection;
+    };
+    projection.clipExtent = function(_) {
+      if (!arguments.length) return clipExtent;
+      clipExtent = _;
+      postclip = _ == null ? d3_identity : d3_geo_clipView(_[0][0], _[0][1], _[1][0], _[1][1]);
+      return projection;
+    };
+    projection.scale = function(_) {
+      if (!arguments.length) return k;
+      k = +_;
+      return reset();
+    };
+    projection.translate = function(_) {
+      if (!arguments.length) return [ x, y ];
+      x = +_[0];
+      y = +_[1];
+      return reset();
+    };
+    projection.center = function(_) {
+      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
+      λ = _[0] % 360 * d3_radians;
+      φ = _[1] % 360 * d3_radians;
+      return reset();
+    };
+    projection.rotate = function(_) {
+      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];
+      δλ = _[0] % 360 * d3_radians;
+      δφ = _[1] % 360 * d3_radians;
+      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
+      return reset();
+    };
+    d3.rebind(projection, projectResample, "precision");
+    function reset() {
+      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
+      var center = project(λ, φ);
+      δx = x - center[0] * k;
+      δy = y + center[1] * k;
+      return projection;
+    }
+    return function() {
+      project = projectAt.apply(this, arguments);
+      projection.invert = project.invert && invert;
+      return reset();
+    };
+  }
+  function d3_geo_projectionRadiansRotate(rotate, stream) {
+    return {
+      point: function(x, y) {
+        y = rotate(x * d3_radians, y * d3_radians), x = y[0];
+        stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]);
+      },
+      sphere: function() {
+        stream.sphere();
+      },
+      lineStart: function() {
+        stream.lineStart();
+      },
+      lineEnd: function() {
+        stream.lineEnd();
+      },
+      polygonStart: function() {
+        stream.polygonStart();
+      },
+      polygonEnd: function() {
+        stream.polygonEnd();
+      }
+    };
+  }
+  function d3_geo_equirectangular(λ, φ) {
+    return [ λ, φ ];
+  }
+  (d3.geo.equirectangular = function() {
+    return d3_geo_projection(d3_geo_equirectangular);
+  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
+  d3.geo.rotation = function(rotate) {
+    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
+    function forward(coordinates) {
+      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
+      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+    }
+    forward.invert = function(coordinates) {
+      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
+      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
+    };
+    return forward;
+  };
+  function d3_geo_rotation(δλ, δφ, δγ) {
+    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_equirectangular;
+  }
+  function d3_geo_forwardRotationλ(δλ) {
+    return function(λ, φ) {
+      return λ += δλ, [ λ > π ? λ - 2 * π : λ < -π ? λ + 2 * π : λ, φ ];
+    };
+  }
+  function d3_geo_rotationλ(δλ) {
+    var rotation = d3_geo_forwardRotationλ(δλ);
+    rotation.invert = d3_geo_forwardRotationλ(-δλ);
+    return rotation;
+  }
+  function d3_geo_rotationφγ(δφ, δγ) {
+    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);
+    function rotation(λ, φ) {
+      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;
+      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), Math.asin(Math.max(-1, Math.min(1, k * cosδγ + y * sinδγ))) ];
+    }
+    rotation.invert = function(λ, φ) {
+      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;
+      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), Math.asin(Math.max(-1, Math.min(1, k * cosδφ - x * sinδφ))) ];
+    };
+    return rotation;
+  }
+  d3.geo.circle = function() {
+    var origin = [ 0, 0 ], angle, precision = 6, interpolate;
+    function circle() {
+      var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];
+      interpolate(null, null, 1, {
+        point: function(x, y) {
+          ring.push(x = rotate(x, y));
+          x[0] *= d3_degrees, x[1] *= d3_degrees;
+        }
+      });
+      return {
+        type: "Polygon",
+        coordinates: [ ring ]
+      };
+    }
+    circle.origin = function(x) {
+      if (!arguments.length) return origin;
+      origin = x;
+      return circle;
+    };
+    circle.angle = function(x) {
+      if (!arguments.length) return angle;
+      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
+      return circle;
+    };
+    circle.precision = function(_) {
+      if (!arguments.length) return precision;
+      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
+      return circle;
+    };
+    return circle.angle(90);
+  };
+  function d3_geo_circleInterpolate(radius, precision) {
+    var cr = Math.cos(radius), sr = Math.sin(radius);
+    return function(from, to, direction, listener) {
+      if (from != null) {
+        from = d3_geo_circleAngle(cr, from);
+        to = d3_geo_circleAngle(cr, to);
+        if (direction > 0 ? from < to : from > to) from += direction * 2 * π;
+      } else {
+        from = radius + direction * 2 * π;
+        to = radius;
+      }
+      var point;
+      for (var step = direction * precision, t = from; direction > 0 ? t > to : t < to; t -= step) {
+        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);
+      }
+    };
+  }
+  function d3_geo_circleAngle(cr, point) {
+    var a = d3_geo_cartesian(point);
+    a[0] -= cr;
+    d3_geo_cartesianNormalize(a);
+    var angle = d3_acos(-a[1]);
+    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
+  }
+  d3.geo.distance = function(a, b) {
+    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
+    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
+  };
+  d3.geo.graticule = function() {
+    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;
+    function graticule() {
+      return {
+        type: "MultiLineString",
+        coordinates: lines()
+      };
+    }
+    function lines() {
+      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
+        return Math.abs(x % DX) > ε;
+      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
+        return Math.abs(y % DY) > ε;
+      }).map(y));
+    }
+    graticule.lines = function() {
+      return lines().map(function(coordinates) {
+        return {
+          type: "LineString",
+          coordinates: coordinates
+        };
+      });
+    };
+    graticule.outline = function() {
+      return {
+        type: "Polygon",
+        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]
+      };
+    };
+    graticule.extent = function(_) {
+      if (!arguments.length) return graticule.minorExtent();
+      return graticule.majorExtent(_).minorExtent(_);
+    };
+    graticule.majorExtent = function(_) {
+      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
+      X0 = +_[0][0], X1 = +_[1][0];
+      Y0 = +_[0][1], Y1 = +_[1][1];
+      if (X0 > X1) _ = X0, X0 = X1, X1 = _;
+      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
+      return graticule.precision(precision);
+    };
+    graticule.minorExtent = function(_) {
+      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
+      x0 = +_[0][0], x1 = +_[1][0];
+      y0 = +_[0][1], y1 = +_[1][1];
+      if (x0 > x1) _ = x0, x0 = x1, x1 = _;
+      if (y0 > y1) _ = y0, y0 = y1, y1 = _;
+      return graticule.precision(precision);
+    };
+    graticule.step = function(_) {
+      if (!arguments.length) return graticule.minorStep();
+      return graticule.majorStep(_).minorStep(_);
+    };
+    graticule.majorStep = function(_) {
+      if (!arguments.length) return [ DX, DY ];
+      DX = +_[0], DY = +_[1];
+      return graticule;
+    };
+    graticule.minorStep = function(_) {
+      if (!arguments.length) return [ dx, dy ];
+      dx = +_[0], dy = +_[1];
+      return graticule;
+    };
+    graticule.precision = function(_) {
+      if (!arguments.length) return precision;
+      precision = +_;
+      x = d3_geo_graticuleX(y0, y1, 90);
+      y = d3_geo_graticuleY(x0, x1, precision);
+      X = d3_geo_graticuleX(Y0, Y1, 90);
+      Y = d3_geo_graticuleY(X0, X1, precision);
+      return graticule;
+    };
+    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);
+  };
+  function d3_geo_graticuleX(y0, y1, dy) {
+    var y = d3.range(y0, y1 - ε, dy).concat(y1);
+    return function(x) {
+      return y.map(function(y) {
+        return [ x, y ];
+      });
+    };
+  }
+  function d3_geo_graticuleY(x0, x1, dx) {
+    var x = d3.range(x0, x1 - ε, dx).concat(x1);
+    return function(y) {
+      return x.map(function(x) {
+        return [ x, y ];
+      });
+    };
+  }
+  function d3_source(d) {
+    return d.source;
+  }
+  function d3_target(d) {
+    return d.target;
+  }
+  d3.geo.greatArc = function() {
+    var source = d3_source, source_, target = d3_target, target_;
+    function greatArc() {
+      return {
+        type: "LineString",
+        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]
+      };
+    }
+    greatArc.distance = function() {
+      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));
+    };
+    greatArc.source = function(_) {
+      if (!arguments.length) return source;
+      source = _, source_ = typeof _ === "function" ? null : _;
+      return greatArc;
+    };
+    greatArc.target = function(_) {
+      if (!arguments.length) return target;
+      target = _, target_ = typeof _ === "function" ? null : _;
+      return greatArc;
+    };
+    greatArc.precision = function() {
+      return arguments.length ? greatArc : 0;
+    };
+    return greatArc;
+  };
+  d3.geo.interpolate = function(source, target) {
+    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);
+  };
+  function d3_geo_interpolate(x0, y0, x1, y1) {
+    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
+    var interpolate = d ? function(t) {
+      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
+      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];
+    } : function() {
+      return [ x0 * d3_degrees, y0 * d3_degrees ];
+    };
+    interpolate.distance = d;
+    return interpolate;
+  }
+  d3.geo.length = function(object) {
+    d3_geo_lengthSum = 0;
+    d3.geo.stream(object, d3_geo_length);
+    return d3_geo_lengthSum;
+  };
+  var d3_geo_lengthSum;
+  var d3_geo_length = {
+    sphere: d3_noop,
+    point: d3_noop,
+    lineStart: d3_geo_lengthLineStart,
+    lineEnd: d3_noop,
+    polygonStart: d3_noop,
+    polygonEnd: d3_noop
+  };
+  function d3_geo_lengthLineStart() {
+    var λ0, sinφ0, cosφ0;
+    d3_geo_length.point = function(λ, φ) {
+      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
+      d3_geo_length.point = nextPoint;
+    };
+    d3_geo_length.lineEnd = function() {
+      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
+    };
+    function nextPoint(λ, φ) {
+      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);
+      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
+      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
+    }
+  }
+  function d3_geo_conic(projectAt) {
+    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
+    p.parallels = function(_) {
+      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
+      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
+    };
+    return p;
+  }
+  function d3_geo_conicEqualArea(φ0, φ1) {
+    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;
+    function forward(λ, φ) {
+      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
+      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
+    }
+    forward.invert = function(x, y) {
+      var ρ0_y = ρ0 - y;
+      return [ Math.atan2(x, ρ0_y) / n, Math.asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];
+    };
+    return forward;
+  }
+  (d3.geo.conicEqualArea = function() {
+    return d3_geo_conic(d3_geo_conicEqualArea);
+  }).raw = d3_geo_conicEqualArea;
+  d3.geo.albersUsa = function() {
+    var lower48 = d3.geo.conicEqualArea().rotate([ 98, 0 ]).center([ 0, 38 ]).parallels([ 29.5, 45.5 ]);
+    var alaska = d3.geo.conicEqualArea().rotate([ 160, 0 ]).center([ 0, 60 ]).parallels([ 55, 65 ]);
+    var hawaii = d3.geo.conicEqualArea().rotate([ 160, 0 ]).center([ 0, 20 ]).parallels([ 8, 18 ]);
+    var puertoRico = d3.geo.conicEqualArea().rotate([ 60, 0 ]).center([ 0, 10 ]).parallels([ 8, 18 ]);
+    var alaskaInvert, hawaiiInvert, puertoRicoInvert;
+    function albersUsa(coordinates) {
+      return projection(coordinates)(coordinates);
+    }
+    function projection(point) {
+      var lon = point[0], lat = point[1];
+      return lat > 50 ? alaska : lon < -140 ? hawaii : lat < 21 ? puertoRico : lower48;
+    }
+    albersUsa.invert = function(coordinates) {
+      return alaskaInvert(coordinates) || hawaiiInvert(coordinates) || puertoRicoInvert(coordinates) || lower48.invert(coordinates);
+    };
+    albersUsa.scale = function(x) {
+      if (!arguments.length) return lower48.scale();
+      lower48.scale(x);
+      alaska.scale(x * .6);
+      hawaii.scale(x);
+      puertoRico.scale(x * 1.5);
+      return albersUsa.translate(lower48.translate());
+    };
+    albersUsa.translate = function(x) {
+      if (!arguments.length) return lower48.translate();
+      var dz = lower48.scale(), dx = x[0], dy = x[1];
+      lower48.translate(x);
+      alaska.translate([ dx - .4 * dz, dy + .17 * dz ]);
+      hawaii.translate([ dx - .19 * dz, dy + .2 * dz ]);
+      puertoRico.translate([ dx + .58 * dz, dy + .43 * dz ]);
+      alaskaInvert = d3_geo_albersUsaInvert(alaska, [ [ -180, 50 ], [ -130, 72 ] ]);
+      hawaiiInvert = d3_geo_albersUsaInvert(hawaii, [ [ -164, 18 ], [ -154, 24 ] ]);
+      puertoRicoInvert = d3_geo_albersUsaInvert(puertoRico, [ [ -67.5, 17.5 ], [ -65, 19 ] ]);
+      return albersUsa;
+    };
+    return albersUsa.scale(1e3);
+  };
+  function d3_geo_albersUsaInvert(projection, extent) {
+    var a = projection(extent[0]), b = projection([ .5 * (extent[0][0] + extent[1][0]), extent[0][1] ]), c = projection([ extent[1][0], extent[0][1] ]), d = projection(extent[1]);
+    var dya = b[1] - a[1], dxa = b[0] - a[0], dyb = c[1] - b[1], dxb = c[0] - b[0];
+    var ma = dya / dxa, mb = dyb / dxb;
+    var cx = .5 * (ma * mb * (a[1] - c[1]) + mb * (a[0] + b[0]) - ma * (b[0] + c[0])) / (mb - ma), cy = (.5 * (a[0] + b[0]) - cx) / ma + .5 * (a[1] + b[1]);
+    var dx0 = d[0] - cx, dy0 = d[1] - cy, dx1 = a[0] - cx, dy1 = a[1] - cy, r0 = dx0 * dx0 + dy0 * dy0, r1 = dx1 * dx1 + dy1 * dy1;
+    var a0 = Math.atan2(dy0, dx0), a1 = Math.atan2(dy1, dx1);
+    return function(coordinates) {
+      var dx = coordinates[0] - cx, dy = coordinates[1] - cy, r = dx * dx + dy * dy, a = Math.atan2(dy, dx);
+      if (r0 < r && r < r1 && a0 < a && a < a1) return projection.invert(coordinates);
+    };
+  }
+  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
+    point: d3_noop,
+    lineStart: d3_noop,
+    lineEnd: d3_noop,
+    polygonStart: function() {
+      d3_geo_pathAreaPolygon = 0;
+      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
+    },
+    polygonEnd: function() {
+      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
+      d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2);
+    }
+  };
+  function d3_geo_pathAreaRingStart() {
+    var x00, y00, x0, y0;
+    d3_geo_pathArea.point = function(x, y) {
+      d3_geo_pathArea.point = nextPoint;
+      x00 = x0 = x, y00 = y0 = y;
+    };
+    function nextPoint(x, y) {
+      d3_geo_pathAreaPolygon += y0 * x - x0 * y;
+      x0 = x, y0 = y;
+    }
+    d3_geo_pathArea.lineEnd = function() {
+      nextPoint(x00, y00);
+    };
+  }
+  function d3_geo_pathBuffer() {
+    var pointCircle = d3_geo_pathCircle(4.5), buffer = [];
+    var stream = {
+      point: point,
+      lineStart: function() {
+        stream.point = pointLineStart;
+      },
+      lineEnd: lineEnd,
+      polygonStart: function() {
+        stream.lineEnd = lineEndPolygon;
+      },
+      polygonEnd: function() {
+        stream.lineEnd = lineEnd;
+        stream.point = point;
+      },
+      pointRadius: function(_) {
+        pointCircle = d3_geo_pathCircle(_);
+        return stream;
+      },
+      result: function() {
+        if (buffer.length) {
+          var result = buffer.join("");
+          buffer = [];
+          return result;
+        }
+      }
+    };
+    function point(x, y) {
+      buffer.push("M", x, ",", y, pointCircle);
+    }
+    function pointLineStart(x, y) {
+      buffer.push("M", x, ",", y);
+      stream.point = pointLine;
+    }
+    function pointLine(x, y) {
+      buffer.push("L", x, ",", y);
+    }
+    function lineEnd() {
+      stream.point = point;
+    }
+    function lineEndPolygon() {
+      buffer.push("Z");
+    }
+    return stream;
+  }
+  var d3_geo_pathCentroid = {
+    point: d3_geo_pathCentroidPoint,
+    lineStart: d3_geo_pathCentroidLineStart,
+    lineEnd: d3_geo_pathCentroidLineEnd,
+    polygonStart: function() {
+      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
+    },
+    polygonEnd: function() {
+      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
+      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
+    }
+  };
+  function d3_geo_pathCentroidPoint(x, y) {
+    if (d3_geo_centroidDimension) return;
+    d3_geo_centroidX += x;
+    d3_geo_centroidY += y;
+    ++d3_geo_centroidZ;
+  }
+  function d3_geo_pathCentroidLineStart() {
+    var x0, y0;
+    if (d3_geo_centroidDimension !== 1) {
+      if (d3_geo_centroidDimension < 1) {
+        d3_geo_centroidDimension = 1;
+        d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+      } else return;
+    }
+    d3_geo_pathCentroid.point = function(x, y) {
+      d3_geo_pathCentroid.point = nextPoint;
+      x0 = x, y0 = y;
+    };
+    function nextPoint(x, y) {
+      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
+      d3_geo_centroidX += z * (x0 + x) / 2;
+      d3_geo_centroidY += z * (y0 + y) / 2;
+      d3_geo_centroidZ += z;
+      x0 = x, y0 = y;
+    }
+  }
+  function d3_geo_pathCentroidLineEnd() {
+    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
+  }
+  function d3_geo_pathCentroidRingStart() {
+    var x00, y00, x0, y0;
+    if (d3_geo_centroidDimension < 2) {
+      d3_geo_centroidDimension = 2;
+      d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+    }
+    d3_geo_pathCentroid.point = function(x, y) {
+      d3_geo_pathCentroid.point = nextPoint;
+      x00 = x0 = x, y00 = y0 = y;
+    };
+    function nextPoint(x, y) {
+      var z = y0 * x - x0 * y;
+      d3_geo_centroidX += z * (x0 + x);
+      d3_geo_centroidY += z * (y0 + y);
+      d3_geo_centroidZ += z * 3;
+      x0 = x, y0 = y;
+    }
+    d3_geo_pathCentroid.lineEnd = function() {
+      nextPoint(x00, y00);
+    };
+  }
+  function d3_geo_pathContext(context) {
+    var pointRadius = 4.5;
+    var stream = {
+      point: point,
+      lineStart: function() {
+        stream.point = pointLineStart;
+      },
+      lineEnd: lineEnd,
+      polygonStart: function() {
+        stream.lineEnd = lineEndPolygon;
+      },
+      polygonEnd: function() {
+        stream.lineEnd = lineEnd;
+        stream.point = point;
+      },
+      pointRadius: function(_) {
+        pointRadius = _;
+        return stream;
+      },
+      result: d3_noop
+    };
+    function point(x, y) {
+      context.moveTo(x, y);
+      context.arc(x, y, pointRadius, 0, 2 * π);
+    }
+    function pointLineStart(x, y) {
+      context.moveTo(x, y);
+      stream.point = pointLine;
+    }
+    function pointLine(x, y) {
+      context.lineTo(x, y);
+    }
+    function lineEnd() {
+      stream.point = point;
+    }
+    function lineEndPolygon() {
+      context.closePath();
+    }
+    return stream;
+  }
+  d3.geo.path = function() {
+    var pointRadius = 4.5, projection, context, projectStream, contextStream;
+    function path(object) {
+      if (object) d3.geo.stream(object, projectStream(contextStream.pointRadius(typeof pointRadius === "function" ? +pointRadius.apply(this, arguments) : pointRadius)));
+      return contextStream.result();
+    }
+    path.area = function(object) {
+      d3_geo_pathAreaSum = 0;
+      d3.geo.stream(object, projectStream(d3_geo_pathArea));
+      return d3_geo_pathAreaSum;
+    };
+    path.centroid = function(object) {
+      d3_geo_centroidDimension = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
+      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
+      return d3_geo_centroidZ ? [ d3_geo_centroidX / d3_geo_centroidZ, d3_geo_centroidY / d3_geo_centroidZ ] : undefined;
+    };
+    path.bounds = function(object) {
+      return d3_geo_bounds(projectStream)(object);
+    };
+    path.projection = function(_) {
+      if (!arguments.length) return projection;
+      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
+      return path;
+    };
+    path.context = function(_) {
+      if (!arguments.length) return context;
+      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);
+      return path;
+    };
+    path.pointRadius = function(_) {
+      if (!arguments.length) return pointRadius;
+      pointRadius = typeof _ === "function" ? _ : +_;
+      return path;
+    };
+    return path.projection(d3.geo.albersUsa()).context(null);
+  };
+  function d3_geo_pathCircle(radius) {
+    return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + +2 * radius + "z";
+  }
+  function d3_geo_pathProjectStream(project) {
+    var resample = d3_geo_resample(function(λ, φ) {
+      return project([ λ * d3_degrees, φ * d3_degrees ]);
+    });
+    return function(stream) {
+      stream = resample(stream);
+      return {
+        point: function(λ, φ) {
+          stream.point(λ * d3_radians, φ * d3_radians);
+        },
+        sphere: function() {
+          stream.sphere();
+        },
+        lineStart: function() {
+          stream.lineStart();
+        },
+        lineEnd: function() {
+          stream.lineEnd();
+        },
+        polygonStart: function() {
+          stream.polygonStart();
+        },
+        polygonEnd: function() {
+          stream.polygonEnd();
+        }
+      };
+    };
+  }
+  d3.geo.albers = function() {
+    return d3.geo.conicEqualArea().parallels([ 29.5, 45.5 ]).rotate([ 98, 0 ]).center([ 0, 38 ]).scale(1e3);
+  };
+  function d3_geo_azimuthal(scale, angle) {
+    function azimuthal(λ, φ) {
+      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);
+      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];
+    }
+    azimuthal.invert = function(x, y) {
+      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);
+      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];
+    };
+    return azimuthal;
+  }
+  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {
+    return Math.sqrt(2 / (1 + cosλcosφ));
+  }, function(ρ) {
+    return 2 * Math.asin(ρ / 2);
+  });
+  (d3.geo.azimuthalEqualArea = function() {
+    return d3_geo_projection(d3_geo_azimuthalEqualArea);
+  }).raw = d3_geo_azimuthalEqualArea;
+  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {
+    var c = Math.acos(cosλcosφ);
+    return c && c / Math.sin(c);
+  }, d3_identity);
+  (d3.geo.azimuthalEquidistant = function() {
+    return d3_geo_projection(d3_geo_azimuthalEquidistant);
+  }).raw = d3_geo_azimuthalEquidistant;
+  function d3_geo_conicConformal(φ0, φ1) {
+    var cosφ0 = Math.cos(φ0), t = function(φ) {
+      return Math.tan(π / 4 + φ / 2);
+    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;
+    if (!n) return d3_geo_mercator;
+    function forward(λ, φ) {
+      var ρ = Math.abs(Math.abs(φ) - π / 2) < ε ? 0 : F / Math.pow(t(φ), n);
+      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];
+    }
+    forward.invert = function(x, y) {
+      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);
+      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - π / 2 ];
+    };
+    return forward;
+  }
+  (d3.geo.conicConformal = function() {
+    return d3_geo_conic(d3_geo_conicConformal);
+  }).raw = d3_geo_conicConformal;
+  function d3_geo_conicEquidistant(φ0, φ1) {
+    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;
+    if (Math.abs(n) < ε) return d3_geo_equirectangular;
+    function forward(λ, φ) {
+      var ρ = G - φ;
+      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];
+    }
+    forward.invert = function(x, y) {
+      var ρ0_y = G - y;
+      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];
+    };
+    return forward;
+  }
+  (d3.geo.conicEquidistant = function() {
+    return d3_geo_conic(d3_geo_conicEquidistant);
+  }).raw = d3_geo_conicEquidistant;
+  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {
+    return 1 / cosλcosφ;
+  }, Math.atan);
+  (d3.geo.gnomonic = function() {
+    return d3_geo_projection(d3_geo_gnomonic);
+  }).raw = d3_geo_gnomonic;
+  function d3_geo_mercator(λ, φ) {
+    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];
+  }
+  d3_geo_mercator.invert = function(x, y) {
+    return [ x, 2 * Math.atan(Math.exp(y)) - π / 2 ];
+  };
+  function d3_geo_mercatorProjection(project) {
+    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;
+    m.scale = function() {
+      var v = scale.apply(m, arguments);
+      return v === m ? clipAuto ? m.clipExtent(null) : m : v;
+    };
+    m.translate = function() {
+      var v = translate.apply(m, arguments);
+      return v === m ? clipAuto ? m.clipExtent(null) : m : v;
+    };
+    m.clipExtent = function(_) {
+      var v = clipExtent.apply(m, arguments);
+      if (v === m) {
+        if (clipAuto = _ == null) {
+          var k = π * scale(), t = translate();
+          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);
+        }
+      } else if (clipAuto) {
+        v = null;
+      }
+      return v;
+    };
+    return m.clipExtent(null);
+  }
+  (d3.geo.mercator = function() {
+    return d3_geo_mercatorProjection(d3_geo_mercator);
+  }).raw = d3_geo_mercator;
+  var d3_geo_orthographic = d3_geo_azimuthal(function() {
+    return 1;
+  }, Math.asin);
+  (d3.geo.orthographic = function() {
+    return d3_geo_projection(d3_geo_orthographic);
+  }).raw = d3_geo_orthographic;
+  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {
+    return 1 / (1 + cosλcosφ);
+  }, function(ρ) {
+    return 2 * Math.atan(ρ);
+  });
+  (d3.geo.stereographic = function() {
+    return d3_geo_projection(d3_geo_stereographic);
+  }).raw = d3_geo_stereographic;
+  function d3_geo_transverseMercator(λ, φ) {
+    var B = Math.cos(φ) * Math.sin(λ);
+    return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ];
+  }
+  d3_geo_transverseMercator.invert = function(x, y) {
+    return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ];
+  };
+  (d3.geo.transverseMercator = function() {
+    return d3_geo_mercatorProjection(d3_geo_transverseMercator);
+  }).raw = d3_geo_transverseMercator;
+  d3.geom = {};
+  d3.svg = {};
+  function d3_svg_line(projection) {
+    var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
+    function line(data) {
+      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
+      function segment() {
+        segments.push("M", interpolate(projection(points), tension));
+      }
+      while (++i < n) {
+        if (defined.call(this, d = data[i], i)) {
+          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
+        } else if (points.length) {
+          segment();
+          points = [];
+        }
+      }
+      if (points.length) segment();
+      return segments.length ? segments.join("") : null;
+    }
+    line.x = function(_) {
+      if (!arguments.length) return x;
+      x = _;
+      return line;
+    };
+    line.y = function(_) {
+      if (!arguments.length) return y;
+      y = _;
+      return line;
+    };
+    line.defined = function(_) {
+      if (!arguments.length) return defined;
+      defined = _;
+      return line;
+    };
+    line.interpolate = function(_) {
+      if (!arguments.length) return interpolateKey;
+      if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+      return line;
+    };
+    line.tension = function(_) {
+      if (!arguments.length) return tension;
+      tension = _;
+      return line;
+    };
+    return line;
+  }
+  d3.svg.line = function() {
+    return d3_svg_line(d3_identity);
+  };
+  function d3_svg_lineX(d) {
+    return d[0];
+  }
+  function d3_svg_lineY(d) {
+    return d[1];
+  }
+  var d3_svg_lineInterpolators = d3.map({
+    linear: d3_svg_lineLinear,
+    "linear-closed": d3_svg_lineLinearClosed,
+    "step-before": d3_svg_lineStepBefore,
+    "step-after": d3_svg_lineStepAfter,
+    basis: d3_svg_lineBasis,
+    "basis-open": d3_svg_lineBasisOpen,
+    "basis-closed": d3_svg_lineBasisClosed,
+    bundle: d3_svg_lineBundle,
+    cardinal: d3_svg_lineCardinal,
+    "cardinal-open": d3_svg_lineCardinalOpen,
+    "cardinal-closed": d3_svg_lineCardinalClosed,
+    monotone: d3_svg_lineMonotone
+  });
+  d3_svg_lineInterpolators.forEach(function(key, value) {
+    value.key = key;
+    value.closed = /-closed$/.test(key);
+  });
+  function d3_svg_lineLinear(points) {
+    return points.join("L");
+  }
+  function d3_svg_lineLinearClosed(points) {
+    return d3_svg_lineLinear(points) + "Z";
+  }
+  function d3_svg_lineStepBefore(points) {
+    var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+    while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
+    return path.join("");
+  }
+  function d3_svg_lineStepAfter(points) {
+    var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
+    while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
+    return path.join("");
+  }
+  function d3_svg_lineCardinalOpen(points, tension) {
+    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
+  }
+  function d3_svg_lineCardinalClosed(points, tension) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), 
+    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
+  }
+  function d3_svg_lineCardinal(points, tension) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
+  }
+  function d3_svg_lineHermite(points, tangents) {
+    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
+      return d3_svg_lineLinear(points);
+    }
+    var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
+    if (quad) {
+      path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
+      p0 = points[1];
+      pi = 2;
+    }
+    if (tangents.length > 1) {
+      t = tangents[1];
+      p = points[pi];
+      pi++;
+      path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+      for (var i = 2; i < tangents.length; i++, pi++) {
+        p = points[pi];
+        t = tangents[i];
+        path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
+      }
+    }
+    if (quad) {
+      var lp = points[pi];
+      path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
+    }
+    return path;
+  }
+  function d3_svg_lineCardinalTangents(points, tension) {
+    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
+    while (++i < n) {
+      p0 = p1;
+      p1 = p2;
+      p2 = points[i];
+      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
+    }
+    return tangents;
+  }
+  function d3_svg_lineBasis(points) {
+    if (points.length < 3) return d3_svg_lineLinear(points);
+    var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0 ];
+    d3_svg_lineBasisBezier(path, px, py);
+    while (++i < n) {
+      pi = points[i];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    i = -1;
+    while (++i < 2) {
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBasisOpen(points) {
+    if (points.length < 4) return d3_svg_lineLinear(points);
+    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
+    while (++i < 3) {
+      pi = points[i];
+      px.push(pi[0]);
+      py.push(pi[1]);
+    }
+    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
+    --i;
+    while (++i < n) {
+      pi = points[i];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBasisClosed(points) {
+    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
+    while (++i < 4) {
+      pi = points[i % n];
+      px.push(pi[0]);
+      py.push(pi[1]);
+    }
+    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
+    --i;
+    while (++i < m) {
+      pi = points[i % n];
+      px.shift();
+      px.push(pi[0]);
+      py.shift();
+      py.push(pi[1]);
+      d3_svg_lineBasisBezier(path, px, py);
+    }
+    return path.join("");
+  }
+  function d3_svg_lineBundle(points, tension) {
+    var n = points.length - 1;
+    if (n) {
+      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
+      while (++i <= n) {
+        p = points[i];
+        t = i / n;
+        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
+        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
+      }
+    }
+    return d3_svg_lineBasis(points);
+  }
+  function d3_svg_lineDot4(a, b) {
+    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+  }
+  var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
+  function d3_svg_lineBasisBezier(path, x, y) {
+    path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
+  }
+  function d3_svg_lineSlope(p0, p1) {
+    return (p1[1] - p0[1]) / (p1[0] - p0[0]);
+  }
+  function d3_svg_lineFiniteDifferences(points) {
+    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
+    while (++i < j) {
+      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
+    }
+    m[i] = d;
+    return m;
+  }
+  function d3_svg_lineMonotoneTangents(points) {
+    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
+    while (++i < j) {
+      d = d3_svg_lineSlope(points[i], points[i + 1]);
+      if (Math.abs(d) < 1e-6) {
+        m[i] = m[i + 1] = 0;
+      } else {
+        a = m[i] / d;
+        b = m[i + 1] / d;
+        s = a * a + b * b;
+        if (s > 9) {
+          s = d * 3 / Math.sqrt(s);
+          m[i] = s * a;
+          m[i + 1] = s * b;
+        }
+      }
+    }
+    i = -1;
+    while (++i <= j) {
+      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
+      tangents.push([ s || 0, m[i] * s || 0 ]);
+    }
+    return tangents;
+  }
+  function d3_svg_lineMonotone(points) {
+    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
+  }
+  d3.geom.hull = function(vertices) {
+    var x = d3_svg_lineX, y = d3_svg_lineY;
+    if (arguments.length) return hull(vertices);
+    function hull(data) {
+      if (data.length < 3) return [];
+      var fx = d3_functor(x), fy = d3_functor(y), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
+      if (fx === d3_svg_lineX && y === d3_svg_lineY) vertices = data; else for (i = 0, 
+      vertices = []; i < n; ++i) {
+        vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
+      }
+      for (i = 1; i < n; ++i) {
+        if (vertices[i][1] < vertices[h][1]) {
+          h = i;
+        } else if (vertices[i][1] == vertices[h][1]) {
+          h = vertices[i][0] < vertices[h][0] ? i : h;
+        }
+      }
+      for (i = 0; i < n; ++i) {
+        if (i === h) continue;
+        y1 = vertices[i][1] - vertices[h][1];
+        x1 = vertices[i][0] - vertices[h][0];
+        points.push({
+          angle: Math.atan2(y1, x1),
+          index: i
+        });
+      }
+      points.sort(function(a, b) {
+        return a.angle - b.angle;
+      });
+      a = points[0].angle;
+      v = points[0].index;
+      u = 0;
+      for (i = 1; i < plen; ++i) {
+        j = points[i].index;
+        if (a == points[i].angle) {
+          x1 = vertices[v][0] - vertices[h][0];
+          y1 = vertices[v][1] - vertices[h][1];
+          x2 = vertices[j][0] - vertices[h][0];
+          y2 = vertices[j][1] - vertices[h][1];
+          if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
+            points[i].index = -1;
+          } else {
+            points[u].index = -1;
+            a = points[i].angle;
+            u = i;
+            v = j;
+          }
+        } else {
+          a = points[i].angle;
+          u = i;
+          v = j;
+        }
+      }
+      stack.push(h);
+      for (i = 0, j = 0; i < 2; ++j) {
+        if (points[j].index !== -1) {
+          stack.push(points[j].index);
+          i++;
+        }
+      }
+      sp = stack.length;
+      for (;j < plen; ++j) {
+        if (points[j].index === -1) continue;
+        while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
+          --sp;
+        }
+        stack[sp++] = points[j].index;
+      }
+      var poly = [];
+      for (i = 0; i < sp; ++i) {
+        poly.push(data[stack[i]]);
+      }
+      return poly;
+    }
+    hull.x = function(_) {
+      return arguments.length ? (x = _, hull) : x;
+    };
+    hull.y = function(_) {
+      return arguments.length ? (y = _, hull) : y;
+    };
+    return hull;
+  };
+  function d3_geom_hullCCW(i1, i2, i3, v) {
+    var t, a, b, c, d, e, f;
+    t = v[i1];
+    a = t[0];
+    b = t[1];
+    t = v[i2];
+    c = t[0];
+    d = t[1];
+    t = v[i3];
+    e = t[0];
+    f = t[1];
+    return (f - b) * (c - a) - (d - b) * (e - a) > 0;
+  }
+  d3.geom.polygon = function(coordinates) {
+    coordinates.area = function() {
+      var i = 0, n = coordinates.length, area = coordinates[n - 1][1] * coordinates[0][0] - coordinates[n - 1][0] * coordinates[0][1];
+      while (++i < n) {
+        area += coordinates[i - 1][1] * coordinates[i][0] - coordinates[i - 1][0] * coordinates[i][1];
+      }
+      return area * .5;
+    };
+    coordinates.centroid = function(k) {
+      var i = -1, n = coordinates.length, x = 0, y = 0, a, b = coordinates[n - 1], c;
+      if (!arguments.length) k = -1 / (6 * coordinates.area());
+      while (++i < n) {
+        a = b;
+        b = coordinates[i];
+        c = a[0] * b[1] - b[0] * a[1];
+        x += (a[0] + b[0]) * c;
+        y += (a[1] + b[1]) * c;
+      }
+      return [ x * k, y * k ];
+    };
+    coordinates.clip = function(subject) {
+      var input, i = -1, n = coordinates.length, j, m, a = coordinates[n - 1], b, c, d;
+      while (++i < n) {
+        input = subject.slice();
+        subject.length = 0;
+        b = coordinates[i];
+        c = input[(m = input.length) - 1];
+        j = -1;
+        while (++j < m) {
+          d = input[j];
+          if (d3_geom_polygonInside(d, a, b)) {
+            if (!d3_geom_polygonInside(c, a, b)) {
+              subject.push(d3_geom_polygonIntersect(c, d, a, b));
+            }
+            subject.push(d);
+          } else if (d3_geom_polygonInside(c, a, b)) {
+            subject.push(d3_geom_polygonIntersect(c, d, a, b));
+          }
+          c = d;
+        }
+        a = b;
+      }
+      return subject;
+    };
+    return coordinates;
+  };
+  function d3_geom_polygonInside(p, a, b) {
+    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
+  }
+  function d3_geom_polygonIntersect(c, d, a, b) {
+    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
+    return [ x1 + ua * x21, y1 + ua * y21 ];
+  }
+  d3.geom.delaunay = function(vertices) {
+    var edges = vertices.map(function() {
+      return [];
+    }), triangles = [];
+    d3_geom_voronoiTessellate(vertices, function(e) {
+      edges[e.region.l.index].push(vertices[e.region.r.index]);
+    });
+    edges.forEach(function(edge, i) {
+      var v = vertices[i], cx = v[0], cy = v[1];
+      edge.forEach(function(v) {
+        v.angle = Math.atan2(v[0] - cx, v[1] - cy);
+      });
+      edge.sort(function(a, b) {
+        return a.angle - b.angle;
+      });
+      for (var j = 0, m = edge.length - 1; j < m; j++) {
+        triangles.push([ v, edge[j], edge[j + 1] ]);
+      }
+    });
+    return triangles;
+  };
+  d3.geom.voronoi = function(points) {
+    var size = null, x = d3_svg_lineX, y = d3_svg_lineY, clip;
+    if (arguments.length) return voronoi(points);
+    function voronoi(data) {
+      var points, polygons = data.map(function() {
+        return [];
+      }), fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length, Z = 1e6;
+      if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = [], 
+      i = 0; i < n; ++i) {
+        points.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
+      }
+      d3_geom_voronoiTessellate(points, function(e) {
+        var s1, s2, x1, x2, y1, y2;
+        if (e.a === 1 && e.b >= 0) {
+          s1 = e.ep.r;
+          s2 = e.ep.l;
+        } else {
+          s1 = e.ep.l;
+          s2 = e.ep.r;
+        }
+        if (e.a === 1) {
+          y1 = s1 ? s1.y : -Z;
+          x1 = e.c - e.b * y1;
+          y2 = s2 ? s2.y : Z;
+          x2 = e.c - e.b * y2;
+        } else {
+          x1 = s1 ? s1.x : -Z;
+          y1 = e.c - e.a * x1;
+          x2 = s2 ? s2.x : Z;
+          y2 = e.c - e.a * x2;
+        }
+        var v1 = [ x1, y1 ], v2 = [ x2, y2 ];
+        polygons[e.region.l.index].push(v1, v2);
+        polygons[e.region.r.index].push(v1, v2);
+      });
+      polygons = polygons.map(function(polygon, i) {
+        var cx = points[i][0], cy = points[i][1], angle = polygon.map(function(v) {
+          return Math.atan2(v[0] - cx, v[1] - cy);
+        }), order = d3.range(polygon.length).sort(function(a, b) {
+          return angle[a] - angle[b];
+        });
+        return order.filter(function(d, i) {
+          return !i || angle[d] - angle[order[i - 1]] > ε;
+        }).map(function(d) {
+          return polygon[d];
+        });
+      });
+      polygons.forEach(function(polygon, i) {
+        var n = polygon.length;
+        if (!n) return polygon.push([ -Z, -Z ], [ -Z, Z ], [ Z, Z ], [ Z, -Z ]);
+        if (n > 2) return;
+        var p0 = points[i], p1 = polygon[0], p2 = polygon[1], x0 = p0[0], y0 = p0[1], x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1], dx = Math.abs(x2 - x1), dy = y2 - y1;
+        if (Math.abs(dy) < ε) {
+          var y = y0 < y1 ? -Z : Z;
+          polygon.push([ -Z, y ], [ Z, y ]);
+        } else if (dx < ε) {
+          var x = x0 < x1 ? -Z : Z;
+          polygon.push([ x, -Z ], [ x, Z ]);
+        } else {
+          var y = (x2 - x1) * (y1 - y0) < (x1 - x0) * (y2 - y1) ? Z : -Z, z = Math.abs(dy) - dx;
+          if (Math.abs(z) < ε) {
+            polygon.push([ dy < 0 ? y : -y, y ]);
+          } else {
+            if (z > 0) y *= -1;
+            polygon.push([ -Z, y ], [ Z, y ]);
+          }
+        }
+      });
+      if (clip) for (i = 0; i < n; ++i) clip(polygons[i]);
+      for (i = 0; i < n; ++i) polygons[i].point = data[i];
+      return polygons;
+    }
+    voronoi.x = function(_) {
+      return arguments.length ? (x = _, voronoi) : x;
+    };
+    voronoi.y = function(_) {
+      return arguments.length ? (y = _, voronoi) : y;
+    };
+    voronoi.size = function(_) {
+      if (!arguments.length) return size;
+      if (_ == null) {
+        clip = null;
+      } else {
+        size = [ +_[0], +_[1] ];
+        clip = d3.geom.polygon([ [ 0, 0 ], [ 0, size[1] ], size, [ size[0], 0 ] ]).clip;
+      }
+      return voronoi;
+    };
+    voronoi.links = function(data) {
+      var points, graph = data.map(function() {
+        return [];
+      }), links = [], fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length;
+      if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (i = 0; i < n; ++i) {
+        points.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
+      }
+      d3_geom_voronoiTessellate(points, function(e) {
+        var l = e.region.l.index, r = e.region.r.index;
+        if (graph[l][r]) return;
+        graph[l][r] = graph[r][l] = true;
+        links.push({
+          source: data[l],
+          target: data[r]
+        });
+      });
+      return links;
+    };
+    voronoi.triangles = function(data) {
+      if (x === d3_svg_lineX && y === d3_svg_lineY) return d3.geom.delaunay(data);
+      var points, point, fx = d3_functor(x), fy = d3_functor(y), d, i, n;
+      for (i = 0, points = [], n = data.length; i < n; ++i) {
+        point = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ];
+        point.data = d;
+        points.push(point);
+      }
+      return d3.geom.delaunay(points).map(function(triangle) {
+        return triangle.map(function(point) {
+          return point.data;
+        });
+      });
+    };
+    return voronoi;
+  };
+  var d3_geom_voronoiOpposite = {
+    l: "r",
+    r: "l"
+  };
+  function d3_geom_voronoiTessellate(points, callback) {
+    var Sites = {
+      list: points.map(function(v, i) {
+        return {
+          index: i,
+          x: v[0],
+          y: v[1]
+        };
+      }).sort(function(a, b) {
+        return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0;
+      }),
+      bottomSite: null
+    };
+    var EdgeList = {
+      list: [],
+      leftEnd: null,
+      rightEnd: null,
+      init: function() {
+        EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
+        EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
+        EdgeList.leftEnd.r = EdgeList.rightEnd;
+        EdgeList.rightEnd.l = EdgeList.leftEnd;
+        EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
+      },
+      createHalfEdge: function(edge, side) {
+        return {
+          edge: edge,
+          side: side,
+          vertex: null,
+          l: null,
+          r: null
+        };
+      },
+      insert: function(lb, he) {
+        he.l = lb;
+        he.r = lb.r;
+        lb.r.l = he;
+        lb.r = he;
+      },
+      leftBound: function(p) {
+        var he = EdgeList.leftEnd;
+        do {
+          he = he.r;
+        } while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
+        he = he.l;
+        return he;
+      },
+      del: function(he) {
+        he.l.r = he.r;
+        he.r.l = he.l;
+        he.edge = null;
+      },
+      right: function(he) {
+        return he.r;
+      },
+      left: function(he) {
+        return he.l;
+      },
+      leftRegion: function(he) {
+        return he.edge == null ? Sites.bottomSite : he.edge.region[he.side];
+      },
+      rightRegion: function(he) {
+        return he.edge == null ? Sites.bottomSite : he.edge.region[d3_geom_voronoiOpposite[he.side]];
+      }
+    };
+    var Geom = {
+      bisect: function(s1, s2) {
+        var newEdge = {
+          region: {
+            l: s1,
+            r: s2
+          },
+          ep: {
+            l: null,
+            r: null
+          }
+        };
+        var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy;
+        newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5;
+        if (adx > ady) {
+          newEdge.a = 1;
+          newEdge.b = dy / dx;
+          newEdge.c /= dx;
+        } else {
+          newEdge.b = 1;
+          newEdge.a = dx / dy;
+          newEdge.c /= dy;
+        }
+        return newEdge;
+      },
+      intersect: function(el1, el2) {
+        var e1 = el1.edge, e2 = el2.edge;
+        if (!e1 || !e2 || e1.region.r == e2.region.r) {
+          return null;
+        }
+        var d = e1.a * e2.b - e1.b * e2.a;
+        if (Math.abs(d) < 1e-10) {
+          return null;
+        }
+        var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e;
+        if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) {
+          el = el1;
+          e = e1;
+        } else {
+          el = el2;
+          e = e2;
+        }
+        var rightOfSite = xint >= e.region.r.x;
+        if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") {
+          return null;
+        }
+        return {
+          x: xint,
+          y: yint
+        };
+      },
+      rightOf: function(he, p) {
+        var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x;
+        if (rightOfSite && he.side === "l") {
+          return 1;
+        }
+        if (!rightOfSite && he.side === "r") {
+          return 0;
+        }
+        if (e.a === 1) {
+          var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0;
+          if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) {
+            above = fast = dyp >= e.b * dxp;
+          } else {
+            above = p.x + p.y * e.b > e.c;
+            if (e.b < 0) {
+              above = !above;
+            }
+            if (!above) {
+              fast = 1;
+            }
+          }
+          if (!fast) {
+            var dxs = topsite.x - e.region.l.x;
+            above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b);
+            if (e.b < 0) {
+              above = !above;
+            }
+          }
+        } else {
+          var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y;
+          above = t1 * t1 > t2 * t2 + t3 * t3;
+        }
+        return he.side === "l" ? above : !above;
+      },
+      endPoint: function(edge, side, site) {
+        edge.ep[side] = site;
+        if (!edge.ep[d3_geom_voronoiOpposite[side]]) return;
+        callback(edge);
+      },
+      distance: function(s, t) {
+        var dx = s.x - t.x, dy = s.y - t.y;
+        return Math.sqrt(dx * dx + dy * dy);
+      }
+    };
+    var EventQueue = {
+      list: [],
+      insert: function(he, site, offset) {
+        he.vertex = site;
+        he.ystar = site.y + offset;
+        for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) {
+          var next = list[i];
+          if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) {
+            continue;
+          } else {
+            break;
+          }
+        }
+        list.splice(i, 0, he);
+      },
+      del: function(he) {
+        for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {}
+        ls.splice(i, 1);
+      },
+      empty: function() {
+        return EventQueue.list.length === 0;
+      },
+      nextEvent: function(he) {
+        for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) {
+          if (ls[i] == he) return ls[i + 1];
+        }
+        return null;
+      },
+      min: function() {
+        var elem = EventQueue.list[0];
+        return {
+          x: elem.vertex.x,
+          y: elem.ystar
+        };
+      },
+      extractMin: function() {
+        return EventQueue.list.shift();
+      }
+    };
+    EdgeList.init();
+    Sites.bottomSite = Sites.list.shift();
+    var newSite = Sites.list.shift(), newIntStar;
+    var lbnd, rbnd, llbnd, rrbnd, bisector;
+    var bot, top, temp, p, v;
+    var e, pm;
+    while (true) {
+      if (!EventQueue.empty()) {
+        newIntStar = EventQueue.min();
+      }
+      if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) {
+        lbnd = EdgeList.leftBound(newSite);
+        rbnd = EdgeList.right(lbnd);
+        bot = EdgeList.rightRegion(lbnd);
+        e = Geom.bisect(bot, newSite);
+        bisector = EdgeList.createHalfEdge(e, "l");
+        EdgeList.insert(lbnd, bisector);
+        p = Geom.intersect(lbnd, bisector);
+        if (p) {
+          EventQueue.del(lbnd);
+          EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
+        }
+        lbnd = bisector;
+        bisector = EdgeList.createHalfEdge(e, "r");
+        EdgeList.insert(lbnd, bisector);
+        p = Geom.intersect(bisector, rbnd);
+        if (p) {
+          EventQueue.insert(bisector, p, Geom.distance(p, newSite));
+        }
+        newSite = Sites.list.shift();
+      } else if (!EventQueue.empty()) {
+        lbnd = EventQueue.extractMin();
+        llbnd = EdgeList.left(lbnd);
+        rbnd = EdgeList.right(lbnd);
+        rrbnd = EdgeList.right(rbnd);
+        bot = EdgeList.leftRegion(lbnd);
+        top = EdgeList.rightRegion(rbnd);
+        v = lbnd.vertex;
+        Geom.endPoint(lbnd.edge, lbnd.side, v);
+        Geom.endPoint(rbnd.edge, rbnd.side, v);
+        EdgeList.del(lbnd);
+        EventQueue.del(rbnd);
+        EdgeList.del(rbnd);
+        pm = "l";
+        if (bot.y > top.y) {
+          temp = bot;
+          bot = top;
+          top = temp;
+          pm = "r";
+        }
+        e = Geom.bisect(bot, top);
+        bisector = EdgeList.createHalfEdge(e, pm);
+        EdgeList.insert(llbnd, bisector);
+        Geom.endPoint(e, d3_geom_voronoiOpposite[pm], v);
+        p = Geom.intersect(llbnd, bisector);
+        if (p) {
+          EventQueue.del(llbnd);
+          EventQueue.insert(llbnd, p, Geom.distance(p, bot));
+        }
+        p = Geom.intersect(bisector, rrbnd);
+        if (p) {
+          EventQueue.insert(bisector, p, Geom.distance(p, bot));
+        }
+      } else {
+        break;
+      }
+    }
+    for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) {
+      callback(lbnd.edge);
+    }
+  }
+  d3.geom.quadtree = function(points, x1, y1, x2, y2) {
+    var x = d3_svg_lineX, y = d3_svg_lineY, compat;
+    if (compat = arguments.length) {
+      x = d3_geom_quadtreeCompatX;
+      y = d3_geom_quadtreeCompatY;
+      if (compat === 3) {
+        y2 = y1;
+        x2 = x1;
+        y1 = x1 = 0;
+      }
+      return quadtree(points);
+    }
+    function quadtree(data) {
+      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;
+      if (x1 != null) {
+        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;
+      } else {
+        x2_ = y2_ = -(x1_ = y1_ = Infinity);
+        xs = [], ys = [];
+        n = data.length;
+        if (compat) for (i = 0; i < n; ++i) {
+          d = data[i];
+          if (d.x < x1_) x1_ = d.x;
+          if (d.y < y1_) y1_ = d.y;
+          if (d.x > x2_) x2_ = d.x;
+          if (d.y > y2_) y2_ = d.y;
+          xs.push(d.x);
+          ys.push(d.y);
+        } else for (i = 0; i < n; ++i) {
+          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);
+          if (x_ < x1_) x1_ = x_;
+          if (y_ < y1_) y1_ = y_;
+          if (x_ > x2_) x2_ = x_;
+          if (y_ > y2_) y2_ = y_;
+          xs.push(x_);
+          ys.push(y_);
+        }
+      }
+      var dx = x2_ - x1_, dy = y2_ - y1_;
+      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;
+      function insert(n, d, x, y, x1, y1, x2, y2) {
+        if (isNaN(x) || isNaN(y)) return;
+        if (n.leaf) {
+          var nx = n.x, ny = n.y;
+          if (nx != null) {
+            if (Math.abs(nx - x) + Math.abs(ny - y) < .01) {
+              insertChild(n, d, x, y, x1, y1, x2, y2);
+            } else {
+              var nPoint = n.point;
+              n.x = n.y = n.point = null;
+              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);
+              insertChild(n, d, x, y, x1, y1, x2, y2);
+            }
+          } else {
+            n.x = x, n.y = y, n.point = d;
+          }
+        } else {
+          insertChild(n, d, x, y, x1, y1, x2, y2);
+        }
+      }
+      function insertChild(n, d, x, y, x1, y1, x2, y2) {
+        var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right;
+        n.leaf = false;
+        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
+        if (right) x1 = sx; else x2 = sx;
+        if (bottom) y1 = sy; else y2 = sy;
+        insert(n, d, x, y, x1, y1, x2, y2);
+      }
+      var root = d3_geom_quadtreeNode();
+      root.add = function(d) {
+        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);
+      };
+      root.visit = function(f) {
+        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
+      };
+      i = -1;
+      if (x1 == null) {
+        while (++i < n) {
+          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);
+        }
+        --i;
+      } else data.forEach(root.add);
+      xs = ys = data = d = null;
+      return root;
+    }
+    quadtree.x = function(_) {
+      return arguments.length ? (x = _, quadtree) : x;
+    };
+    quadtree.y = function(_) {
+      return arguments.length ? (y = _, quadtree) : y;
+    };
+    quadtree.size = function(_) {
+      if (!arguments.length) return x1 == null ? null : [ x2, y2 ];
+      if (_ == null) {
+        x1 = y1 = x2 = y2 = null;
+      } else {
+        x1 = y1 = 0;
+        x2 = +_[0], y2 = +_[1];
+      }
+      return quadtree;
+    };
+    return quadtree;
+  };
+  function d3_geom_quadtreeCompatX(d) {
+    return d.x;
+  }
+  function d3_geom_quadtreeCompatY(d) {
+    return d.y;
+  }
+  function d3_geom_quadtreeNode() {
+    return {
+      leaf: true,
+      nodes: [],
+      point: null,
+      x: null,
+      y: null
+    };
+  }
+  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
+    if (!f(node, x1, y1, x2, y2)) {
+      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
+      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
+      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
+      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
+      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
+    }
+  }
+  d3.interpolateRgb = d3_interpolateRgb;
+  function d3_interpolateRgb(a, b) {
+    a = d3.rgb(a);
+    b = d3.rgb(b);
+    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
+    return function(t) {
+      return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
+    };
+  }
+  d3.transform = function(string) {
+    var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
+    return (d3.transform = function(string) {
+      g.setAttribute("transform", string);
+      var t = g.transform.baseVal.consolidate();
+      return new d3_transform(t ? t.matrix : d3_transformIdentity);
+    })(string);
+  };
+  function d3_transform(m) {
+    var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
+    if (r0[0] * r1[1] < r1[0] * r0[1]) {
+      r0[0] *= -1;
+      r0[1] *= -1;
+      kx *= -1;
+      kz *= -1;
+    }
+    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
+    this.translate = [ m.e, m.f ];
+    this.scale = [ kx, ky ];
+    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
+  }
+  d3_transform.prototype.toString = function() {
+    return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
+  };
+  function d3_transformDot(a, b) {
+    return a[0] * b[0] + a[1] * b[1];
+  }
+  function d3_transformNormalize(a) {
+    var k = Math.sqrt(d3_transformDot(a, a));
+    if (k) {
+      a[0] /= k;
+      a[1] /= k;
+    }
+    return k;
+  }
+  function d3_transformCombine(a, b, k) {
+    a[0] += k * b[0];
+    a[1] += k * b[1];
+    return a;
+  }
+  var d3_transformIdentity = {
+    a: 1,
+    b: 0,
+    c: 0,
+    d: 1,
+    e: 0,
+    f: 0
+  };
+  d3.interpolateNumber = d3_interpolateNumber;
+  function d3_interpolateNumber(a, b) {
+    b -= a = +a;
+    return function(t) {
+      return a + b * t;
+    };
+  }
+  d3.interpolateTransform = d3_interpolateTransform;
+  function d3_interpolateTransform(a, b) {
+    var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
+    if (ta[0] != tb[0] || ta[1] != tb[1]) {
+      s.push("translate(", null, ",", null, ")");
+      q.push({
+        i: 1,
+        x: d3_interpolateNumber(ta[0], tb[0])
+      }, {
+        i: 3,
+        x: d3_interpolateNumber(ta[1], tb[1])
+      });
+    } else if (tb[0] || tb[1]) {
+      s.push("translate(" + tb + ")");
+    } else {
+      s.push("");
+    }
+    if (ra != rb) {
+      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
+      q.push({
+        i: s.push(s.pop() + "rotate(", null, ")") - 2,
+        x: d3_interpolateNumber(ra, rb)
+      });
+    } else if (rb) {
+      s.push(s.pop() + "rotate(" + rb + ")");
+    }
+    if (wa != wb) {
+      q.push({
+        i: s.push(s.pop() + "skewX(", null, ")") - 2,
+        x: d3_interpolateNumber(wa, wb)
+      });
+    } else if (wb) {
+      s.push(s.pop() + "skewX(" + wb + ")");
+    }
+    if (ka[0] != kb[0] || ka[1] != kb[1]) {
+      n = s.push(s.pop() + "scale(", null, ",", null, ")");
+      q.push({
+        i: n - 4,
+        x: d3_interpolateNumber(ka[0], kb[0])
+      }, {
+        i: n - 2,
+        x: d3_interpolateNumber(ka[1], kb[1])
+      });
+    } else if (kb[0] != 1 || kb[1] != 1) {
+      s.push(s.pop() + "scale(" + kb + ")");
+    }
+    n = q.length;
+    return function(t) {
+      var i = -1, o;
+      while (++i < n) s[(o = q[i]).i] = o.x(t);
+      return s.join("");
+    };
+  }
+  d3.interpolateObject = d3_interpolateObject;
+  function d3_interpolateObject(a, b) {
+    var i = {}, c = {}, k;
+    for (k in a) {
+      if (k in b) {
+        i[k] = d3_interpolateByName(k)(a[k], b[k]);
+      } else {
+        c[k] = a[k];
+      }
+    }
+    for (k in b) {
+      if (!(k in a)) {
+        c[k] = b[k];
+      }
+    }
+    return function(t) {
+      for (k in i) c[k] = i[k](t);
+      return c;
+    };
+  }
+  d3.interpolateString = d3_interpolateString;
+  function d3_interpolateString(a, b) {
+    var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
+    a = a + "", b = b + "";
+    d3_interpolate_number.lastIndex = 0;
+    for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
+      if (m.index) s.push(b.substring(s0, s1 = m.index));
+      q.push({
+        i: s.length,
+        x: m[0]
+      });
+      s.push(null);
+      s0 = d3_interpolate_number.lastIndex;
+    }
+    if (s0 < b.length) s.push(b.substring(s0));
+    for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
+      o = q[i];
+      if (o.x == m[0]) {
+        if (o.i) {
+          if (s[o.i + 1] == null) {
+            s[o.i - 1] += o.x;
+            s.splice(o.i, 1);
+            for (j = i + 1; j < n; ++j) q[j].i--;
+          } else {
+            s[o.i - 1] += o.x + s[o.i + 1];
+            s.splice(o.i, 2);
+            for (j = i + 1; j < n; ++j) q[j].i -= 2;
+          }
+        } else {
+          if (s[o.i + 1] == null) {
+            s[o.i] = o.x;
+          } else {
+            s[o.i] = o.x + s[o.i + 1];
+            s.splice(o.i + 1, 1);
+            for (j = i + 1; j < n; ++j) q[j].i--;
+          }
+        }
+        q.splice(i, 1);
+        n--;
+        i--;
+      } else {
+        o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
+      }
+    }
+    while (i < n) {
+      o = q.pop();
+      if (s[o.i + 1] == null) {
+        s[o.i] = o.x;
+      } else {
+        s[o.i] = o.x + s[o.i + 1];
+        s.splice(o.i + 1, 1);
+      }
+      n--;
+    }
+    if (s.length === 1) {
+      return s[0] == null ? q[0].x : function() {
+        return b;
+      };
+    }
+    return function(t) {
+      for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
+      return s.join("");
+    };
+  }
+  var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
+  d3.interpolate = d3_interpolate;
+  function d3_interpolate(a, b) {
+    var i = d3.interpolators.length, f;
+    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
+    return f;
+  }
+  function d3_interpolateByName(name) {
+    return name == "transform" ? d3_interpolateTransform : d3_interpolate;
+  }
+  d3.interpolators = [ function(a, b) {
+    var t = typeof b;
+    return (t === "string" || t !== typeof a ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject : d3_interpolateNumber)(a, b);
+  } ];
+  d3.interpolateArray = d3_interpolateArray;
+  function d3_interpolateArray(a, b) {
+    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
+    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
+    for (;i < na; ++i) c[i] = a[i];
+    for (;i < nb; ++i) c[i] = b[i];
+    return function(t) {
+      for (i = 0; i < n0; ++i) c[i] = x[i](t);
+      return c;
+    };
+  }
+  var d3_ease_default = function() {
+    return d3_identity;
+  };
+  var d3_ease = d3.map({
+    linear: d3_ease_default,
+    poly: d3_ease_poly,
+    quad: function() {
+      return d3_ease_quad;
+    },
+    cubic: function() {
+      return d3_ease_cubic;
+    },
+    sin: function() {
+      return d3_ease_sin;
+    },
+    exp: function() {
+      return d3_ease_exp;
+    },
+    circle: function() {
+      return d3_ease_circle;
+    },
+    elastic: d3_ease_elastic,
+    back: d3_ease_back,
+    bounce: function() {
+      return d3_ease_bounce;
+    }
+  });
+  var d3_ease_mode = d3.map({
+    "in": d3_identity,
+    out: d3_ease_reverse,
+    "in-out": d3_ease_reflect,
+    "out-in": function(f) {
+      return d3_ease_reflect(d3_ease_reverse(f));
+    }
+  });
+  d3.ease = function(name) {
+    var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in";
+    t = d3_ease.get(t) || d3_ease_default;
+    m = d3_ease_mode.get(m) || d3_identity;
+    return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1))));
+  };
+  function d3_ease_clamp(f) {
+    return function(t) {
+      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
+    };
+  }
+  function d3_ease_reverse(f) {
+    return function(t) {
+      return 1 - f(1 - t);
+    };
+  }
+  function d3_ease_reflect(f) {
+    return function(t) {
+      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
+    };
+  }
+  function d3_ease_quad(t) {
+    return t * t;
+  }
+  function d3_ease_cubic(t) {
+    return t * t * t;
+  }
+  function d3_ease_cubicInOut(t) {
+    if (t <= 0) return 0;
+    if (t >= 1) return 1;
+    var t2 = t * t, t3 = t2 * t;
+    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
+  }
+  function d3_ease_poly(e) {
+    return function(t) {
+      return Math.pow(t, e);
+    };
+  }
+  function d3_ease_sin(t) {
+    return 1 - Math.cos(t * π / 2);
+  }
+  function d3_ease_exp(t) {
+    return Math.pow(2, 10 * (t - 1));
+  }
+  function d3_ease_circle(t) {
+    return 1 - Math.sqrt(1 - t * t);
+  }
+  function d3_ease_elastic(a, p) {
+    var s;
+    if (arguments.length < 2) p = .45;
+    if (arguments.length) s = p / (2 * π) * Math.asin(1 / a); else a = 1, s = p / 4;
+    return function(t) {
+      return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * π / p);
+    };
+  }
+  function d3_ease_back(s) {
+    if (!s) s = 1.70158;
+    return function(t) {
+      return t * t * ((s + 1) * t - s);
+    };
+  }
+  function d3_ease_bounce(t) {
+    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+  }
+  d3.interpolateHcl = d3_interpolateHcl;
+  function d3_interpolateHcl(a, b) {
+    a = d3.hcl(a);
+    b = d3.hcl(b);
+    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
+    if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
+    return function(t) {
+      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
+    };
+  }
+  d3.interpolateHsl = d3_interpolateHsl;
+  function d3_interpolateHsl(a, b) {
+    a = d3.hsl(a);
+    b = d3.hsl(b);
+    var h0 = a.h, s0 = a.s, l0 = a.l, h1 = b.h - h0, s1 = b.s - s0, l1 = b.l - l0;
+    if (h1 > 180) h1 -= 360; else if (h1 < -180) h1 += 360;
+    return function(t) {
+      return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t) + "";
+    };
+  }
+  d3.interpolateLab = d3_interpolateLab;
+  function d3_interpolateLab(a, b) {
+    a = d3.lab(a);
+    b = d3.lab(b);
+    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
+    return function(t) {
+      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
+    };
+  }
+  d3.interpolateRound = d3_interpolateRound;
+  function d3_interpolateRound(a, b) {
+    b -= a;
+    return function(t) {
+      return Math.round(a + b * t);
+    };
+  }
+  function d3_uninterpolateNumber(a, b) {
+    b = b - (a = +a) ? 1 / (b - a) : 0;
+    return function(x) {
+      return (x - a) * b;
+    };
+  }
+  function d3_uninterpolateClamp(a, b) {
+    b = b - (a = +a) ? 1 / (b - a) : 0;
+    return function(x) {
+      return Math.max(0, Math.min(1, (x - a) * b));
+    };
+  }
+  d3.layout = {};
+  d3.layout.bundle = function() {
+    return function(links) {
+      var paths = [], i = -1, n = links.length;
+      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
+      return paths;
+    };
+  };
+  function d3_layout_bundlePath(link) {
+    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
+    while (start !== lca) {
+      start = start.parent;
+      points.push(start);
+    }
+    var k = points.length;
+    while (end !== lca) {
+      points.splice(k, 0, end);
+      end = end.parent;
+    }
+    return points;
+  }
+  function d3_layout_bundleAncestors(node) {
+    var ancestors = [], parent = node.parent;
+    while (parent != null) {
+      ancestors.push(node);
+      node = parent;
+      parent = parent.parent;
+    }
+    ancestors.push(node);
+    return ancestors;
+  }
+  function d3_layout_bundleLeastCommonAncestor(a, b) {
+    if (a === b) return a;
+    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
+    while (aNode === bNode) {
+      sharedNode = aNode;
+      aNode = aNodes.pop();
+      bNode = bNodes.pop();
+    }
+    return sharedNode;
+  }
+  d3.layout.chord = function() {
+    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
+    function relayout() {
+      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
+      chords = [];
+      groups = [];
+      k = 0, i = -1;
+      while (++i < n) {
+        x = 0, j = -1;
+        while (++j < n) {
+          x += matrix[i][j];
+        }
+        groupSums.push(x);
+        subgroupIndex.push(d3.range(n));
+        k += x;
+      }
+      if (sortGroups) {
+        groupIndex.sort(function(a, b) {
+          return sortGroups(groupSums[a], groupSums[b]);
+        });
+      }
+      if (sortSubgroups) {
+        subgroupIndex.forEach(function(d, i) {
+          d.sort(function(a, b) {
+            return sortSubgroups(matrix[i][a], matrix[i][b]);
+          });
+        });
+      }
+      k = (2 * π - padding * n) / k;
+      x = 0, i = -1;
+      while (++i < n) {
+        x0 = x, j = -1;
+        while (++j < n) {
+          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
+          subgroups[di + "-" + dj] = {
+            index: di,
+            subindex: dj,
+            startAngle: a0,
+            endAngle: a1,
+            value: v
+          };
+        }
+        groups[di] = {
+          index: di,
+          startAngle: x0,
+          endAngle: x,
+          value: (x - x0) / k
+        };
+        x += padding;
+      }
+      i = -1;
+      while (++i < n) {
+        j = i - 1;
+        while (++j < n) {
+          var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
+          if (source.value || target.value) {
+            chords.push(source.value < target.value ? {
+              source: target,
+              target: source
+            } : {
+              source: source,
+              target: target
+            });
+          }
+        }
+      }
+      if (sortChords) resort();
+    }
+    function resort() {
+      chords.sort(function(a, b) {
+        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
+      });
+    }
+    chord.matrix = function(x) {
+      if (!arguments.length) return matrix;
+      n = (matrix = x) && matrix.length;
+      chords = groups = null;
+      return chord;
+    };
+    chord.padding = function(x) {
+      if (!arguments.length) return padding;
+      padding = x;
+      chords = groups = null;
+      return chord;
+    };
+    chord.sortGroups = function(x) {
+      if (!arguments.length) return sortGroups;
+      sortGroups = x;
+      chords = groups = null;
+      return chord;
+    };
+    chord.sortSubgroups = function(x) {
+      if (!arguments.length) return sortSubgroups;
+      sortSubgroups = x;
+      chords = null;
+      return chord;
+    };
+    chord.sortChords = function(x) {
+      if (!arguments.length) return sortChords;
+      sortChords = x;
+      if (chords) resort();
+      return chord;
+    };
+    chord.chords = function() {
+      if (!chords) relayout();
+      return chords;
+    };
+    chord.groups = function() {
+      if (!groups) relayout();
+      return groups;
+    };
+    return chord;
+  };
+  d3.layout.force = function() {
+    var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges;
+    function repulse(node) {
+      return function(quad, x1, _, x2) {
+        if (quad.point !== node) {
+          var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy);
+          if ((x2 - x1) * dn < theta) {
+            var k = quad.charge * dn * dn;
+            node.px -= dx * k;
+            node.py -= dy * k;
+            return true;
+          }
+          if (quad.point && isFinite(dn)) {
+            var k = quad.pointCharge * dn * dn;
+            node.px -= dx * k;
+            node.py -= dy * k;
+          }
+        }
+        return !quad.charge;
+      };
+    }
+    force.tick = function() {
+      if ((alpha *= .99) < .005) {
+        event.end({
+          type: "end",
+          alpha: alpha = 0
+        });
+        return true;
+      }
+      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
+      for (i = 0; i < m; ++i) {
+        o = links[i];
+        s = o.source;
+        t = o.target;
+        x = t.x - s.x;
+        y = t.y - s.y;
+        if (l = x * x + y * y) {
+          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
+          x *= l;
+          y *= l;
+          t.x -= x * (k = s.weight / (t.weight + s.weight));
+          t.y -= y * k;
+          s.x += x * (k = 1 - k);
+          s.y += y * k;
+        }
+      }
+      if (k = alpha * gravity) {
+        x = size[0] / 2;
+        y = size[1] / 2;
+        i = -1;
+        if (k) while (++i < n) {
+          o = nodes[i];
+          o.x += (x - o.x) * k;
+          o.y += (y - o.y) * k;
+        }
+      }
+      if (charge) {
+        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
+        i = -1;
+        while (++i < n) {
+          if (!(o = nodes[i]).fixed) {
+            q.visit(repulse(o));
+          }
+        }
+      }
+      i = -1;
+      while (++i < n) {
+        o = nodes[i];
+        if (o.fixed) {
+          o.x = o.px;
+          o.y = o.py;
+        } else {
+          o.x -= (o.px - (o.px = o.x)) * friction;
+          o.y -= (o.py - (o.py = o.y)) * friction;
+        }
+      }
+      event.tick({
+        type: "tick",
+        alpha: alpha
+      });
+    };
+    force.nodes = function(x) {
+      if (!arguments.length) return nodes;
+      nodes = x;
+      return force;
+    };
+    force.links = function(x) {
+      if (!arguments.length) return links;
+      links = x;
+      return force;
+    };
+    force.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return force;
+    };
+    force.linkDistance = function(x) {
+      if (!arguments.length) return linkDistance;
+      linkDistance = typeof x === "function" ? x : +x;
+      return force;
+    };
+    force.distance = force.linkDistance;
+    force.linkStrength = function(x) {
+      if (!arguments.length) return linkStrength;
+      linkStrength = typeof x === "function" ? x : +x;
+      return force;
+    };
+    force.friction = function(x) {
+      if (!arguments.length) return friction;
+      friction = +x;
+      return force;
+    };
+    force.charge = function(x) {
+      if (!arguments.length) return charge;
+      charge = typeof x === "function" ? x : +x;
+      return force;
+    };
+    force.gravity = function(x) {
+      if (!arguments.length) return gravity;
+      gravity = +x;
+      return force;
+    };
+    force.theta = function(x) {
+      if (!arguments.length) return theta;
+      theta = +x;
+      return force;
+    };
+    force.alpha = function(x) {
+      if (!arguments.length) return alpha;
+      x = +x;
+      if (alpha) {
+        if (x > 0) alpha = x; else alpha = 0;
+      } else if (x > 0) {
+        event.start({
+          type: "start",
+          alpha: alpha = x
+        });
+        d3.timer(force.tick);
+      }
+      return force;
+    };
+    force.start = function() {
+      var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
+      for (i = 0; i < n; ++i) {
+        (o = nodes[i]).index = i;
+        o.weight = 0;
+      }
+      for (i = 0; i < m; ++i) {
+        o = links[i];
+        if (typeof o.source == "number") o.source = nodes[o.source];
+        if (typeof o.target == "number") o.target = nodes[o.target];
+        ++o.source.weight;
+        ++o.target.weight;
+      }
+      for (i = 0; i < n; ++i) {
+        o = nodes[i];
+        if (isNaN(o.x)) o.x = position("x", w);
+        if (isNaN(o.y)) o.y = position("y", h);
+        if (isNaN(o.px)) o.px = o.x;
+        if (isNaN(o.py)) o.py = o.y;
+      }
+      distances = [];
+      if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;
+      strengths = [];
+      if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;
+      charges = [];
+      if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;
+      function position(dimension, size) {
+        var neighbors = neighbor(i), j = -1, m = neighbors.length, x;
+        while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x;
+        return Math.random() * size;
+      }
+      function neighbor() {
+        if (!neighbors) {
+          neighbors = [];
+          for (j = 0; j < n; ++j) {
+            neighbors[j] = [];
+          }
+          for (j = 0; j < m; ++j) {
+            var o = links[j];
+            neighbors[o.source.index].push(o.target);
+            neighbors[o.target.index].push(o.source);
+          }
+        }
+        return neighbors[i];
+      }
+      return force.resume();
+    };
+    force.resume = function() {
+      return force.alpha(.1);
+    };
+    force.stop = function() {
+      return force.alpha(0);
+    };
+    force.drag = function() {
+      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend);
+      if (!arguments.length) return drag;
+      this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
+    };
+    function dragmove(d) {
+      d.px = d3.event.x, d.py = d3.event.y;
+      force.resume();
+    }
+    return d3.rebind(force, event, "on");
+  };
+  function d3_layout_forceDragstart(d) {
+    d.fixed |= 2;
+  }
+  function d3_layout_forceDragend(d) {
+    d.fixed &= ~6;
+  }
+  function d3_layout_forceMouseover(d) {
+    d.fixed |= 4;
+    d.px = d.x, d.py = d.y;
+  }
+  function d3_layout_forceMouseout(d) {
+    d.fixed &= ~4;
+  }
+  function d3_layout_forceAccumulate(quad, alpha, charges) {
+    var cx = 0, cy = 0;
+    quad.charge = 0;
+    if (!quad.leaf) {
+      var nodes = quad.nodes, n = nodes.length, i = -1, c;
+      while (++i < n) {
+        c = nodes[i];
+        if (c == null) continue;
+        d3_layout_forceAccumulate(c, alpha, charges);
+        quad.charge += c.charge;
+        cx += c.charge * c.cx;
+        cy += c.charge * c.cy;
+      }
+    }
+    if (quad.point) {
+      if (!quad.leaf) {
+        quad.point.x += Math.random() - .5;
+        quad.point.y += Math.random() - .5;
+      }
+      var k = alpha * charges[quad.point.index];
+      quad.charge += quad.pointCharge = k;
+      cx += k * quad.point.x;
+      cy += k * quad.point.y;
+    }
+    quad.cx = cx / quad.charge;
+    quad.cy = cy / quad.charge;
+  }
+  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1;
+  d3.layout.hierarchy = function() {
+    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
+    function recurse(node, depth, nodes) {
+      var childs = children.call(hierarchy, node, depth);
+      node.depth = depth;
+      nodes.push(node);
+      if (childs && (n = childs.length)) {
+        var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d;
+        while (++i < n) {
+          d = recurse(childs[i], j, nodes);
+          d.parent = node;
+          c.push(d);
+          v += d.value;
+        }
+        if (sort) c.sort(sort);
+        if (value) node.value = v;
+      } else if (value) {
+        node.value = +value.call(hierarchy, node, depth) || 0;
+      }
+      return node;
+    }
+    function revalue(node, depth) {
+      var children = node.children, v = 0;
+      if (children && (n = children.length)) {
+        var i = -1, n, j = depth + 1;
+        while (++i < n) v += revalue(children[i], j);
+      } else if (value) {
+        v = +value.call(hierarchy, node, depth) || 0;
+      }
+      if (value) node.value = v;
+      return v;
+    }
+    function hierarchy(d) {
+      var nodes = [];
+      recurse(d, 0, nodes);
+      return nodes;
+    }
+    hierarchy.sort = function(x) {
+      if (!arguments.length) return sort;
+      sort = x;
+      return hierarchy;
+    };
+    hierarchy.children = function(x) {
+      if (!arguments.length) return children;
+      children = x;
+      return hierarchy;
+    };
+    hierarchy.value = function(x) {
+      if (!arguments.length) return value;
+      value = x;
+      return hierarchy;
+    };
+    hierarchy.revalue = function(root) {
+      revalue(root, 0);
+      return root;
+    };
+    return hierarchy;
+  };
+  function d3_layout_hierarchyRebind(object, hierarchy) {
+    d3.rebind(object, hierarchy, "sort", "children", "value");
+    object.nodes = object;
+    object.links = d3_layout_hierarchyLinks;
+    return object;
+  }
+  function d3_layout_hierarchyChildren(d) {
+    return d.children;
+  }
+  function d3_layout_hierarchyValue(d) {
+    return d.value;
+  }
+  function d3_layout_hierarchySort(a, b) {
+    return b.value - a.value;
+  }
+  function d3_layout_hierarchyLinks(nodes) {
+    return d3.merge(nodes.map(function(parent) {
+      return (parent.children || []).map(function(child) {
+        return {
+          source: parent,
+          target: child
+        };
+      });
+    }));
+  }
+  d3.layout.partition = function() {
+    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
+    function position(node, x, dx, dy) {
+      var children = node.children;
+      node.x = x;
+      node.y = node.depth * dy;
+      node.dx = dx;
+      node.dy = dy;
+      if (children && (n = children.length)) {
+        var i = -1, n, c, d;
+        dx = node.value ? dx / node.value : 0;
+        while (++i < n) {
+          position(c = children[i], x, d = c.value * dx, dy);
+          x += d;
+        }
+      }
+    }
+    function depth(node) {
+      var children = node.children, d = 0;
+      if (children && (n = children.length)) {
+        var i = -1, n;
+        while (++i < n) d = Math.max(d, depth(children[i]));
+      }
+      return 1 + d;
+    }
+    function partition(d, i) {
+      var nodes = hierarchy.call(this, d, i);
+      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
+      return nodes;
+    }
+    partition.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return partition;
+    };
+    return d3_layout_hierarchyRebind(partition, hierarchy);
+  };
+  d3.layout.pie = function() {
+    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = 2 * π;
+    function pie(data) {
+      var values = data.map(function(d, i) {
+        return +value.call(pie, d, i);
+      });
+      var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
+      var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values);
+      var index = d3.range(data.length);
+      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
+        return values[j] - values[i];
+      } : function(i, j) {
+        return sort(data[i], data[j]);
+      });
+      var arcs = [];
+      index.forEach(function(i) {
+        var d;
+        arcs[i] = {
+          data: data[i],
+          value: d = values[i],
+          startAngle: a,
+          endAngle: a += d * k
+        };
+      });
+      return arcs;
+    }
+    pie.value = function(x) {
+      if (!arguments.length) return value;
+      value = x;
+      return pie;
+    };
+    pie.sort = function(x) {
+      if (!arguments.length) return sort;
+      sort = x;
+      return pie;
+    };
+    pie.startAngle = function(x) {
+      if (!arguments.length) return startAngle;
+      startAngle = x;
+      return pie;
+    };
+    pie.endAngle = function(x) {
+      if (!arguments.length) return endAngle;
+      endAngle = x;
+      return pie;
+    };
+    return pie;
+  };
+  var d3_layout_pieSortByValue = {};
+  d3.layout.stack = function() {
+    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
+    function stack(data, index) {
+      var series = data.map(function(d, i) {
+        return values.call(stack, d, i);
+      });
+      var points = series.map(function(d) {
+        return d.map(function(v, i) {
+          return [ x.call(stack, v, i), y.call(stack, v, i) ];
+        });
+      });
+      var orders = order.call(stack, points, index);
+      series = d3.permute(series, orders);
+      points = d3.permute(points, orders);
+      var offsets = offset.call(stack, points, index);
+      var n = series.length, m = series[0].length, i, j, o;
+      for (j = 0; j < m; ++j) {
+        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
+        for (i = 1; i < n; ++i) {
+          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
+        }
+      }
+      return data;
+    }
+    stack.values = function(x) {
+      if (!arguments.length) return values;
+      values = x;
+      return stack;
+    };
+    stack.order = function(x) {
+      if (!arguments.length) return order;
+      order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
+      return stack;
+    };
+    stack.offset = function(x) {
+      if (!arguments.length) return offset;
+      offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
+      return stack;
+    };
+    stack.x = function(z) {
+      if (!arguments.length) return x;
+      x = z;
+      return stack;
+    };
+    stack.y = function(z) {
+      if (!arguments.length) return y;
+      y = z;
+      return stack;
+    };
+    stack.out = function(z) {
+      if (!arguments.length) return out;
+      out = z;
+      return stack;
+    };
+    return stack;
+  };
+  function d3_layout_stackX(d) {
+    return d.x;
+  }
+  function d3_layout_stackY(d) {
+    return d.y;
+  }
+  function d3_layout_stackOut(d, y0, y) {
+    d.y0 = y0;
+    d.y = y;
+  }
+  var d3_layout_stackOrders = d3.map({
+    "inside-out": function(data) {
+      var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
+        return max[a] - max[b];
+      }), top = 0, bottom = 0, tops = [], bottoms = [];
+      for (i = 0; i < n; ++i) {
+        j = index[i];
+        if (top < bottom) {
+          top += sums[j];
+          tops.push(j);
+        } else {
+          bottom += sums[j];
+          bottoms.push(j);
+        }
+      }
+      return bottoms.reverse().concat(tops);
+    },
+    reverse: function(data) {
+      return d3.range(data.length).reverse();
+    },
+    "default": d3_layout_stackOrderDefault
+  });
+  var d3_layout_stackOffsets = d3.map({
+    silhouette: function(data) {
+      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
+      for (j = 0; j < m; ++j) {
+        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+        if (o > max) max = o;
+        sums.push(o);
+      }
+      for (j = 0; j < m; ++j) {
+        y0[j] = (max - sums[j]) / 2;
+      }
+      return y0;
+    },
+    wiggle: function(data) {
+      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
+      y0[0] = o = o0 = 0;
+      for (j = 1; j < m; ++j) {
+        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
+        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
+          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
+            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
+          }
+          s2 += s3 * data[i][j][1];
+        }
+        y0[j] = o -= s1 ? s2 / s1 * dx : 0;
+        if (o < o0) o0 = o;
+      }
+      for (j = 0; j < m; ++j) y0[j] -= o0;
+      return y0;
+    },
+    expand: function(data) {
+      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
+      for (j = 0; j < m; ++j) {
+        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
+        if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
+      }
+      for (j = 0; j < m; ++j) y0[j] = 0;
+      return y0;
+    },
+    zero: d3_layout_stackOffsetZero
+  });
+  function d3_layout_stackOrderDefault(data) {
+    return d3.range(data.length);
+  }
+  function d3_layout_stackOffsetZero(data) {
+    var j = -1, m = data[0].length, y0 = [];
+    while (++j < m) y0[j] = 0;
+    return y0;
+  }
+  function d3_layout_stackMaxIndex(array) {
+    var i = 1, j = 0, v = array[0][1], k, n = array.length;
+    for (;i < n; ++i) {
+      if ((k = array[i][1]) > v) {
+        j = i;
+        v = k;
+      }
+    }
+    return j;
+  }
+  function d3_layout_stackReduceSum(d) {
+    return d.reduce(d3_layout_stackSum, 0);
+  }
+  function d3_layout_stackSum(p, d) {
+    return p + d[1];
+  }
+  d3.layout.histogram = function() {
+    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
+    function histogram(data, i) {
+      var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
+      while (++i < m) {
+        bin = bins[i] = [];
+        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
+        bin.y = 0;
+      }
+      if (m > 0) {
+        i = -1;
+        while (++i < n) {
+          x = values[i];
+          if (x >= range[0] && x <= range[1]) {
+            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
+            bin.y += k;
+            bin.push(data[i]);
+          }
+        }
+      }
+      return bins;
+    }
+    histogram.value = function(x) {
+      if (!arguments.length) return valuer;
+      valuer = x;
+      return histogram;
+    };
+    histogram.range = function(x) {
+      if (!arguments.length) return ranger;
+      ranger = d3_functor(x);
+      return histogram;
+    };
+    histogram.bins = function(x) {
+      if (!arguments.length) return binner;
+      binner = typeof x === "number" ? function(range) {
+        return d3_layout_histogramBinFixed(range, x);
+      } : d3_functor(x);
+      return histogram;
+    };
+    histogram.frequency = function(x) {
+      if (!arguments.length) return frequency;
+      frequency = !!x;
+      return histogram;
+    };
+    return histogram;
+  };
+  function d3_layout_histogramBinSturges(range, values) {
+    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
+  }
+  function d3_layout_histogramBinFixed(range, n) {
+    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
+    while (++x <= n) f[x] = m * x + b;
+    return f;
+  }
+  function d3_layout_histogramRange(values) {
+    return [ d3.min(values), d3.max(values) ];
+  }
+  d3.layout.tree = function() {
+    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
+    function tree(d, i) {
+      var nodes = hierarchy.call(this, d, i), root = nodes[0];
+      function firstWalk(node, previousSibling) {
+        var children = node.children, layout = node._tree;
+        if (children && (n = children.length)) {
+          var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1;
+          while (++i < n) {
+            child = children[i];
+            firstWalk(child, previousChild);
+            ancestor = apportion(child, previousChild, ancestor);
+            previousChild = child;
+          }
+          d3_layout_treeShift(node);
+          var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
+          if (previousSibling) {
+            layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
+            layout.mod = layout.prelim - midpoint;
+          } else {
+            layout.prelim = midpoint;
+          }
+        } else {
+          if (previousSibling) {
+            layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
+          }
+        }
+      }
+      function secondWalk(node, x) {
+        node.x = node._tree.prelim + x;
+        var children = node.children;
+        if (children && (n = children.length)) {
+          var i = -1, n;
+          x += node._tree.mod;
+          while (++i < n) {
+            secondWalk(children[i], x);
+          }
+        }
+      }
+      function apportion(node, previousSibling, ancestor) {
+        if (previousSibling) {
+          var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift;
+          while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
+            vom = d3_layout_treeLeft(vom);
+            vop = d3_layout_treeRight(vop);
+            vop._tree.ancestor = node;
+            shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
+            if (shift > 0) {
+              d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
+              sip += shift;
+              sop += shift;
+            }
+            sim += vim._tree.mod;
+            sip += vip._tree.mod;
+            som += vom._tree.mod;
+            sop += vop._tree.mod;
+          }
+          if (vim && !d3_layout_treeRight(vop)) {
+            vop._tree.thread = vim;
+            vop._tree.mod += sim - sop;
+          }
+          if (vip && !d3_layout_treeLeft(vom)) {
+            vom._tree.thread = vip;
+            vom._tree.mod += sip - som;
+            ancestor = node;
+          }
+        }
+        return ancestor;
+      }
+      d3_layout_treeVisitAfter(root, function(node, previousSibling) {
+        node._tree = {
+          ancestor: node,
+          prelim: 0,
+          mod: 0,
+          change: 0,
+          shift: 0,
+          number: previousSibling ? previousSibling._tree.number + 1 : 0
+        };
+      });
+      firstWalk(root);
+      secondWalk(root, -root._tree.prelim);
+      var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1;
+      d3_layout_treeVisitAfter(root, function(node) {
+        node.x = (node.x - x0) / (x1 - x0) * size[0];
+        node.y = node.depth / y1 * size[1];
+        delete node._tree;
+      });
+      return nodes;
+    }
+    tree.separation = function(x) {
+      if (!arguments.length) return separation;
+      separation = x;
+      return tree;
+    };
+    tree.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return tree;
+    };
+    return d3_layout_hierarchyRebind(tree, hierarchy);
+  };
+  function d3_layout_treeSeparation(a, b) {
+    return a.parent == b.parent ? 1 : 2;
+  }
+  function d3_layout_treeLeft(node) {
+    var children = node.children;
+    return children && children.length ? children[0] : node._tree.thread;
+  }
+  function d3_layout_treeRight(node) {
+    var children = node.children, n;
+    return children && (n = children.length) ? children[n - 1] : node._tree.thread;
+  }
+  function d3_layout_treeSearch(node, compare) {
+    var children = node.children;
+    if (children && (n = children.length)) {
+      var child, n, i = -1;
+      while (++i < n) {
+        if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
+          node = child;
+        }
+      }
+    }
+    return node;
+  }
+  function d3_layout_treeRightmost(a, b) {
+    return a.x - b.x;
+  }
+  function d3_layout_treeLeftmost(a, b) {
+    return b.x - a.x;
+  }
+  function d3_layout_treeDeepest(a, b) {
+    return a.depth - b.depth;
+  }
+  function d3_layout_treeVisitAfter(node, callback) {
+    function visit(node, previousSibling) {
+      var children = node.children;
+      if (children && (n = children.length)) {
+        var child, previousChild = null, i = -1, n;
+        while (++i < n) {
+          child = children[i];
+          visit(child, previousChild);
+          previousChild = child;
+        }
+      }
+      callback(node, previousSibling);
+    }
+    visit(node, null);
+  }
+  function d3_layout_treeShift(node) {
+    var shift = 0, change = 0, children = node.children, i = children.length, child;
+    while (--i >= 0) {
+      child = children[i]._tree;
+      child.prelim += shift;
+      child.mod += shift;
+      shift += child.shift + (change += child.change);
+    }
+  }
+  function d3_layout_treeMove(ancestor, node, shift) {
+    ancestor = ancestor._tree;
+    node = node._tree;
+    var change = shift / (node.number - ancestor.number);
+    ancestor.change += change;
+    node.change -= change;
+    node.shift += shift;
+    node.prelim += shift;
+    node.mod += shift;
+  }
+  function d3_layout_treeAncestor(vim, node, ancestor) {
+    return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
+  }
+  d3.layout.pack = function() {
+    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ];
+    function pack(d, i) {
+      var nodes = hierarchy.call(this, d, i), root = nodes[0];
+      root.x = 0;
+      root.y = 0;
+      d3_layout_treeVisitAfter(root, function(d) {
+        d.r = Math.sqrt(d.value);
+      });
+      d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
+      var w = size[0], h = size[1], k = Math.max(2 * root.r / w, 2 * root.r / h);
+      if (padding > 0) {
+        var dr = padding * k / 2;
+        d3_layout_treeVisitAfter(root, function(d) {
+          d.r += dr;
+        });
+        d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
+        d3_layout_treeVisitAfter(root, function(d) {
+          d.r -= dr;
+        });
+        k = Math.max(2 * root.r / w, 2 * root.r / h);
+      }
+      d3_layout_packTransform(root, w / 2, h / 2, 1 / k);
+      return nodes;
+    }
+    pack.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return pack;
+    };
+    pack.padding = function(_) {
+      if (!arguments.length) return padding;
+      padding = +_;
+      return pack;
+    };
+    return d3_layout_hierarchyRebind(pack, hierarchy);
+  };
+  function d3_layout_packSort(a, b) {
+    return a.value - b.value;
+  }
+  function d3_layout_packInsert(a, b) {
+    var c = a._pack_next;
+    a._pack_next = b;
+    b._pack_prev = a;
+    b._pack_next = c;
+    c._pack_prev = b;
+  }
+  function d3_layout_packSplice(a, b) {
+    a._pack_next = b;
+    b._pack_prev = a;
+  }
+  function d3_layout_packIntersects(a, b) {
+    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
+    return dr * dr - dx * dx - dy * dy > .001;
+  }
+  function d3_layout_packSiblings(node) {
+    if (!(nodes = node.children) || !(n = nodes.length)) return;
+    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
+    function bound(node) {
+      xMin = Math.min(node.x - node.r, xMin);
+      xMax = Math.max(node.x + node.r, xMax);
+      yMin = Math.min(node.y - node.r, yMin);
+      yMax = Math.max(node.y + node.r, yMax);
+    }
+    nodes.forEach(d3_layout_packLink);
+    a = nodes[0];
+    a.x = -a.r;
+    a.y = 0;
+    bound(a);
+    if (n > 1) {
+      b = nodes[1];
+      b.x = b.r;
+      b.y = 0;
+      bound(b);
+      if (n > 2) {
+        c = nodes[2];
+        d3_layout_packPlace(a, b, c);
+        bound(c);
+        d3_layout_packInsert(a, c);
+        a._pack_prev = c;
+        d3_layout_packInsert(c, b);
+        b = a._pack_next;
+        for (i = 3; i < n; i++) {
+          d3_layout_packPlace(a, b, c = nodes[i]);
+          var isect = 0, s1 = 1, s2 = 1;
+          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
+            if (d3_layout_packIntersects(j, c)) {
+              isect = 1;
+              break;
+            }
+          }
+          if (isect == 1) {
+            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
+              if (d3_layout_packIntersects(k, c)) {
+                break;
+              }
+            }
+          }
+          if (isect) {
+            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
+            i--;
+          } else {
+            d3_layout_packInsert(a, c);
+            b = c;
+            bound(c);
+          }
+        }
+      }
+    }
+    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
+    for (i = 0; i < n; i++) {
+      c = nodes[i];
+      c.x -= cx;
+      c.y -= cy;
+      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
+    }
+    node.r = cr;
+    nodes.forEach(d3_layout_packUnlink);
+  }
+  function d3_layout_packLink(node) {
+    node._pack_next = node._pack_prev = node;
+  }
+  function d3_layout_packUnlink(node) {
+    delete node._pack_next;
+    delete node._pack_prev;
+  }
+  function d3_layout_packTransform(node, x, y, k) {
+    var children = node.children;
+    node.x = x += k * node.x;
+    node.y = y += k * node.y;
+    node.r *= k;
+    if (children) {
+      var i = -1, n = children.length;
+      while (++i < n) d3_layout_packTransform(children[i], x, y, k);
+    }
+  }
+  function d3_layout_packPlace(a, b, c) {
+    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
+    if (db && (dx || dy)) {
+      var da = b.r + c.r, dc = dx * dx + dy * dy;
+      da *= da;
+      db *= db;
+      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
+      c.x = a.x + x * dx + y * dy;
+      c.y = a.y + x * dy - y * dx;
+    } else {
+      c.x = a.x + db;
+      c.y = a.y;
+    }
+  }
+  d3.layout.cluster = function() {
+    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
+    function cluster(d, i) {
+      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
+      d3_layout_treeVisitAfter(root, function(node) {
+        var children = node.children;
+        if (children && children.length) {
+          node.x = d3_layout_clusterX(children);
+          node.y = d3_layout_clusterY(children);
+        } else {
+          node.x = previousNode ? x += separation(node, previousNode) : 0;
+          node.y = 0;
+          previousNode = node;
+        }
+      });
+      var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
+      d3_layout_treeVisitAfter(root, function(node) {
+        node.x = (node.x - x0) / (x1 - x0) * size[0];
+        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
+      });
+      return nodes;
+    }
+    cluster.separation = function(x) {
+      if (!arguments.length) return separation;
+      separation = x;
+      return cluster;
+    };
+    cluster.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return cluster;
+    };
+    return d3_layout_hierarchyRebind(cluster, hierarchy);
+  };
+  function d3_layout_clusterY(children) {
+    return 1 + d3.max(children, function(child) {
+      return child.y;
+    });
+  }
+  function d3_layout_clusterX(children) {
+    return children.reduce(function(x, child) {
+      return x + child.x;
+    }, 0) / children.length;
+  }
+  function d3_layout_clusterLeft(node) {
+    var children = node.children;
+    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
+  }
+  function d3_layout_clusterRight(node) {
+    var children = node.children, n;
+    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
+  }
+  d3.layout.treemap = function() {
+    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5));
+    function scale(children, k) {
+      var i = -1, n = children.length, child, area;
+      while (++i < n) {
+        area = (child = children[i]).value * (k < 0 ? 0 : k);
+        child.area = isNaN(area) || area <= 0 ? 0 : area;
+      }
+    }
+    function squarify(node) {
+      var children = node.children;
+      if (children && children.length) {
+        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;
+        scale(remaining, rect.dx * rect.dy / node.value);
+        row.area = 0;
+        while ((n = remaining.length) > 0) {
+          row.push(child = remaining[n - 1]);
+          row.area += child.area;
+          if (mode !== "squarify" || (score = worst(row, u)) <= best) {
+            remaining.pop();
+            best = score;
+          } else {
+            row.area -= row.pop().area;
+            position(row, u, rect, false);
+            u = Math.min(rect.dx, rect.dy);
+            row.length = row.area = 0;
+            best = Infinity;
+          }
+        }
+        if (row.length) {
+          position(row, u, rect, true);
+          row.length = row.area = 0;
+        }
+        children.forEach(squarify);
+      }
+    }
+    function stickify(node) {
+      var children = node.children;
+      if (children && children.length) {
+        var rect = pad(node), remaining = children.slice(), child, row = [];
+        scale(remaining, rect.dx * rect.dy / node.value);
+        row.area = 0;
+        while (child = remaining.pop()) {
+          row.push(child);
+          row.area += child.area;
+          if (child.z != null) {
+            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
+            row.length = row.area = 0;
+          }
+        }
+        children.forEach(stickify);
+      }
+    }
+    function worst(row, u) {
+      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
+      while (++i < n) {
+        if (!(r = row[i].area)) continue;
+        if (r < rmin) rmin = r;
+        if (r > rmax) rmax = r;
+      }
+      s *= s;
+      u *= u;
+      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
+    }
+    function position(row, u, rect, flush) {
+      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
+      if (u == rect.dx) {
+        if (flush || v > rect.dy) v = rect.dy;
+        while (++i < n) {
+          o = row[i];
+          o.x = x;
+          o.y = y;
+          o.dy = v;
+          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
+        }
+        o.z = true;
+        o.dx += rect.x + rect.dx - x;
+        rect.y += v;
+        rect.dy -= v;
+      } else {
+        if (flush || v > rect.dx) v = rect.dx;
+        while (++i < n) {
+          o = row[i];
+          o.x = x;
+          o.y = y;
+          o.dx = v;
+          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
+        }
+        o.z = false;
+        o.dy += rect.y + rect.dy - y;
+        rect.x += v;
+        rect.dx -= v;
+      }
+    }
+    function treemap(d) {
+      var nodes = stickies || hierarchy(d), root = nodes[0];
+      root.x = 0;
+      root.y = 0;
+      root.dx = size[0];
+      root.dy = size[1];
+      if (stickies) hierarchy.revalue(root);
+      scale([ root ], root.dx * root.dy / root.value);
+      (stickies ? stickify : squarify)(root);
+      if (sticky) stickies = nodes;
+      return nodes;
+    }
+    treemap.size = function(x) {
+      if (!arguments.length) return size;
+      size = x;
+      return treemap;
+    };
+    treemap.padding = function(x) {
+      if (!arguments.length) return padding;
+      function padFunction(node) {
+        var p = x.call(treemap, node, node.depth);
+        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
+      }
+      function padConstant(node) {
+        return d3_layout_treemapPad(node, x);
+      }
+      var type;
+      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], 
+      padConstant) : padConstant;
+      return treemap;
+    };
+    treemap.round = function(x) {
+      if (!arguments.length) return round != Number;
+      round = x ? Math.round : Number;
+      return treemap;
+    };
+    treemap.sticky = function(x) {
+      if (!arguments.length) return sticky;
+      sticky = x;
+      stickies = null;
+      return treemap;
+    };
+    treemap.ratio = function(x) {
+      if (!arguments.length) return ratio;
+      ratio = x;
+      return treemap;
+    };
+    treemap.mode = function(x) {
+      if (!arguments.length) return mode;
+      mode = x + "";
+      return treemap;
+    };
+    return d3_layout_hierarchyRebind(treemap, hierarchy);
+  };
+  function d3_layout_treemapPadNull(node) {
+    return {
+      x: node.x,
+      y: node.y,
+      dx: node.dx,
+      dy: node.dy
+    };
+  }
+  function d3_layout_treemapPad(node, padding) {
+    var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
+    if (dx < 0) {
+      x += dx / 2;
+      dx = 0;
+    }
+    if (dy < 0) {
+      y += dy / 2;
+      dy = 0;
+    }
+    return {
+      x: x,
+      y: y,
+      dx: dx,
+      dy: dy
+    };
+  }
+  d3.random = {
+    normal: function(µ, σ) {
+      var n = arguments.length;
+      if (n < 2) σ = 1;
+      if (n < 1) µ = 0;
+      return function() {
+        var x, y, r;
+        do {
+          x = Math.random() * 2 - 1;
+          y = Math.random() * 2 - 1;
+          r = x * x + y * y;
+        } while (!r || r > 1);
+        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
+      };
+    },
+    logNormal: function() {
+      var random = d3.random.normal.apply(d3, arguments);
+      return function() {
+        return Math.exp(random());
+      };
+    },
+    irwinHall: function(m) {
+      return function() {
+        for (var s = 0, j = 0; j < m; j++) s += Math.random();
+        return s / m;
+      };
+    }
+  };
+  d3.scale = {};
+  function d3_scaleExtent(domain) {
+    var start = domain[0], stop = domain[domain.length - 1];
+    return start < stop ? [ start, stop ] : [ stop, start ];
+  }
+  function d3_scaleRange(scale) {
+    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
+  }
+  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
+    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
+    return function(x) {
+      return i(u(x));
+    };
+  }
+  function d3_scale_nice(domain, nice) {
+    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
+    if (x1 < x0) {
+      dx = i0, i0 = i1, i1 = dx;
+      dx = x0, x0 = x1, x1 = dx;
+    }
+    if (nice = nice(x1 - x0)) {
+      domain[i0] = nice.floor(x0);
+      domain[i1] = nice.ceil(x1);
+    }
+    return domain;
+  }
+  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
+    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
+    if (domain[k] < domain[0]) {
+      domain = domain.slice().reverse();
+      range = range.slice().reverse();
+    }
+    while (++j <= k) {
+      u.push(uninterpolate(domain[j - 1], domain[j]));
+      i.push(interpolate(range[j - 1], range[j]));
+    }
+    return function(x) {
+      var j = d3.bisect(domain, x, 1, k) - 1;
+      return i[j](u[j](x));
+    };
+  }
+  d3.scale.linear = function() {
+    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);
+  };
+  function d3_scale_linear(domain, range, interpolate, clamp) {
+    var output, input;
+    function rescale() {
+      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
+      output = linear(domain, range, uninterpolate, interpolate);
+      input = linear(range, domain, uninterpolate, d3_interpolate);
+      return scale;
+    }
+    function scale(x) {
+      return output(x);
+    }
+    scale.invert = function(y) {
+      return input(y);
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.map(Number);
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.rangeRound = function(x) {
+      return scale.range(x).interpolate(d3_interpolateRound);
+    };
+    scale.clamp = function(x) {
+      if (!arguments.length) return clamp;
+      clamp = x;
+      return rescale();
+    };
+    scale.interpolate = function(x) {
+      if (!arguments.length) return interpolate;
+      interpolate = x;
+      return rescale();
+    };
+    scale.ticks = function(m) {
+      return d3_scale_linearTicks(domain, m);
+    };
+    scale.tickFormat = function(m, format) {
+      return d3_scale_linearTickFormat(domain, m, format);
+    };
+    scale.nice = function() {
+      d3_scale_nice(domain, d3_scale_linearNice);
+      return rescale();
+    };
+    scale.copy = function() {
+      return d3_scale_linear(domain, range, interpolate, clamp);
+    };
+    return rescale();
+  }
+  function d3_scale_linearRebind(scale, linear) {
+    return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+  }
+  function d3_scale_linearNice(dx) {
+    dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
+    return dx && {
+      floor: function(x) {
+        return Math.floor(x / dx) * dx;
+      },
+      ceil: function(x) {
+        return Math.ceil(x / dx) * dx;
+      }
+    };
+  }
+  function d3_scale_linearTickRange(domain, m) {
+    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
+    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
+    extent[0] = Math.ceil(extent[0] / step) * step;
+    extent[1] = Math.floor(extent[1] / step) * step + step * .5;
+    extent[2] = step;
+    return extent;
+  }
+  function d3_scale_linearTicks(domain, m) {
+    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
+  }
+  function d3_scale_linearTickFormat(domain, m, format) {
+    var precision = -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01);
+    return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) {
+      return [ b, c, d, e, f, g, h, i || "." + (precision - (j === "%") * 2), j ].join("");
+    }) : ",." + precision + "f");
+  }
+  d3.scale.log = function() {
+    return d3_scale_log(d3.scale.linear().domain([ 0, Math.LN10 ]), 10, d3_scale_logp, d3_scale_powp);
+  };
+  function d3_scale_log(linear, base, log, pow) {
+    function scale(x) {
+      return linear(log(x));
+    }
+    scale.invert = function(x) {
+      return pow(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(pow);
+      if (x[0] < 0) log = d3_scale_logn, pow = d3_scale_pown; else log = d3_scale_logp, 
+      pow = d3_scale_powp;
+      linear.domain(x.map(log));
+      return scale;
+    };
+    scale.base = function(_) {
+      if (!arguments.length) return base;
+      base = +_;
+      return scale;
+    };
+    scale.nice = function() {
+      linear.domain(d3_scale_nice(linear.domain(), d3_scale_logNice(base)));
+      return scale;
+    };
+    scale.ticks = function() {
+      var extent = d3_scaleExtent(linear.domain()), ticks = [];
+      if (extent.every(isFinite)) {
+        var b = Math.log(base), i = Math.floor(extent[0] / b), j = Math.ceil(extent[1] / b), u = pow(extent[0]), v = pow(extent[1]), n = base % 1 ? 2 : base;
+        if (log === d3_scale_logn) {
+          ticks.push(-Math.pow(base, -i));
+          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(-Math.pow(base, -i) * k);
+        } else {
+          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(Math.pow(base, i) * k);
+          ticks.push(Math.pow(base, i));
+        }
+        for (i = 0; ticks[i] < u; i++) {}
+        for (j = ticks.length; ticks[j - 1] > v; j--) {}
+        ticks = ticks.slice(i, j);
+      }
+      return ticks;
+    };
+    scale.tickFormat = function(n, format) {
+      if (arguments.length < 2) format = d3_scale_logFormat;
+      if (!arguments.length) return format;
+      var b = Math.log(base), k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12, 
+      Math.floor) : (e = 1e-12, Math.ceil), e;
+      return function(d) {
+        return d / pow(b * f(log(d) / b + e)) <= k ? format(d) : "";
+      };
+    };
+    scale.copy = function() {
+      return d3_scale_log(linear.copy(), base, log, pow);
+    };
+    return d3_scale_linearRebind(scale, linear);
+  }
+  var d3_scale_logFormat = d3.format(".0e");
+  function d3_scale_logp(x) {
+    return Math.log(x < 0 ? 0 : x);
+  }
+  function d3_scale_powp(x) {
+    return Math.exp(x);
+  }
+  function d3_scale_logn(x) {
+    return -Math.log(x > 0 ? 0 : -x);
+  }
+  function d3_scale_pown(x) {
+    return -Math.exp(-x);
+  }
+  function d3_scale_logNice(base) {
+    base = Math.log(base);
+    var nice = {
+      floor: function(x) {
+        return Math.floor(x / base) * base;
+      },
+      ceil: function(x) {
+        return Math.ceil(x / base) * base;
+      }
+    };
+    return function() {
+      return nice;
+    };
+  }
+  d3.scale.pow = function() {
+    return d3_scale_pow(d3.scale.linear(), 1);
+  };
+  function d3_scale_pow(linear, exponent) {
+    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
+    function scale(x) {
+      return linear(powp(x));
+    }
+    scale.invert = function(x) {
+      return powb(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(powb);
+      linear.domain(x.map(powp));
+      return scale;
+    };
+    scale.ticks = function(m) {
+      return d3_scale_linearTicks(scale.domain(), m);
+    };
+    scale.tickFormat = function(m, format) {
+      return d3_scale_linearTickFormat(scale.domain(), m, format);
+    };
+    scale.nice = function() {
+      return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice));
+    };
+    scale.exponent = function(x) {
+      if (!arguments.length) return exponent;
+      var domain = scale.domain();
+      powp = d3_scale_powPow(exponent = x);
+      powb = d3_scale_powPow(1 / exponent);
+      return scale.domain(domain);
+    };
+    scale.copy = function() {
+      return d3_scale_pow(linear.copy(), exponent);
+    };
+    return d3_scale_linearRebind(scale, linear);
+  }
+  function d3_scale_powPow(e) {
+    return function(x) {
+      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
+    };
+  }
+  d3.scale.sqrt = function() {
+    return d3.scale.pow().exponent(.5);
+  };
+  d3.scale.ordinal = function() {
+    return d3_scale_ordinal([], {
+      t: "range",
+      a: [ [] ]
+    });
+  };
+  function d3_scale_ordinal(domain, ranger) {
+    var index, range, rangeBand;
+    function scale(x) {
+      return range[((index.get(x) || index.set(x, domain.push(x))) - 1) % range.length];
+    }
+    function steps(start, step) {
+      return d3.range(domain.length).map(function(i) {
+        return start + step * i;
+      });
+    }
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = [];
+      index = new d3_Map();
+      var i = -1, n = x.length, xi;
+      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
+      return scale[ranger.t].apply(scale, ranger.a);
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      rangeBand = 0;
+      ranger = {
+        t: "range",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangePoints = function(x, padding) {
+      if (arguments.length < 2) padding = 0;
+      var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
+      range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
+      rangeBand = 0;
+      ranger = {
+        t: "rangePoints",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeBands = function(x, padding, outerPadding) {
+      if (arguments.length < 2) padding = 0;
+      if (arguments.length < 3) outerPadding = padding;
+      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
+      range = steps(start + step * outerPadding, step);
+      if (reverse) range.reverse();
+      rangeBand = step * (1 - padding);
+      ranger = {
+        t: "rangeBands",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeRoundBands = function(x, padding, outerPadding) {
+      if (arguments.length < 2) padding = 0;
+      if (arguments.length < 3) outerPadding = padding;
+      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
+      range = steps(start + Math.round(error / 2), step);
+      if (reverse) range.reverse();
+      rangeBand = Math.round(step * (1 - padding));
+      ranger = {
+        t: "rangeRoundBands",
+        a: arguments
+      };
+      return scale;
+    };
+    scale.rangeBand = function() {
+      return rangeBand;
+    };
+    scale.rangeExtent = function() {
+      return d3_scaleExtent(ranger.a[0]);
+    };
+    scale.copy = function() {
+      return d3_scale_ordinal(domain, ranger);
+    };
+    return scale.domain(domain);
+  }
+  d3.scale.category10 = function() {
+    return d3.scale.ordinal().range(d3_category10);
+  };
+  d3.scale.category20 = function() {
+    return d3.scale.ordinal().range(d3_category20);
+  };
+  d3.scale.category20b = function() {
+    return d3.scale.ordinal().range(d3_category20b);
+  };
+  d3.scale.category20c = function() {
+    return d3.scale.ordinal().range(d3_category20c);
+  };
+  var d3_category10 = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" ];
+  var d3_category20 = [ "#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ];
+  var d3_category20b = [ "#393b79", "#5254a3", "#6b6ecf", "#9c9ede", "#637939", "#8ca252", "#b5cf6b", "#cedb9c", "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", "#843c39", "#ad494a", "#d6616b", "#e7969c", "#7b4173", "#a55194", "#ce6dbd", "#de9ed6" ];
+  var d3_category20c = [ "#3182bd", "#6baed6", "#9ecae1", "#c6dbef", "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", "#31a354", "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd", "#d9d9d9" ];
+  d3.scale.quantile = function() {
+    return d3_scale_quantile([], []);
+  };
+  function d3_scale_quantile(domain, range) {
+    var thresholds;
+    function rescale() {
+      var k = 0, q = range.length;
+      thresholds = [];
+      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
+      return scale;
+    }
+    function scale(x) {
+      if (isNaN(x = +x)) return NaN;
+      return range[d3.bisect(thresholds, x)];
+    }
+    scale.domain = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.filter(function(d) {
+        return !isNaN(d);
+      }).sort(d3.ascending);
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.quantiles = function() {
+      return thresholds;
+    };
+    scale.copy = function() {
+      return d3_scale_quantile(domain, range);
+    };
+    return rescale();
+  }
+  d3.scale.quantize = function() {
+    return d3_scale_quantize(0, 1, [ 0, 1 ]);
+  };
+  function d3_scale_quantize(x0, x1, range) {
+    var kx, i;
+    function scale(x) {
+      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
+    }
+    function rescale() {
+      kx = range.length / (x1 - x0);
+      i = range.length - 1;
+      return scale;
+    }
+    scale.domain = function(x) {
+      if (!arguments.length) return [ x0, x1 ];
+      x0 = +x[0];
+      x1 = +x[x.length - 1];
+      return rescale();
+    };
+    scale.range = function(x) {
+      if (!arguments.length) return range;
+      range = x;
+      return rescale();
+    };
+    scale.copy = function() {
+      return d3_scale_quantize(x0, x1, range);
+    };
+    return rescale();
+  }
+  d3.scale.threshold = function() {
+    return d3_scale_threshold([ .5 ], [ 0, 1 ]);
+  };
+  function d3_scale_threshold(domain, range) {
+    function scale(x) {
+      return range[d3.bisect(domain, x)];
+    }
+    scale.domain = function(_) {
+      if (!arguments.length) return domain;
+      domain = _;
+      return scale;
+    };
+    scale.range = function(_) {
+      if (!arguments.length) return range;
+      range = _;
+      return scale;
+    };
+    scale.copy = function() {
+      return d3_scale_threshold(domain, range);
+    };
+    return scale;
+  }
+  d3.scale.identity = function() {
+    return d3_scale_identity([ 0, 1 ]);
+  };
+  function d3_scale_identity(domain) {
+    function identity(x) {
+      return +x;
+    }
+    identity.invert = identity;
+    identity.domain = identity.range = function(x) {
+      if (!arguments.length) return domain;
+      domain = x.map(identity);
+      return identity;
+    };
+    identity.ticks = function(m) {
+      return d3_scale_linearTicks(domain, m);
+    };
+    identity.tickFormat = function(m, format) {
+      return d3_scale_linearTickFormat(domain, m, format);
+    };
+    identity.copy = function() {
+      return d3_scale_identity(domain);
+    };
+    return identity;
+  }
+  d3.svg.arc = function() {
+    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
+    function arc() {
+      var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, 
+      a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1);
+      return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z";
+    }
+    arc.innerRadius = function(v) {
+      if (!arguments.length) return innerRadius;
+      innerRadius = d3_functor(v);
+      return arc;
+    };
+    arc.outerRadius = function(v) {
+      if (!arguments.length) return outerRadius;
+      outerRadius = d3_functor(v);
+      return arc;
+    };
+    arc.startAngle = function(v) {
+      if (!arguments.length) return startAngle;
+      startAngle = d3_functor(v);
+      return arc;
+    };
+    arc.endAngle = function(v) {
+      if (!arguments.length) return endAngle;
+      endAngle = d3_functor(v);
+      return arc;
+    };
+    arc.centroid = function() {
+      var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
+      return [ Math.cos(a) * r, Math.sin(a) * r ];
+    };
+    return arc;
+  };
+  var d3_svg_arcOffset = -π / 2, d3_svg_arcMax = 2 * π - 1e-6;
+  function d3_svg_arcInnerRadius(d) {
+    return d.innerRadius;
+  }
+  function d3_svg_arcOuterRadius(d) {
+    return d.outerRadius;
+  }
+  function d3_svg_arcStartAngle(d) {
+    return d.startAngle;
+  }
+  function d3_svg_arcEndAngle(d) {
+    return d.endAngle;
+  }
+  d3.svg.line.radial = function() {
+    var line = d3_svg_line(d3_svg_lineRadial);
+    line.radius = line.x, delete line.x;
+    line.angle = line.y, delete line.y;
+    return line;
+  };
+  function d3_svg_lineRadial(points) {
+    var point, i = -1, n = points.length, r, a;
+    while (++i < n) {
+      point = points[i];
+      r = point[0];
+      a = point[1] + d3_svg_arcOffset;
+      point[0] = r * Math.cos(a);
+      point[1] = r * Math.sin(a);
+    }
+    return points;
+  }
+  function d3_svg_area(projection) {
+    var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
+    function area(data) {
+      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
+        return x;
+      } : d3_functor(x1), fy1 = y0 === y1 ? function() {
+        return y;
+      } : d3_functor(y1), x, y;
+      function segment() {
+        segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
+      }
+      while (++i < n) {
+        if (defined.call(this, d = data[i], i)) {
+          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
+          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
+        } else if (points0.length) {
+          segment();
+          points0 = [];
+          points1 = [];
+        }
+      }
+      if (points0.length) segment();
+      return segments.length ? segments.join("") : null;
+    }
+    area.x = function(_) {
+      if (!arguments.length) return x1;
+      x0 = x1 = _;
+      return area;
+    };
+    area.x0 = function(_) {
+      if (!arguments.length) return x0;
+      x0 = _;
+      return area;
+    };
+    area.x1 = function(_) {
+      if (!arguments.length) return x1;
+      x1 = _;
+      return area;
+    };
+    area.y = function(_) {
+      if (!arguments.length) return y1;
+      y0 = y1 = _;
+      return area;
+    };
+    area.y0 = function(_) {
+      if (!arguments.length) return y0;
+      y0 = _;
+      return area;
+    };
+    area.y1 = function(_) {
+      if (!arguments.length) return y1;
+      y1 = _;
+      return area;
+    };
+    area.defined = function(_) {
+      if (!arguments.length) return defined;
+      defined = _;
+      return area;
+    };
+    area.interpolate = function(_) {
+      if (!arguments.length) return interpolateKey;
+      if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
+      interpolateReverse = interpolate.reverse || interpolate;
+      L = interpolate.closed ? "M" : "L";
+      return area;
+    };
+    area.tension = function(_) {
+      if (!arguments.length) return tension;
+      tension = _;
+      return area;
+    };
+    return area;
+  }
+  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
+  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
+  d3.svg.area = function() {
+    return d3_svg_area(d3_identity);
+  };
+  d3.svg.area.radial = function() {
+    var area = d3_svg_area(d3_svg_lineRadial);
+    area.radius = area.x, delete area.x;
+    area.innerRadius = area.x0, delete area.x0;
+    area.outerRadius = area.x1, delete area.x1;
+    area.angle = area.y, delete area.y;
+    area.startAngle = area.y0, delete area.y0;
+    area.endAngle = area.y1, delete area.y1;
+    return area;
+  };
+  d3.svg.chord = function() {
+    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
+    function chord(d, i) {
+      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
+      return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
+    }
+    function subgroup(self, f, d, i) {
+      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
+      return {
+        r: r,
+        a0: a0,
+        a1: a1,
+        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
+        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
+      };
+    }
+    function equals(a, b) {
+      return a.a0 == b.a0 && a.a1 == b.a1;
+    }
+    function arc(r, p, a) {
+      return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p;
+    }
+    function curve(r0, p0, r1, p1) {
+      return "Q 0,0 " + p1;
+    }
+    chord.radius = function(v) {
+      if (!arguments.length) return radius;
+      radius = d3_functor(v);
+      return chord;
+    };
+    chord.source = function(v) {
+      if (!arguments.length) return source;
+      source = d3_functor(v);
+      return chord;
+    };
+    chord.target = function(v) {
+      if (!arguments.length) return target;
+      target = d3_functor(v);
+      return chord;
+    };
+    chord.startAngle = function(v) {
+      if (!arguments.length) return startAngle;
+      startAngle = d3_functor(v);
+      return chord;
+    };
+    chord.endAngle = function(v) {
+      if (!arguments.length) return endAngle;
+      endAngle = d3_functor(v);
+      return chord;
+    };
+    return chord;
+  };
+  function d3_svg_chordRadius(d) {
+    return d.radius;
+  }
+  d3.svg.diagonal = function() {
+    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;
+    function diagonal(d, i) {
+      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
+        x: p0.x,
+        y: m
+      }, {
+        x: p3.x,
+        y: m
+      }, p3 ];
+      p = p.map(projection);
+      return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
+    }
+    diagonal.source = function(x) {
+      if (!arguments.length) return source;
+      source = d3_functor(x);
+      return diagonal;
+    };
+    diagonal.target = function(x) {
+      if (!arguments.length) return target;
+      target = d3_functor(x);
+      return diagonal;
+    };
+    diagonal.projection = function(x) {
+      if (!arguments.length) return projection;
+      projection = x;
+      return diagonal;
+    };
+    return diagonal;
+  };
+  function d3_svg_diagonalProjection(d) {
+    return [ d.x, d.y ];
+  }
+  d3.svg.diagonal.radial = function() {
+    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
+    diagonal.projection = function(x) {
+      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
+    };
+    return diagonal;
+  };
+  function d3_svg_diagonalRadialProjection(projection) {
+    return function() {
+      var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset;
+      return [ r * Math.cos(a), r * Math.sin(a) ];
+    };
+  }
+  d3.svg.symbol = function() {
+    var type = d3_svg_symbolType, size = d3_svg_symbolSize;
+    function symbol(d, i) {
+      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
+    }
+    symbol.type = function(x) {
+      if (!arguments.length) return type;
+      type = d3_functor(x);
+      return symbol;
+    };
+    symbol.size = function(x) {
+      if (!arguments.length) return size;
+      size = d3_functor(x);
+      return symbol;
+    };
+    return symbol;
+  };
+  function d3_svg_symbolSize() {
+    return 64;
+  }
+  function d3_svg_symbolType() {
+    return "circle";
+  }
+  function d3_svg_symbolCircle(size) {
+    var r = Math.sqrt(size / π);
+    return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
+  }
+  var d3_svg_symbols = d3.map({
+    circle: d3_svg_symbolCircle,
+    cross: function(size) {
+      var r = Math.sqrt(size / 5) / 2;
+      return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
+    },
+    diamond: function(size) {
+      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
+      return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
+    },
+    square: function(size) {
+      var r = Math.sqrt(size) / 2;
+      return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
+    },
+    "triangle-down": function(size) {
+      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+      return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
+    },
+    "triangle-up": function(size) {
+      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
+      return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
+    }
+  });
+  d3.svg.symbolTypes = d3_svg_symbols.keys();
+  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
+  function d3_transition(groups, id) {
+    d3_arraySubclass(groups, d3_transitionPrototype);
+    groups.id = id;
+    return groups;
+  }
+  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit = {
+    ease: d3_ease_cubicInOut,
+    delay: 0,
+    duration: 250
+  };
+  d3_transitionPrototype.call = d3_selectionPrototype.call;
+  d3_transitionPrototype.empty = d3_selectionPrototype.empty;
+  d3_transitionPrototype.node = d3_selectionPrototype.node;
+  d3.transition = function(selection) {
+    return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
+  };
+  d3.transition.prototype = d3_transitionPrototype;
+  d3_transitionPrototype.select = function(selector) {
+    var id = this.id, subgroups = [], subgroup, subnode, node;
+    if (typeof selector !== "function") selector = d3_selection_selector(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i))) {
+          if ("__data__" in node) subnode.__data__ = node.__data__;
+          d3_transitionNode(subnode, i, id, node.__transition__[id]);
+          subgroup.push(subnode);
+        } else {
+          subgroup.push(null);
+        }
+      }
+    }
+    return d3_transition(subgroups, id);
+  };
+  d3_transitionPrototype.selectAll = function(selector) {
+    var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition;
+    if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
+    for (var j = -1, m = this.length; ++j < m; ) {
+      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
+        if (node = group[i]) {
+          transition = node.__transition__[id];
+          subnodes = selector.call(node, node.__data__, i);
+          subgroups.push(subgroup = []);
+          for (var k = -1, o = subnodes.length; ++k < o; ) {
+            d3_transitionNode(subnode = subnodes[k], k, id, transition);
+            subgroup.push(subnode);
+          }
+        }
+      }
+    }
+    return d3_transition(subgroups, id);
+  };
+  d3_transitionPrototype.filter = function(filter) {
+    var subgroups = [], subgroup, group, node;
+    if (typeof filter !== "function") filter = d3_selection_filter(filter);
+    for (var j = 0, m = this.length; j < m; j++) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+        if ((node = group[i]) && filter.call(node, node.__data__, i)) {
+          subgroup.push(node);
+        }
+      }
+    }
+    return d3_transition(subgroups, this.id, this.time).ease(this.ease());
+  };
+  d3_transitionPrototype.tween = function(name, tween) {
+    var id = this.id;
+    if (arguments.length < 2) return this.node().__transition__[id].tween.get(name);
+    return d3_selection_each(this, tween == null ? function(node) {
+      node.__transition__[id].tween.remove(name);
+    } : function(node) {
+      node.__transition__[id].tween.set(name, tween);
+    });
+  };
+  function d3_transition_tween(groups, name, value, tween) {
+    var id = groups.id;
+    return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
+      node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
+    } : (value = tween(value), function(node) {
+      node.__transition__[id].tween.set(name, value);
+    }));
+  }
+  d3_transitionPrototype.attr = function(nameNS, value) {
+    if (arguments.length < 2) {
+      for (value in nameNS) this.attr(value, nameNS[value]);
+      return this;
+    }
+    var interpolate = d3_interpolateByName(nameNS), name = d3.ns.qualify(nameNS);
+    function attrNull() {
+      this.removeAttribute(name);
+    }
+    function attrNullNS() {
+      this.removeAttributeNS(name.space, name.local);
+    }
+    return d3_transition_tween(this, "attr." + nameNS, value, function(b) {
+      function attrString() {
+        var a = this.getAttribute(name), i;
+        return a !== b && (i = interpolate(a, b), function(t) {
+          this.setAttribute(name, i(t));
+        });
+      }
+      function attrStringNS() {
+        var a = this.getAttributeNS(name.space, name.local), i;
+        return a !== b && (i = interpolate(a, b), function(t) {
+          this.setAttributeNS(name.space, name.local, i(t));
+        });
+      }
+      return b == null ? name.local ? attrNullNS : attrNull : (b += "", name.local ? attrStringNS : attrString);
+    });
+  };
+  d3_transitionPrototype.attrTween = function(nameNS, tween) {
+    var name = d3.ns.qualify(nameNS);
+    function attrTween(d, i) {
+      var f = tween.call(this, d, i, this.getAttribute(name));
+      return f && function(t) {
+        this.setAttribute(name, f(t));
+      };
+    }
+    function attrTweenNS(d, i) {
+      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
+      return f && function(t) {
+        this.setAttributeNS(name.space, name.local, f(t));
+      };
+    }
+    return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
+  };
+  d3_transitionPrototype.style = function(name, value, priority) {
+    var n = arguments.length;
+    if (n < 3) {
+      if (typeof name !== "string") {
+        if (n < 2) value = "";
+        for (priority in name) this.style(priority, name[priority], value);
+        return this;
+      }
+      priority = "";
+    }
+    var interpolate = d3_interpolateByName(name);
+    function styleNull() {
+      this.style.removeProperty(name);
+    }
+    return d3_transition_tween(this, "style." + name, value, function(b) {
+      function styleString() {
+        var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i;
+        return a !== b && (i = interpolate(a, b), function(t) {
+          this.style.setProperty(name, i(t), priority);
+        });
+      }
+      return b == null ? styleNull : (b += "", styleString);
+    });
+  };
+  d3_transitionPrototype.styleTween = function(name, tween, priority) {
+    if (arguments.length < 3) priority = "";
+    return this.tween("style." + name, function(d, i) {
+      var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name));
+      return f && function(t) {
+        this.style.setProperty(name, f(t), priority);
+      };
+    });
+  };
+  d3_transitionPrototype.text = function(value) {
+    return d3_transition_tween(this, "text", value, d3_transition_text);
+  };
+  function d3_transition_text(b) {
+    if (b == null) b = "";
+    return function() {
+      this.textContent = b;
+    };
+  }
+  d3_transitionPrototype.remove = function() {
+    return this.each("end.transition", function() {
+      var p;
+      if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this);
+    });
+  };
+  d3_transitionPrototype.ease = function(value) {
+    var id = this.id;
+    if (arguments.length < 1) return this.node().__transition__[id].ease;
+    if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
+    return d3_selection_each(this, function(node) {
+      node.__transition__[id].ease = value;
+    });
+  };
+  d3_transitionPrototype.delay = function(value) {
+    var id = this.id;
+    return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+      node.__transition__[id].delay = value.call(node, node.__data__, i, j) | 0;
+    } : (value |= 0, function(node) {
+      node.__transition__[id].delay = value;
+    }));
+  };
+  d3_transitionPrototype.duration = function(value) {
+    var id = this.id;
+    return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
+      node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j) | 0);
+    } : (value = Math.max(1, value | 0), function(node) {
+      node.__transition__[id].duration = value;
+    }));
+  };
+  d3_transitionPrototype.each = function(type, listener) {
+    var id = this.id;
+    if (arguments.length < 2) {
+      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
+      d3_transitionInheritId = id;
+      d3_selection_each(this, function(node, i, j) {
+        d3_transitionInherit = node.__transition__[id];
+        type.call(node, node.__data__, i, j);
+      });
+      d3_transitionInherit = inherit;
+      d3_transitionInheritId = inheritId;
+    } else {
+      d3_selection_each(this, function(node) {
+        node.__transition__[id].event.on(type, listener);
+      });
+    }
+    return this;
+  };
+  d3_transitionPrototype.transition = function() {
+    var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition;
+    for (var j = 0, m = this.length; j < m; j++) {
+      subgroups.push(subgroup = []);
+      for (var group = this[j], i = 0, n = group.length; i < n; i++) {
+        if (node = group[i]) {
+          transition = Object.create(node.__transition__[id0]);
+          transition.delay += transition.duration;
+          d3_transitionNode(node, i, id1, transition);
+        }
+        subgroup.push(node);
+      }
+    }
+    return d3_transition(subgroups, id1);
+  };
+  function d3_transitionNode(node, i, id, inherit) {
+    var lock = node.__transition__ || (node.__transition__ = {
+      active: 0,
+      count: 0
+    }), transition = lock[id];
+    if (!transition) {
+      var time = inherit.time;
+      transition = lock[id] = {
+        tween: new d3_Map(),
+        event: d3.dispatch("start", "end"),
+        time: time,
+        ease: inherit.ease,
+        delay: inherit.delay,
+        duration: inherit.duration
+      };
+      ++lock.count;
+      d3.timer(function(elapsed) {
+        var d = node.__data__, ease = transition.ease, event = transition.event, delay = transition.delay, duration = transition.duration, tweened = [];
+        return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
+        function start(elapsed) {
+          if (lock.active > id) return stop();
+          lock.active = id;
+          event.start.call(node, d, i);
+          transition.tween.forEach(function(key, value) {
+            if (value = value.call(node, d, i)) {
+              tweened.push(value);
+            }
+          });
+          if (!tick(elapsed)) d3.timer(tick, 0, time);
+          return 1;
+        }
+        function tick(elapsed) {
+          if (lock.active !== id) return stop();
+          var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length;
+          while (n > 0) {
+            tweened[--n].call(node, e);
+          }
+          if (t >= 1) {
+            stop();
+            event.end.call(node, d, i);
+            return 1;
+          }
+        }
+        function stop() {
+          if (--lock.count) delete lock[id]; else delete node.__transition__;
+          return 1;
+        }
+      }, 0, time);
+      return transition;
+    }
+  }
+  d3.svg.axis = function() {
+    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, tickMajorSize = 6, tickMinorSize = 6, tickEndSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_, tickSubdivide = 0;
+    function axis(g) {
+      g.each(function() {
+        var g = d3.select(this);
+        var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String : tickFormat_;
+        var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick = g.selectAll(".tick.minor").data(subticks, String), subtickEnter = subtick.enter().insert("line", ".tick").attr("class", "tick minor").style("opacity", 1e-6), subtickExit = d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate = d3.transition(subtick).style("opacity", 1);
+        var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter = tick.enter().insert("g", "path").attr("class", "tick major").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
+        var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), 
+        d3.transition(path));
+        var scale1 = scale.copy(), scale0 = this.__chart__ || scale1;
+        this.__chart__ = scale1;
+        tickEnter.append("line");
+        tickEnter.append("text");
+        var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
+        switch (orient) {
+         case "bottom":
+          {
+            tickTransform = d3_svg_axisX;
+            subtickEnter.attr("y2", tickMinorSize);
+            subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
+            lineEnter.attr("y2", tickMajorSize);
+            textEnter.attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+            lineUpdate.attr("x2", 0).attr("y2", tickMajorSize);
+            textUpdate.attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+            text.attr("dy", ".71em").style("text-anchor", "middle");
+            pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
+            break;
+          }
+
+         case "top":
+          {
+            tickTransform = d3_svg_axisX;
+            subtickEnter.attr("y2", -tickMinorSize);
+            subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
+            lineEnter.attr("y2", -tickMajorSize);
+            textEnter.attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+            lineUpdate.attr("x2", 0).attr("y2", -tickMajorSize);
+            textUpdate.attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+            text.attr("dy", "0em").style("text-anchor", "middle");
+            pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
+            break;
+          }
+
+         case "left":
+          {
+            tickTransform = d3_svg_axisY;
+            subtickEnter.attr("x2", -tickMinorSize);
+            subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
+            lineEnter.attr("x2", -tickMajorSize);
+            textEnter.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
+            lineUpdate.attr("x2", -tickMajorSize).attr("y2", 0);
+            textUpdate.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0);
+            text.attr("dy", ".32em").style("text-anchor", "end");
+            pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
+            break;
+          }
+
+         case "right":
+          {
+            tickTransform = d3_svg_axisY;
+            subtickEnter.attr("x2", tickMinorSize);
+            subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
+            lineEnter.attr("x2", tickMajorSize);
+            textEnter.attr("x", Math.max(tickMajorSize, 0) + tickPadding);
+            lineUpdate.attr("x2", tickMajorSize).attr("y2", 0);
+            textUpdate.attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0);
+            text.attr("dy", ".32em").style("text-anchor", "start");
+            pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
+            break;
+          }
+        }
+        if (scale.ticks) {
+          tickEnter.call(tickTransform, scale0);
+          tickUpdate.call(tickTransform, scale1);
+          tickExit.call(tickTransform, scale1);
+          subtickEnter.call(tickTransform, scale0);
+          subtickUpdate.call(tickTransform, scale1);
+          subtickExit.call(tickTransform, scale1);
+        } else {
+          var dx = scale1.rangeBand() / 2, x = function(d) {
+            return scale1(d) + dx;
+          };
+          tickEnter.call(tickTransform, x);
+          tickUpdate.call(tickTransform, x);
+        }
+      });
+    }
+    axis.scale = function(x) {
+      if (!arguments.length) return scale;
+      scale = x;
+      return axis;
+    };
+    axis.orient = function(x) {
+      if (!arguments.length) return orient;
+      orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
+      return axis;
+    };
+    axis.ticks = function() {
+      if (!arguments.length) return tickArguments_;
+      tickArguments_ = arguments;
+      return axis;
+    };
+    axis.tickValues = function(x) {
+      if (!arguments.length) return tickValues;
+      tickValues = x;
+      return axis;
+    };
+    axis.tickFormat = function(x) {
+      if (!arguments.length) return tickFormat_;
+      tickFormat_ = x;
+      return axis;
+    };
+    axis.tickSize = function(x, y) {
+      if (!arguments.length) return tickMajorSize;
+      var n = arguments.length - 1;
+      tickMajorSize = +x;
+      tickMinorSize = n > 1 ? +y : tickMajorSize;
+      tickEndSize = n > 0 ? +arguments[n] : tickMajorSize;
+      return axis;
+    };
+    axis.tickPadding = function(x) {
+      if (!arguments.length) return tickPadding;
+      tickPadding = +x;
+      return axis;
+    };
+    axis.tickSubdivide = function(x) {
+      if (!arguments.length) return tickSubdivide;
+      tickSubdivide = +x;
+      return axis;
+    };
+    return axis;
+  };
+  var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = {
+    top: 1,
+    right: 1,
+    bottom: 1,
+    left: 1
+  };
+  function d3_svg_axisX(selection, x) {
+    selection.attr("transform", function(d) {
+      return "translate(" + x(d) + ",0)";
+    });
+  }
+  function d3_svg_axisY(selection, y) {
+    selection.attr("transform", function(d) {
+      return "translate(0," + y(d) + ")";
+    });
+  }
+  function d3_svg_axisSubdivide(scale, ticks, m) {
+    subticks = [];
+    if (m && ticks.length > 1) {
+      var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v;
+      while (++i < n) {
+        for (j = m; --j > 0; ) {
+          if ((v = +ticks[i] - j * d) >= extent[0]) {
+            subticks.push(v);
+          }
+        }
+      }
+      for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) {
+        subticks.push(v);
+      }
+    }
+    return subticks;
+  }
+  d3.svg.brush = function() {
+    var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [ 0, 0 ], [ 0, 0 ] ], extentDomain;
+    function brush(g) {
+      g.each(function() {
+        var g = d3.select(this), bg = g.selectAll(".background").data([ 0 ]), fg = g.selectAll(".extent").data([ 0 ]), tz = g.selectAll(".resize").data(resizes, String), e;
+        g.style("pointer-events", "all").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
+        bg.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
+        fg.enter().append("rect").attr("class", "extent").style("cursor", "move");
+        tz.enter().append("g").attr("class", function(d) {
+          return "resize " + d;
+        }).style("cursor", function(d) {
+          return d3_svg_brushCursor[d];
+        }).append("rect").attr("x", function(d) {
+          return /[ew]$/.test(d) ? -3 : null;
+        }).attr("y", function(d) {
+          return /^[ns]/.test(d) ? -3 : null;
+        }).attr("width", 6).attr("height", 6).style("visibility", "hidden");
+        tz.style("display", brush.empty() ? "none" : null);
+        tz.exit().remove();
+        if (x) {
+          e = d3_scaleRange(x);
+          bg.attr("x", e[0]).attr("width", e[1] - e[0]);
+          redrawX(g);
+        }
+        if (y) {
+          e = d3_scaleRange(y);
+          bg.attr("y", e[0]).attr("height", e[1] - e[0]);
+          redrawY(g);
+        }
+        redraw(g);
+      });
+    }
+    function redraw(g) {
+      g.selectAll(".resize").attr("transform", function(d) {
+        return "translate(" + extent[+/e$/.test(d)][0] + "," + extent[+/^s/.test(d)][1] + ")";
+      });
+    }
+    function redrawX(g) {
+      g.select(".extent").attr("x", extent[0][0]);
+      g.selectAll(".extent,.n>rect,.s>rect").attr("width", extent[1][0] - extent[0][0]);
+    }
+    function redrawY(g) {
+      g.select(".extent").attr("y", extent[0][1]);
+      g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]);
+    }
+    function brushstart() {
+      var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), center, origin = mouse(), offset;
+      var w = d3.select(d3_window).on("mousemove.brush", brushmove).on("mouseup.brush", brushend).on("touchmove.brush", brushmove).on("touchend.brush", brushend).on("keydown.brush", keydown).on("keyup.brush", keyup);
+      if (dragging) {
+        origin[0] = extent[0][0] - origin[0];
+        origin[1] = extent[0][1] - origin[1];
+      } else if (resizing) {
+        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
+        offset = [ extent[1 - ex][0] - origin[0], extent[1 - ey][1] - origin[1] ];
+        origin[0] = extent[ex][0];
+        origin[1] = extent[ey][1];
+      } else if (d3.event.altKey) center = origin.slice();
+      g.style("pointer-events", "none").selectAll(".resize").style("display", null);
+      d3.select("body").style("cursor", eventTarget.style("cursor"));
+      event_({
+        type: "brushstart"
+      });
+      brushmove();
+      d3_eventCancel();
+      function mouse() {
+        var touches = d3.event.changedTouches;
+        return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
+      }
+      function keydown() {
+        if (d3.event.keyCode == 32) {
+          if (!dragging) {
+            center = null;
+            origin[0] -= extent[1][0];
+            origin[1] -= extent[1][1];
+            dragging = 2;
+          }
+          d3_eventCancel();
+        }
+      }
+      function keyup() {
+        if (d3.event.keyCode == 32 && dragging == 2) {
+          origin[0] += extent[1][0];
+          origin[1] += extent[1][1];
+          dragging = 0;
+          d3_eventCancel();
+        }
+      }
+      function brushmove() {
+        var point = mouse(), moved = false;
+        if (offset) {
+          point[0] += offset[0];
+          point[1] += offset[1];
+        }
+        if (!dragging) {
+          if (d3.event.altKey) {
+            if (!center) center = [ (extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2 ];
+            origin[0] = extent[+(point[0] < center[0])][0];
+            origin[1] = extent[+(point[1] < center[1])][1];
+          } else center = null;
+        }
+        if (resizingX && move1(point, x, 0)) {
+          redrawX(g);
+          moved = true;
+        }
+        if (resizingY && move1(point, y, 1)) {
+          redrawY(g);
+          moved = true;
+        }
+        if (moved) {
+          redraw(g);
+          event_({
+            type: "brush",
+            mode: dragging ? "move" : "resize"
+          });
+        }
+      }
+      function move1(point, scale, i) {
+        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], size = extent[1][i] - extent[0][i], min, max;
+        if (dragging) {
+          r0 -= position;
+          r1 -= size + position;
+        }
+        min = Math.max(r0, Math.min(r1, point[i]));
+        if (dragging) {
+          max = (min += position) + size;
+        } else {
+          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
+          if (position < min) {
+            max = min;
+            min = position;
+          } else {
+            max = position;
+          }
+        }
+        if (extent[0][i] !== min || extent[1][i] !== max) {
+          extentDomain = null;
+          extent[0][i] = min;
+          extent[1][i] = max;
+          return true;
+        }
+      }
+      function brushend() {
+        brushmove();
+        g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
+        d3.select("body").style("cursor", null);
+        w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
+        event_({
+          type: "brushend"
+        });
+        d3_eventCancel();
+      }
+    }
+    brush.x = function(z) {
+      if (!arguments.length) return x;
+      x = z;
+      resizes = d3_svg_brushResizes[!x << 1 | !y];
+      return brush;
+    };
+    brush.y = function(z) {
+      if (!arguments.length) return y;
+      y = z;
+      resizes = d3_svg_brushResizes[!x << 1 | !y];
+      return brush;
+    };
+    brush.extent = function(z) {
+      var x0, x1, y0, y1, t;
+      if (!arguments.length) {
+        z = extentDomain || extent;
+        if (x) {
+          x0 = z[0][0], x1 = z[1][0];
+          if (!extentDomain) {
+            x0 = extent[0][0], x1 = extent[1][0];
+            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
+            if (x1 < x0) t = x0, x0 = x1, x1 = t;
+          }
+        }
+        if (y) {
+          y0 = z[0][1], y1 = z[1][1];
+          if (!extentDomain) {
+            y0 = extent[0][1], y1 = extent[1][1];
+            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
+            if (y1 < y0) t = y0, y0 = y1, y1 = t;
+          }
+        }
+        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
+      }
+      extentDomain = [ [ 0, 0 ], [ 0, 0 ] ];
+      if (x) {
+        x0 = z[0], x1 = z[1];
+        if (y) x0 = x0[0], x1 = x1[0];
+        extentDomain[0][0] = x0, extentDomain[1][0] = x1;
+        if (x.invert) x0 = x(x0), x1 = x(x1);
+        if (x1 < x0) t = x0, x0 = x1, x1 = t;
+        extent[0][0] = x0 | 0, extent[1][0] = x1 | 0;
+      }
+      if (y) {
+        y0 = z[0], y1 = z[1];
+        if (x) y0 = y0[1], y1 = y1[1];
+        extentDomain[0][1] = y0, extentDomain[1][1] = y1;
+        if (y.invert) y0 = y(y0), y1 = y(y1);
+        if (y1 < y0) t = y0, y0 = y1, y1 = t;
+        extent[0][1] = y0 | 0, extent[1][1] = y1 | 0;
+      }
+      return brush;
+    };
+    brush.clear = function() {
+      extentDomain = null;
+      extent[0][0] = extent[0][1] = extent[1][0] = extent[1][1] = 0;
+      return brush;
+    };
+    brush.empty = function() {
+      return x && extent[0][0] === extent[1][0] || y && extent[0][1] === extent[1][1];
+    };
+    return d3.rebind(brush, event, "on");
+  };
+  var d3_svg_brushCursor = {
+    n: "ns-resize",
+    e: "ew-resize",
+    s: "ns-resize",
+    w: "ew-resize",
+    nw: "nwse-resize",
+    ne: "nesw-resize",
+    se: "nwse-resize",
+    sw: "nesw-resize"
+  };
+  var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
+  d3.time = {};
+  var d3_time = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
+  function d3_time_utc() {
+    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
+  }
+  d3_time_utc.prototype = {
+    getDate: function() {
+      return this._.getUTCDate();
+    },
+    getDay: function() {
+      return this._.getUTCDay();
+    },
+    getFullYear: function() {
+      return this._.getUTCFullYear();
+    },
+    getHours: function() {
+      return this._.getUTCHours();
+    },
+    getMilliseconds: function() {
+      return this._.getUTCMilliseconds();
+    },
+    getMinutes: function() {
+      return this._.getUTCMinutes();
+    },
+    getMonth: function() {
+      return this._.getUTCMonth();
+    },
+    getSeconds: function() {
+      return this._.getUTCSeconds();
+    },
+    getTime: function() {
+      return this._.getTime();
+    },
+    getTimezoneOffset: function() {
+      return 0;
+    },
+    valueOf: function() {
+      return this._.valueOf();
+    },
+    setDate: function() {
+      d3_time_prototype.setUTCDate.apply(this._, arguments);
+    },
+    setDay: function() {
+      d3_time_prototype.setUTCDay.apply(this._, arguments);
+    },
+    setFullYear: function() {
+      d3_time_prototype.setUTCFullYear.apply(this._, arguments);
+    },
+    setHours: function() {
+      d3_time_prototype.setUTCHours.apply(this._, arguments);
+    },
+    setMilliseconds: function() {
+      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
+    },
+    setMinutes: function() {
+      d3_time_prototype.setUTCMinutes.apply(this._, arguments);
+    },
+    setMonth: function() {
+      d3_time_prototype.setUTCMonth.apply(this._, arguments);
+    },
+    setSeconds: function() {
+      d3_time_prototype.setUTCSeconds.apply(this._, arguments);
+    },
+    setTime: function() {
+      d3_time_prototype.setTime.apply(this._, arguments);
+    }
+  };
+  var d3_time_prototype = Date.prototype;
+  var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S";
+  var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
+  function d3_time_interval(local, step, number) {
+    function round(date) {
+      var d0 = local(date), d1 = offset(d0, 1);
+      return date - d0 < d1 - date ? d0 : d1;
+    }
+    function ceil(date) {
+      step(date = local(new d3_time(date - 1)), 1);
+      return date;
+    }
+    function offset(date, k) {
+      step(date = new d3_time(+date), k);
+      return date;
+    }
+    function range(t0, t1, dt) {
+      var time = ceil(t0), times = [];
+      if (dt > 1) {
+        while (time < t1) {
+          if (!(number(time) % dt)) times.push(new Date(+time));
+          step(time, 1);
+        }
+      } else {
+        while (time < t1) times.push(new Date(+time)), step(time, 1);
+      }
+      return times;
+    }
+    function range_utc(t0, t1, dt) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time_utc();
+        utc._ = t0;
+        return range(utc, t1, dt);
+      } finally {
+        d3_time = Date;
+      }
+    }
+    local.floor = local;
+    local.round = round;
+    local.ceil = ceil;
+    local.offset = offset;
+    local.range = range;
+    var utc = local.utc = d3_time_interval_utc(local);
+    utc.floor = utc;
+    utc.round = d3_time_interval_utc(round);
+    utc.ceil = d3_time_interval_utc(ceil);
+    utc.offset = d3_time_interval_utc(offset);
+    utc.range = range_utc;
+    return local;
+  }
+  function d3_time_interval_utc(method) {
+    return function(date, k) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time_utc();
+        utc._ = date;
+        return method(utc, k)._;
+      } finally {
+        d3_time = Date;
+      }
+    };
+  }
+  d3.time.year = d3_time_interval(function(date) {
+    date = d3.time.day(date);
+    date.setMonth(0, 1);
+    return date;
+  }, function(date, offset) {
+    date.setFullYear(date.getFullYear() + offset);
+  }, function(date) {
+    return date.getFullYear();
+  });
+  d3.time.years = d3.time.year.range;
+  d3.time.years.utc = d3.time.year.utc.range;
+  d3.time.day = d3_time_interval(function(date) {
+    var day = new d3_time(1970, 0);
+    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
+    return day;
+  }, function(date, offset) {
+    date.setDate(date.getDate() + offset);
+  }, function(date) {
+    return date.getDate() - 1;
+  });
+  d3.time.days = d3.time.day.range;
+  d3.time.days.utc = d3.time.day.utc.range;
+  d3.time.dayOfYear = function(date) {
+    var year = d3.time.year(date);
+    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
+  };
+  d3_time_daySymbols.forEach(function(day, i) {
+    day = day.toLowerCase();
+    i = 7 - i;
+    var interval = d3.time[day] = d3_time_interval(function(date) {
+      (date = d3.time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
+      return date;
+    }, function(date, offset) {
+      date.setDate(date.getDate() + Math.floor(offset) * 7);
+    }, function(date) {
+      var day = d3.time.year(date).getDay();
+      return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
+    });
+    d3.time[day + "s"] = interval.range;
+    d3.time[day + "s"].utc = interval.utc.range;
+    d3.time[day + "OfYear"] = function(date) {
+      var day = d3.time.year(date).getDay();
+      return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7);
+    };
+  });
+  d3.time.week = d3.time.sunday;
+  d3.time.weeks = d3.time.sunday.range;
+  d3.time.weeks.utc = d3.time.sunday.utc.range;
+  d3.time.weekOfYear = d3.time.sundayOfYear;
+  d3.time.format = function(template) {
+    var n = template.length;
+    function format(date) {
+      var string = [], i = -1, j = 0, c, p, f;
+      while (++i < n) {
+        if (template.charCodeAt(i) === 37) {
+          string.push(template.substring(j, i));
+          if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
+          if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
+          string.push(c);
+          j = i + 1;
+        }
+      }
+      string.push(template.substring(j, i));
+      return string.join("");
+    }
+    format.parse = function(string) {
+      var d = {
+        y: 1900,
+        m: 0,
+        d: 1,
+        H: 0,
+        M: 0,
+        S: 0,
+        L: 0
+      }, i = d3_time_parse(d, template, string, 0);
+      if (i != string.length) return null;
+      if ("p" in d) d.H = d.H % 12 + d.p * 12;
+      var date = new d3_time();
+      date.setFullYear(d.y, d.m, d.d);
+      date.setHours(d.H, d.M, d.S, d.L);
+      return date;
+    };
+    format.toString = function() {
+      return template;
+    };
+    return format;
+  };
+  function d3_time_parse(date, template, string, j) {
+    var c, p, i = 0, n = template.length, m = string.length;
+    while (i < n) {
+      if (j >= m) return -1;
+      c = template.charCodeAt(i++);
+      if (c === 37) {
+        p = d3_time_parsers[template.charAt(i++)];
+        if (!p || (j = p(date, string, j)) < 0) return -1;
+      } else if (c != string.charCodeAt(j++)) {
+        return -1;
+      }
+    }
+    return j;
+  }
+  function d3_time_formatRe(names) {
+    return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
+  }
+  function d3_time_formatLookup(names) {
+    var map = new d3_Map(), i = -1, n = names.length;
+    while (++i < n) map.set(names[i].toLowerCase(), i);
+    return map;
+  }
+  function d3_time_formatPad(value, fill, width) {
+    value += "";
+    var length = value.length;
+    return length < width ? new Array(width - length + 1).join(fill) + value : value;
+  }
+  var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations);
+  var d3_time_formatPads = {
+    "-": "",
+    _: " ",
+    "0": "0"
+  };
+  var d3_time_formats = {
+    a: function(d) {
+      return d3_time_dayAbbreviations[d.getDay()];
+    },
+    A: function(d) {
+      return d3_time_days[d.getDay()];
+    },
+    b: function(d) {
+      return d3_time_monthAbbreviations[d.getMonth()];
+    },
+    B: function(d) {
+      return d3_time_months[d.getMonth()];
+    },
+    c: d3.time.format(d3_time_formatDateTime),
+    d: function(d, p) {
+      return d3_time_formatPad(d.getDate(), p, 2);
+    },
+    e: function(d, p) {
+      return d3_time_formatPad(d.getDate(), p, 2);
+    },
+    H: function(d, p) {
+      return d3_time_formatPad(d.getHours(), p, 2);
+    },
+    I: function(d, p) {
+      return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
+    },
+    j: function(d, p) {
+      return d3_time_formatPad(1 + d3.time.dayOfYear(d), p, 3);
+    },
+    L: function(d, p) {
+      return d3_time_formatPad(d.getMilliseconds(), p, 3);
+    },
+    m: function(d, p) {
+      return d3_time_formatPad(d.getMonth() + 1, p, 2);
+    },
+    M: function(d, p) {
+      return d3_time_formatPad(d.getMinutes(), p, 2);
+    },
+    p: function(d) {
+      return d.getHours() >= 12 ? "PM" : "AM";
+    },
+    S: function(d, p) {
+      return d3_time_formatPad(d.getSeconds(), p, 2);
+    },
+    U: function(d, p) {
+      return d3_time_formatPad(d3.time.sundayOfYear(d), p, 2);
+    },
+    w: function(d) {
+      return d.getDay();
+    },
+    W: function(d, p) {
+      return d3_time_formatPad(d3.time.mondayOfYear(d), p, 2);
+    },
+    x: d3.time.format(d3_time_formatDate),
+    X: d3.time.format(d3_time_formatTime),
+    y: function(d, p) {
+      return d3_time_formatPad(d.getFullYear() % 100, p, 2);
+    },
+    Y: function(d, p) {
+      return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);
+    },
+    Z: d3_time_zone,
+    "%": function() {
+      return "%";
+    }
+  };
+  var d3_time_parsers = {
+    a: d3_time_parseWeekdayAbbrev,
+    A: d3_time_parseWeekday,
+    b: d3_time_parseMonthAbbrev,
+    B: d3_time_parseMonth,
+    c: d3_time_parseLocaleFull,
+    d: d3_time_parseDay,
+    e: d3_time_parseDay,
+    H: d3_time_parseHour24,
+    I: d3_time_parseHour24,
+    L: d3_time_parseMilliseconds,
+    m: d3_time_parseMonthNumber,
+    M: d3_time_parseMinutes,
+    p: d3_time_parseAmPm,
+    S: d3_time_parseSeconds,
+    x: d3_time_parseLocaleDate,
+    X: d3_time_parseLocaleTime,
+    y: d3_time_parseYear,
+    Y: d3_time_parseFullYear
+  };
+  function d3_time_parseWeekdayAbbrev(date, string, i) {
+    d3_time_dayAbbrevRe.lastIndex = 0;
+    var n = d3_time_dayAbbrevRe.exec(string.substring(i));
+    return n ? i += n[0].length : -1;
+  }
+  function d3_time_parseWeekday(date, string, i) {
+    d3_time_dayRe.lastIndex = 0;
+    var n = d3_time_dayRe.exec(string.substring(i));
+    return n ? i += n[0].length : -1;
+  }
+  function d3_time_parseMonthAbbrev(date, string, i) {
+    d3_time_monthAbbrevRe.lastIndex = 0;
+    var n = d3_time_monthAbbrevRe.exec(string.substring(i));
+    return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+  }
+  function d3_time_parseMonth(date, string, i) {
+    d3_time_monthRe.lastIndex = 0;
+    var n = d3_time_monthRe.exec(string.substring(i));
+    return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+  }
+  function d3_time_parseLocaleFull(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
+  }
+  function d3_time_parseLocaleDate(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
+  }
+  function d3_time_parseLocaleTime(date, string, i) {
+    return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
+  }
+  function d3_time_parseFullYear(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 4));
+    return n ? (date.y = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseYear(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.y = d3_time_expandYear(+n[0]), i += n[0].length) : -1;
+  }
+  function d3_time_expandYear(d) {
+    return d + (d > 68 ? 1900 : 2e3);
+  }
+  function d3_time_parseMonthNumber(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.m = n[0] - 1, i += n[0].length) : -1;
+  }
+  function d3_time_parseDay(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.d = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseHour24(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.H = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseMinutes(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.M = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseSeconds(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 2));
+    return n ? (date.S = +n[0], i += n[0].length) : -1;
+  }
+  function d3_time_parseMilliseconds(date, string, i) {
+    d3_time_numberRe.lastIndex = 0;
+    var n = d3_time_numberRe.exec(string.substring(i, i + 3));
+    return n ? (date.L = +n[0], i += n[0].length) : -1;
+  }
+  var d3_time_numberRe = /^\s*\d+/;
+  function d3_time_parseAmPm(date, string, i) {
+    var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
+    return n == null ? -1 : (date.p = n, i);
+  }
+  var d3_time_amPmLookup = d3.map({
+    am: 0,
+    pm: 1
+  });
+  function d3_time_zone(d) {
+    var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60;
+    return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
+  }
+  d3.time.format.utc = function(template) {
+    var local = d3.time.format(template);
+    function format(date) {
+      try {
+        d3_time = d3_time_utc;
+        var utc = new d3_time();
+        utc._ = date;
+        return local(utc);
+      } finally {
+        d3_time = Date;
+      }
+    }
+    format.parse = function(string) {
+      try {
+        d3_time = d3_time_utc;
+        var date = local.parse(string);
+        return date && date._;
+      } finally {
+        d3_time = Date;
+      }
+    };
+    format.toString = local.toString;
+    return format;
+  };
+  var d3_time_formatIso = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");
+  d3.time.format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
+  function d3_time_formatIsoNative(date) {
+    return date.toISOString();
+  }
+  d3_time_formatIsoNative.parse = function(string) {
+    var date = new Date(string);
+    return isNaN(date) ? null : date;
+  };
+  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
+  d3.time.second = d3_time_interval(function(date) {
+    return new d3_time(Math.floor(date / 1e3) * 1e3);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 1e3);
+  }, function(date) {
+    return date.getSeconds();
+  });
+  d3.time.seconds = d3.time.second.range;
+  d3.time.seconds.utc = d3.time.second.utc.range;
+  d3.time.minute = d3_time_interval(function(date) {
+    return new d3_time(Math.floor(date / 6e4) * 6e4);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 6e4);
+  }, function(date) {
+    return date.getMinutes();
+  });
+  d3.time.minutes = d3.time.minute.range;
+  d3.time.minutes.utc = d3.time.minute.utc.range;
+  d3.time.hour = d3_time_interval(function(date) {
+    var timezone = date.getTimezoneOffset() / 60;
+    return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
+  }, function(date, offset) {
+    date.setTime(date.getTime() + Math.floor(offset) * 36e5);
+  }, function(date) {
+    return date.getHours();
+  });
+  d3.time.hours = d3.time.hour.range;
+  d3.time.hours.utc = d3.time.hour.utc.range;
+  d3.time.month = d3_time_interval(function(date) {
+    date = d3.time.day(date);
+    date.setDate(1);
+    return date;
+  }, function(date, offset) {
+    date.setMonth(date.getMonth() + offset);
+  }, function(date) {
+    return date.getMonth();
+  });
+  d3.time.months = d3.time.month.range;
+  d3.time.months.utc = d3.time.month.utc.range;
+  function d3_time_scale(linear, methods, format) {
+    function scale(x) {
+      return linear(x);
+    }
+    scale.invert = function(x) {
+      return d3_time_scaleDate(linear.invert(x));
+    };
+    scale.domain = function(x) {
+      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
+      linear.domain(x);
+      return scale;
+    };
+    scale.nice = function(m) {
+      return scale.domain(d3_scale_nice(scale.domain(), function() {
+        return m;
+      }));
+    };
+    scale.ticks = function(m, k) {
+      var extent = d3_time_scaleExtent(scale.domain());
+      if (typeof m !== "function") {
+        var span = extent[1] - extent[0], target = span / m, i = d3.bisect(d3_time_scaleSteps, target);
+        if (i == d3_time_scaleSteps.length) return methods.year(extent, m);
+        if (!i) return linear.ticks(m).map(d3_time_scaleDate);
+        if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i;
+        m = methods[i];
+        k = m[1];
+        m = m[0].range;
+      }
+      return m(extent[0], new Date(+extent[1] + 1), k);
+    };
+    scale.tickFormat = function() {
+      return format;
+    };
+    scale.copy = function() {
+      return d3_time_scale(linear.copy(), methods, format);
+    };
+    return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+  }
+  function d3_time_scaleExtent(domain) {
+    var start = domain[0], stop = domain[domain.length - 1];
+    return start < stop ? [ start, stop ] : [ stop, start ];
+  }
+  function d3_time_scaleDate(t) {
+    return new Date(t);
+  }
+  function d3_time_scaleFormat(formats) {
+    return function(date) {
+      var i = formats.length - 1, f = formats[i];
+      while (!f[1](date)) f = formats[--i];
+      return f[0](date);
+    };
+  }
+  function d3_time_scaleSetYear(y) {
+    var d = new Date(y, 0, 1);
+    d.setFullYear(y);
+    return d;
+  }
+  function d3_time_scaleGetYear(d) {
+    var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1);
+    return y + (d - d0) / (d1 - d0);
+  }
+  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
+  var d3_time_scaleLocalMethods = [ [ d3.time.second, 1 ], [ d3.time.second, 5 ], [ d3.time.second, 15 ], [ d3.time.second, 30 ], [ d3.time.minute, 1 ], [ d3.time.minute, 5 ], [ d3.time.minute, 15 ], [ d3.time.minute, 30 ], [ d3.time.hour, 1 ], [ d3.time.hour, 3 ], [ d3.time.hour, 6 ], [ d3.time.hour, 12 ], [ d3.time.day, 1 ], [ d3.time.day, 2 ], [ d3.time.week, 1 ], [ d3.time.month, 1 ], [ d3.time.month, 3 ], [ d3.time.year, 1 ] ];
+  var d3_time_scaleLocalFormats = [ [ d3.time.format("%Y"), d3_true ], [ d3.time.format("%B"), function(d) {
+    return d.getMonth();
+  } ], [ d3.time.format("%b %d"), function(d) {
+    return d.getDate() != 1;
+  } ], [ d3.time.format("%a %d"), function(d) {
+    return d.getDay() && d.getDate() != 1;
+  } ], [ d3.time.format("%I %p"), function(d) {
+    return d.getHours();
+  } ], [ d3.time.format("%I:%M"), function(d) {
+    return d.getMinutes();
+  } ], [ d3.time.format(":%S"), function(d) {
+    return d.getSeconds();
+  } ], [ d3.time.format(".%L"), function(d) {
+    return d.getMilliseconds();
+  } ] ];
+  var d3_time_scaleLinear = d3.scale.linear(), d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
+  d3_time_scaleLocalMethods.year = function(extent, m) {
+    return d3_time_scaleLinear.domain(extent.map(d3_time_scaleGetYear)).ticks(m).map(d3_time_scaleSetYear);
+  };
+  d3.time.scale = function() {
+    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
+  };
+  var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
+    return [ m[0].utc, m[1] ];
+  });
+  var d3_time_scaleUTCFormats = [ [ d3.time.format.utc("%Y"), d3_true ], [ d3.time.format.utc("%B"), function(d) {
+    return d.getUTCMonth();
+  } ], [ d3.time.format.utc("%b %d"), function(d) {
+    return d.getUTCDate() != 1;
+  } ], [ d3.time.format.utc("%a %d"), function(d) {
+    return d.getUTCDay() && d.getUTCDate() != 1;
+  } ], [ d3.time.format.utc("%I %p"), function(d) {
+    return d.getUTCHours();
+  } ], [ d3.time.format.utc("%I:%M"), function(d) {
+    return d.getUTCMinutes();
+  } ], [ d3.time.format.utc(":%S"), function(d) {
+    return d.getUTCSeconds();
+  } ], [ d3.time.format.utc(".%L"), function(d) {
+    return d.getUTCMilliseconds();
+  } ] ];
+  var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
+  function d3_time_scaleUTCSetYear(y) {
+    var d = new Date(Date.UTC(y, 0, 1));
+    d.setUTCFullYear(y);
+    return d;
+  }
+  function d3_time_scaleUTCGetYear(d) {
+    var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1);
+    return y + (d - d0) / (d1 - d0);
+  }
+  d3_time_scaleUTCMethods.year = function(extent, m) {
+    return d3_time_scaleLinear.domain(extent.map(d3_time_scaleUTCGetYear)).ticks(m).map(d3_time_scaleUTCSetYear);
+  };
+  d3.time.scale.utc = function() {
+    return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat);
+  };
+  d3.text = function() {
+    return d3.xhr.apply(d3, arguments).response(d3_text);
+  };
+  function d3_text(request) {
+    return request.responseText;
+  }
+  d3.json = function(url, callback) {
+    return d3.xhr(url, "application/json", callback).response(d3_json);
+  };
+  function d3_json(request) {
+    return JSON.parse(request.responseText);
+  }
+  d3.html = function(url, callback) {
+    return d3.xhr(url, "text/html", callback).response(d3_html);
+  };
+  function d3_html(request) {
+    var range = d3_document.createRange();
+    range.selectNode(d3_document.body);
+    return range.createContextualFragment(request.responseText);
+  }
+  d3.xml = function() {
+    return d3.xhr.apply(d3, arguments).response(d3_xml);
+  };
+  function d3_xml(request) {
+    return request.responseXML;
+  }
+  return d3;
+}();
\ No newline at end of file
diff --git a/lib/fisheye.js b/lib/fisheye.js
new file mode 100644
index 0000000..e1addd7
--- /dev/null
+++ b/lib/fisheye.js
@@ -0,0 +1,86 @@
+(function() {
+  d3.fisheye = {
+    scale: function(scaleType) {
+      return d3_fisheye_scale(scaleType(), 3, 0);
+    },
+    circular: function() {
+      var radius = 200,
+          distortion = 2,
+          k0,
+          k1,
+          focus = [0, 0];
+
+      function fisheye(d) {
+        var dx = d.x - focus[0],
+            dy = d.y - focus[1],
+            dd = Math.sqrt(dx * dx + dy * dy);
+        if (!dd || dd >= radius) return {x: d.x, y: d.y, z: 1};
+        var k = k0 * (1 - Math.exp(-dd * k1)) / dd * .75 + .25;
+        return {x: focus[0] + dx * k, y: focus[1] + dy * k, z: Math.min(k, 10)};
+      }
+
+      function rescale() {
+        k0 = Math.exp(distortion);
+        k0 = k0 / (k0 - 1) * radius;
+        k1 = distortion / radius;
+        return fisheye;
+      }
+
+      fisheye.radius = function(_) {
+        if (!arguments.length) return radius;
+        radius = +_;
+        return rescale();
+      };
+
+      fisheye.distortion = function(_) {
+        if (!arguments.length) return distortion;
+        distortion = +_;
+        return rescale();
+      };
+
+      fisheye.focus = function(_) {
+        if (!arguments.length) return focus;
+        focus = _;
+        return fisheye;
+      };
+
+      return rescale();
+    }
+  };
+
+  function d3_fisheye_scale(scale, d, a) {
+
+    function fisheye(_) {
+      var x = scale(_),
+          left = x < a,
+          v,
+          range = d3.extent(scale.range()),
+          min = range[0],
+          max = range[1],
+          m = left ? a - min : max - a;
+      if (m == 0) m = max - min;
+      return (left ? -1 : 1) * m * (d + 1) / (d + (m / Math.abs(x - a))) + a;
+    }
+
+    fisheye.distortion = function(_) {
+      if (!arguments.length) return d;
+      d = +_;
+      return fisheye;
+    };
+
+    fisheye.focus = function(_) {
+      if (!arguments.length) return a;
+      a = +_;
+      return fisheye;
+    };
+
+    fisheye.copy = function() {
+      return d3_fisheye_scale(scale.copy(), d, a);
+    };
+
+    fisheye.nice = scale.nice;
+    fisheye.ticks = scale.ticks;
+    fisheye.tickFormat = scale.tickFormat;
+    return d3.rebind(fisheye, scale, "domain", "range");
+  }
+})();
diff --git a/lib/hive.js b/lib/hive.js
new file mode 100644
index 0000000..06e53ae
--- /dev/null
+++ b/lib/hive.js
@@ -0,0 +1,80 @@
+d3.hive = {};
+
+d3.hive.link = function() {
+  var source = function(d) { return d.source; },
+      target = function(d) { return d.target; },
+      angle = function(d) { return d.angle; },
+      startRadius = function(d) { return d.radius; },
+      endRadius = startRadius,
+      arcOffset = -Math.PI / 2;
+
+  function link(d, i) {
+    var s = node(source, this, d, i),
+        t = node(target, this, d, i),
+        x;
+    if (t.a < s.a) x = t, t = s, s = x;
+    if (t.a - s.a > Math.PI) s.a += 2 * Math.PI;
+    var a1 = s.a + (t.a - s.a) / 3,
+        a2 = t.a - (t.a - s.a) / 3;
+    return s.r0 - s.r1 || t.r0 - t.r1
+        ? "M" + Math.cos(s.a) * s.r0 + "," + Math.sin(s.a) * s.r0
+        + "L" + Math.cos(s.a) * s.r1 + "," + Math.sin(s.a) * s.r1
+        + "C" + Math.cos(a1) * s.r1 + "," + Math.sin(a1) * s.r1
+        + " " + Math.cos(a2) * t.r1 + "," + Math.sin(a2) * t.r1
+        + " " + Math.cos(t.a) * t.r1 + "," + Math.sin(t.a) * t.r1
+        + "L" + Math.cos(t.a) * t.r0 + "," + Math.sin(t.a) * t.r0
+        + "C" + Math.cos(a2) * t.r0 + "," + Math.sin(a2) * t.r0
+        + " " + Math.cos(a1) * s.r0 + "," + Math.sin(a1) * s.r0
+        + " " + Math.cos(s.a) * s.r0 + "," + Math.sin(s.a) * s.r0
+        : "M" + Math.cos(s.a) * s.r0 + "," + Math.sin(s.a) * s.r0
+        + "C" + Math.cos(a1) * s.r1 + "," + Math.sin(a1) * s.r1
+        + " " + Math.cos(a2) * t.r1 + "," + Math.sin(a2) * t.r1
+        + " " + Math.cos(t.a) * t.r1 + "," + Math.sin(t.a) * t.r1;
+  }
+
+  function node(method, thiz, d, i) {
+    var node = method.call(thiz, d, i),
+        a = +(typeof angle === "function" ? angle.call(thiz, node, i) : angle) + arcOffset,
+        r0 = +(typeof startRadius === "function" ? startRadius.call(thiz, node, i) : startRadius),
+        r1 = (startRadius === endRadius ? r0 : +(typeof endRadius === "function" ? endRadius.call(thiz, node, i) : endRadius));
+    return {r0: r0, r1: r1, a: a};
+  }
+
+  link.source = function(_) {
+    if (!arguments.length) return source;
+    source = _;
+    return link;
+  };
+
+  link.target = function(_) {
+    if (!arguments.length) return target;
+    target = _;
+    return link;
+  };
+
+  link.angle = function(_) {
+    if (!arguments.length) return angle;
+    angle = _;
+    return link;
+  };
+
+  link.radius = function(_) {
+    if (!arguments.length) return startRadius;
+    startRadius = endRadius = _;
+    return link;
+  };
+
+  link.startRadius = function(_) {
+    if (!arguments.length) return startRadius;
+    startRadius = _;
+    return link;
+  };
+
+  link.endRadius = function(_) {
+    if (!arguments.length) return endRadius;
+    endRadius = _;
+    return link;
+  };
+
+  return link;
+};
diff --git a/lib/horizon.js b/lib/horizon.js
new file mode 100644
index 0000000..d84c656
--- /dev/null
+++ b/lib/horizon.js
@@ -0,0 +1,192 @@
+(function() {
+  d3.horizon = function() {
+    var bands = 1, // between 1 and 5, typically
+        mode = "offset", // or mirror
+        interpolate = "linear", // or basis, monotone, step-before, etc.
+        x = d3_horizonX,
+        y = d3_horizonY,
+        w = 960,
+        h = 40,
+        duration = 0;
+
+    var color = d3.scale.linear()
+        .domain([-1, 0, 1])
+        .range(["#d62728", "#fff", "#1f77b4"]);
+
+    // For each small multiple…
+    function horizon(g) {
+      g.each(function(d, i) {
+        var g = d3.select(this),
+            n = 2 * bands + 1,
+            xMin = Infinity,
+            xMax = -Infinity,
+            yMax = -Infinity,
+            x0, // old x-scale
+            y0, // old y-scale
+            id; // unique id for paths
+
+        // Compute x- and y-values along with extents.
+        var data = d.map(function(d, i) {
+          var xv = x.call(this, d, i),
+              yv = y.call(this, d, i);
+          if (xv < xMin) xMin = xv;
+          if (xv > xMax) xMax = xv;
+          if (-yv > yMax) yMax = -yv;
+          if (yv > yMax) yMax = yv;
+          return [xv, yv];
+        });
+
+        // Compute the new x- and y-scales, and transform.
+        var x1 = d3.scale.linear().domain([xMin, xMax]).range([0, w]),
+            y1 = d3.scale.linear().domain([0, yMax]).range([0, h * bands]),
+            t1 = d3_horizonTransform(bands, h, mode);
+
+        // Retrieve the old scales, if this is an update.
+        if (this.__chart__) {
+          x0 = this.__chart__.x;
+          y0 = this.__chart__.y;
+          t0 = this.__chart__.t;
+          id = this.__chart__.id;
+        } else {
+          x0 = x1.copy();
+          y0 = y1.copy();
+          t0 = t1;
+          id = ++d3_horizonId;
+        }
+
+        // We'll use a defs to store the area path and the clip path.
+        var defs = g.selectAll("defs")
+            .data([null]);
+
+        // The clip path is a simple rect.
+        defs.enter().append("defs").append("clipPath")
+            .attr("id", "d3_horizon_clip" + id)
+          .append("rect")
+            .attr("width", w)
+            .attr("height", h);
+
+        defs.select("rect").transition()
+            .duration(duration)
+            .attr("width", w)
+            .attr("height", h);
+
+        // We'll use a container to clip all horizon layers at once.
+        g.selectAll("g")
+            .data([null])
+          .enter().append("g")
+            .attr("clip-path", "url(#d3_horizon_clip" + id + ")");
+
+        // Instantiate each copy of the path with different transforms.
+        var path = g.select("g").selectAll("path")
+            .data(d3.range(-1, -bands - 1, -1).concat(d3.range(1, bands + 1)), Number);
+
+        var d0 = d3_horizonArea
+            .interpolate(interpolate)
+            .x(function(d) { return x0(d[0]); })
+            .y0(h * bands)
+            .y1(function(d) { return h * bands - y0(d[1]); })
+            (data);
+
+        var d1 = d3_horizonArea
+            .x(function(d) { return x1(d[0]); })
+            .y1(function(d) { return h * bands - y1(d[1]); })
+            (data);
+
+        path.enter().append("path")
+            .style("fill", color)
+            .attr("transform", t0)
+            .attr("d", d0);
+
+        path.transition()
+            .duration(duration)
+            .style("fill", color)
+            .attr("transform", t1)
+            .attr("d", d1);
+
+        path.exit().transition()
+            .duration(duration)
+            .attr("transform", t1)
+            .attr("d", d1)
+            .remove();
+
+        // Stash the new scales.
+        this.__chart__ = {x: x1, y: y1, t: t1, id: id};
+      });
+      d3.timer.flush();
+    }
+
+    horizon.duration = function(x) {
+      if (!arguments.length) return duration;
+      duration = +x;
+      return horizon;
+    };
+
+    horizon.bands = function(x) {
+      if (!arguments.length) return bands;
+      bands = +x;
+      color.domain([-bands, 0, bands]);
+      return horizon;
+    };
+
+    horizon.mode = function(x) {
+      if (!arguments.length) return mode;
+      mode = x + "";
+      return horizon;
+    };
+
+    horizon.colors = function(x) {
+      if (!arguments.length) return color.range();
+      color.range(x);
+      return horizon;
+    };
+
+    horizon.interpolate = function(x) {
+      if (!arguments.length) return interpolate;
+      interpolate = x + "";
+      return horizon;
+    };
+
+    horizon.x = function(z) {
+      if (!arguments.length) return x;
+      x = z;
+      return horizon;
+    };
+
+    horizon.y = function(z) {
+      if (!arguments.length) return y;
+      y = z;
+      return horizon;
+    };
+
+    horizon.width = function(x) {
+      if (!arguments.length) return w;
+      w = +x;
+      return horizon;
+    };
+
+    horizon.height = function(x) {
+      if (!arguments.length) return h;
+      h = +x;
+      return horizon;
+    };
+
+    return horizon;
+  };
+
+  var d3_horizonArea = d3.svg.area(),
+      d3_horizonId = 0;
+
+  function d3_horizonX(d) {
+    return d[0];
+  }
+
+  function d3_horizonY(d) {
+    return d[1];
+  }
+
+  function d3_horizonTransform(bands, h, mode) {
+    return mode == "offset"
+        ? function(d) { return "translate(0," + (d + (d < 0) - bands) * h + ")"; }
+        : function(d) { return (d < 0 ? "scale(1,-1)" : "") + "translate(0," + (d - bands) * h + ")"; };
+  }
+})();
diff --git a/lib/sankey.js b/lib/sankey.js
new file mode 100644
index 0000000..c3bc59f
--- /dev/null
+++ b/lib/sankey.js
@@ -0,0 +1,292 @@
+d3.sankey = function() {
+  var sankey = {},
+      nodeWidth = 24,
+      nodePadding = 8,
+      size = [1, 1],
+      nodes = [],
+      links = [];
+
+  sankey.nodeWidth = function(_) {
+    if (!arguments.length) return nodeWidth;
+    nodeWidth = +_;
+    return sankey;
+  };
+
+  sankey.nodePadding = function(_) {
+    if (!arguments.length) return nodePadding;
+    nodePadding = +_;
+    return sankey;
+  };
+
+  sankey.nodes = function(_) {
+    if (!arguments.length) return nodes;
+    nodes = _;
+    return sankey;
+  };
+
+  sankey.links = function(_) {
+    if (!arguments.length) return links;
+    links = _;
+    return sankey;
+  };
+
+  sankey.size = function(_) {
+    if (!arguments.length) return size;
+    size = _;
+    return sankey;
+  };
+
+  sankey.layout = function(iterations) {
+    computeNodeLinks();
+    computeNodeValues();
+    computeNodeBreadths();
+    computeNodeDepths(iterations);
+    computeLinkDepths();
+    return sankey;
+  };
+
+  sankey.relayout = function() {
+    computeLinkDepths();
+    return sankey;
+  };
+
+  sankey.link = function() {
+    var curvature = .5;
+
+    function link(d) {
+      var x0 = d.source.x + d.source.dx,
+          x1 = d.target.x,
+          xi = d3.interpolateNumber(x0, x1),
+          x2 = xi(curvature),
+          x3 = xi(1 - curvature),
+          y0 = d.source.y + d.sy + d.dy / 2,
+          y1 = d.target.y + d.ty + d.dy / 2;
+      return "M" + x0 + "," + y0
+           + "C" + x2 + "," + y0
+           + " " + x3 + "," + y1
+           + " " + x1 + "," + y1;
+    }
+
+    link.curvature = function(_) {
+      if (!arguments.length) return curvature;
+      curvature = +_;
+      return link;
+    };
+
+    return link;
+  };
+
+  // Populate the sourceLinks and targetLinks for each node.
+  // Also, if the source and target are not objects, assume they are indices.
+  function computeNodeLinks() {
+    nodes.forEach(function(node) {
+      node.sourceLinks = [];
+      node.targetLinks = [];
+    });
+    links.forEach(function(link) {
+      var source = link.source,
+          target = link.target;
+      if (typeof source === "number") source = link.source = nodes[link.source];
+      if (typeof target === "number") target = link.target = nodes[link.target];
+      source.sourceLinks.push(link);
+      target.targetLinks.push(link);
+    });
+  }
+
+  // Compute the value (size) of each node by summing the associated links.
+  function computeNodeValues() {
+    nodes.forEach(function(node) {
+      node.value = Math.max(
+        d3.sum(node.sourceLinks, value),
+        d3.sum(node.targetLinks, value)
+      );
+    });
+  }
+
+  // Iteratively assign the breadth (x-position) for each node.
+  // Nodes are assigned the maximum breadth of incoming neighbors plus one;
+  // nodes with no incoming links are assigned breadth zero, while
+  // nodes with no outgoing links are assigned the maximum breadth.
+  function computeNodeBreadths() {
+    var remainingNodes = nodes,
+        nextNodes,
+        x = 0;
+
+    while (remainingNodes.length) {
+      nextNodes = [];
+      remainingNodes.forEach(function(node) {
+        node.x = x;
+        node.dx = nodeWidth;
+        node.sourceLinks.forEach(function(link) {
+          nextNodes.push(link.target);
+        });
+      });
+      remainingNodes = nextNodes;
+      ++x;
+    }
+
+    //
+    moveSinksRight(x);
+    scaleNodeBreadths((size[0] - nodeWidth) / (x - 1));
+  }
+
+  function moveSourcesRight() {
+    nodes.forEach(function(node) {
+      if (!node.targetLinks.length) {
+        node.x = d3.min(node.sourceLinks, function(d) { return d.target.x; }) - 1;
+      }
+    });
+  }
+
+  function moveSinksRight(x) {
+    nodes.forEach(function(node) {
+      if (!node.sourceLinks.length) {
+        node.x = x - 1;
+      }
+    });
+  }
+
+  function scaleNodeBreadths(kx) {
+    nodes.forEach(function(node) {
+      node.x *= kx;
+    });
+  }
+
+  function computeNodeDepths(iterations) {
+    var nodesByBreadth = d3.nest()
+        .key(function(d) { return d.x; })
+        .sortKeys(d3.ascending)
+        .entries(nodes)
+        .map(function(d) { return d.values; });
+
+    //
+    initializeNodeDepth();
+    resolveCollisions();
+    for (var alpha = 1; iterations > 0; --iterations) {
+      relaxRightToLeft(alpha *= .99);
+      resolveCollisions();
+      relaxLeftToRight(alpha);
+      resolveCollisions();
+    }
+
+    function initializeNodeDepth() {
+      var ky = d3.min(nodesByBreadth, function(nodes) {
+        return (size[1] - (nodes.length - 1) * nodePadding) / d3.sum(nodes, value);
+      });
+
+      nodesByBreadth.forEach(function(nodes) {
+        nodes.forEach(function(node, i) {
+          node.y = i;
+          node.dy = node.value * ky;
+        });
+      });
+
+      links.forEach(function(link) {
+        link.dy = link.value * ky;
+      });
+    }
+
+    function relaxLeftToRight(alpha) {
+      nodesByBreadth.forEach(function(nodes, breadth) {
+        nodes.forEach(function(node) {
+          if (node.targetLinks.length) {
+            var y = d3.sum(node.targetLinks, weightedSource) / d3.sum(node.targetLinks, value);
+            node.y += (y - center(node)) * alpha;
+          }
+        });
+      });
+
+      function weightedSource(link) {
+        return center(link.source) * link.value;
+      }
+    }
+
+    function relaxRightToLeft(alpha) {
+      nodesByBreadth.slice().reverse().forEach(function(nodes) {
+        nodes.forEach(function(node) {
+          if (node.sourceLinks.length) {
+            var y = d3.sum(node.sourceLinks, weightedTarget) / d3.sum(node.sourceLinks, value);
+            node.y += (y - center(node)) * alpha;
+          }
+        });
+      });
+
+      function weightedTarget(link) {
+        return center(link.target) * link.value;
+      }
+    }
+
+    function resolveCollisions() {
+      nodesByBreadth.forEach(function(nodes) {
+        var node,
+            dy,
+            y0 = 0,
+            n = nodes.length,
+            i;
+
+        // Push any overlapping nodes down.
+        nodes.sort(ascendingDepth);
+        for (i = 0; i < n; ++i) {
+          node = nodes[i];
+          dy = y0 - node.y;
+          if (dy > 0) node.y += dy;
+          y0 = node.y + node.dy + nodePadding;
+        }
+
+        // If the bottommost node goes outside the bounds, push it back up.
+        dy = y0 - nodePadding - size[1];
+        if (dy > 0) {
+          y0 = node.y -= dy;
+
+          // Push any overlapping nodes back up.
+          for (i = n - 2; i >= 0; --i) {
+            node = nodes[i];
+            dy = node.y + node.dy + nodePadding - y0;
+            if (dy > 0) node.y -= dy;
+            y0 = node.y;
+          }
+        }
+      });
+    }
+
+    function ascendingDepth(a, b) {
+      return a.y - b.y;
+    }
+  }
+
+  function computeLinkDepths() {
+    nodes.forEach(function(node) {
+      node.sourceLinks.sort(ascendingTargetDepth);
+      node.targetLinks.sort(ascendingSourceDepth);
+    });
+    nodes.forEach(function(node) {
+      var sy = 0, ty = 0;
+      node.sourceLinks.forEach(function(link) {
+        link.sy = sy;
+        sy += link.dy;
+      });
+      node.targetLinks.forEach(function(link) {
+        link.ty = ty;
+        ty += link.dy;
+      });
+    });
+
+    function ascendingSourceDepth(a, b) {
+      return a.source.y - b.source.y;
+    }
+
+    function ascendingTargetDepth(a, b) {
+      return a.target.y - b.target.y;
+    }
+  }
+
+  function center(node) {
+    return node.y + node.dy / 2;
+  }
+
+  function value(link) {
+    return link.value;
+  }
+
+  return sankey;
+};
diff --git a/nv.d3.css b/nv.d3.css
new file mode 100644
index 0000000..cae8348
--- /dev/null
+++ b/nv.d3.css
@@ -0,0 +1,769 @@
+
+/********************
+ * HTML CSS
+ */
+
+
+.chartWrap {
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+
+/********************
+  Box shadow and border radius styling
+*/
+.nvtooltip.with-3d-shadow, .with-3d-shadow .nvtooltip {
+  -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+  box-shadow: 0 5px 10px rgba(0,0,0,.2);
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+
+/********************
+ * TOOLTIP CSS
+ */
+
+.nvtooltip {
+  position: absolute;
+  background-color: rgba(255,255,255,1.0);
+  padding: 1px;
+  border: 1px solid rgba(0,0,0,.2);
+  z-index: 10000;
+
+  font-family: Arial;
+  font-size: 13px;
+  text-align: left;
+  pointer-events: none;
+
+  white-space: nowrap;
+
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+/*Give tooltips that old fade in transition by
+    putting a "with-transitions" class on the container div.
+*/
+.nvtooltip.with-transitions, .with-transitions .nvtooltip {
+  transition: opacity 250ms linear;
+  -moz-transition: opacity 250ms linear;
+  -webkit-transition: opacity 250ms linear;
+
+  transition-delay: 250ms;
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+}
+
+.nvtooltip.x-nvtooltip,
+.nvtooltip.y-nvtooltip {
+  padding: 8px;
+}
+
+.nvtooltip h3 {
+  margin: 0;
+  padding: 4px 14px;
+  line-height: 18px;
+  font-weight: normal;
+  background-color: rgba(247,247,247,0.75);
+  text-align: center;
+
+  border-bottom: 1px solid #ebebeb;
+
+  -webkit-border-radius: 5px 5px 0 0;
+  -moz-border-radius: 5px 5px 0 0;
+  border-radius: 5px 5px 0 0;
+}
+
+.nvtooltip p {
+  margin: 0;
+  padding: 5px 14px;
+  text-align: center;
+}
+
+.nvtooltip span {
+  display: inline-block;
+  margin: 2px 0;
+}
+
+.nvtooltip table {
+  margin: 6px;
+  border-spacing:0;
+}
+
+
+.nvtooltip table td {
+  padding: 2px 9px 2px 0;
+  vertical-align: middle;
+}
+
+.nvtooltip table td.key {
+  font-weight:normal;
+}
+.nvtooltip table td.value {
+  text-align: right;
+  font-weight: bold;
+}
+
+.nvtooltip table tr.highlight td {
+  padding: 1px 9px 1px 0;
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  border-top-style: solid;
+  border-top-width: 1px;
+}
+
+.nvtooltip table td.legend-color-guide div {
+  width: 8px;
+  height: 8px;
+  vertical-align: middle;
+}
+
+.nvtooltip .footer {
+  padding: 3px;
+  text-align: center;
+}
+
+
+.nvtooltip-pending-removal {
+  position: absolute;
+  pointer-events: none;
+}
+
+
+/********************
+ * SVG CSS
+ */
+
+
+svg {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  /* Trying to get SVG to act like a greedy block in all browsers */
+  display: block;
+  width:100%;
+  height:100%;
+}
+
+
+svg text {
+  font: normal 12px Arial;
+}
+
+svg .title {
+ font: bold 14px Arial;
+}
+
+.nvd3 .nv-background {
+  fill: white;
+  fill-opacity: 0;
+  /*
+  pointer-events: none;
+  */
+}
+
+.nvd3.nv-noData {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+
+/**********
+*  Brush
+*/
+
+.nv-brush .extent {
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+
+
+/**********
+*  Legend
+*/
+
+.nvd3 .nv-legend .nv-series {
+  cursor: pointer;
+}
+
+.nvd3 .nv-legend .disabled circle {
+  fill-opacity: 0;
+}
+
+
+
+/**********
+*  Axes
+*/
+.nvd3 .nv-axis {
+  pointer-events:none;
+}
+
+.nvd3 .nv-axis path {
+  fill: none;
+  stroke: #000;
+  stroke-opacity: .75;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .nv-axis path.domain {
+  stroke-opacity: .75;
+}
+
+.nvd3 .nv-axis.nv-x path.domain {
+  stroke-opacity: 0;
+}
+
+.nvd3 .nv-axis line {
+  fill: none;
+  stroke: #e5e5e5;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .nv-axis .zero line,
+/*this selector may not be necessary*/ .nvd3 .nv-axis line.zero {
+  stroke-opacity: .75;
+}
+
+.nvd3 .nv-axis .nv-axisMaxMin text {
+  font-weight: bold;
+}
+
+.nvd3 .x  .nv-axis .nv-axisMaxMin text,
+.nvd3 .x2 .nv-axis .nv-axisMaxMin text,
+.nvd3 .x3 .nv-axis .nv-axisMaxMin text {
+  text-anchor: middle
+}
+
+
+
+/**********
+*  Brush
+*/
+
+.nv-brush .resize path {
+  fill: #eee;
+  stroke: #666;
+}
+
+
+
+/**********
+*  Bars
+*/
+
+.nvd3 .nv-bars .negative rect {
+    zfill: brown;
+}
+
+.nvd3 .nv-bars rect {
+  zfill: steelblue;
+  fill-opacity: .75;
+
+  transition: fill-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .nv-bars rect.hover {
+  fill-opacity: 1;
+}
+
+.nvd3 .nv-bars .hover rect {
+  fill: lightblue;
+}
+
+.nvd3 .nv-bars text {
+  fill: rgba(0,0,0,0);
+}
+
+.nvd3 .nv-bars .hover text {
+  fill: rgba(0,0,0,1);
+}
+
+
+/**********
+*  Bars
+*/
+
+.nvd3 .nv-multibar .nv-groups rect,
+.nvd3 .nv-multibarHorizontal .nv-groups rect,
+.nvd3 .nv-discretebar .nv-groups rect {
+  stroke-opacity: 0;
+
+  transition: fill-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .nv-multibar .nv-groups rect:hover,
+.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,
+.nvd3 .nv-discretebar .nv-groups rect:hover {
+  fill-opacity: 1;
+}
+
+.nvd3 .nv-discretebar .nv-groups text,
+.nvd3 .nv-multibarHorizontal .nv-groups text {
+  font-weight: bold;
+  fill: rgba(0,0,0,1);
+  stroke: rgba(0,0,0,0);
+}
+
+/***********
+*  Pie Chart
+*/
+
+.nvd3.nv-pie path {
+  stroke-opacity: 0;
+  transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+
+}
+
+.nvd3.nv-pie .nv-slice text {
+  stroke: #000;
+  stroke-width: 0;
+}
+
+.nvd3.nv-pie path {
+  stroke: #fff;
+  stroke-width: 1px;
+  stroke-opacity: 1;
+}
+
+.nvd3.nv-pie .hover path {
+  fill-opacity: .7;
+}
+.nvd3.nv-pie .nv-label {
+  pointer-events: none;
+}
+.nvd3.nv-pie .nv-label rect {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+/**********
+* Lines
+*/
+
+.nvd3 .nv-groups path.nv-line {
+  fill: none;
+  stroke-width: 1.5px;
+  /*
+  stroke-linecap: round;
+  shape-rendering: geometricPrecision;
+
+  transition: stroke-width 250ms linear;
+  -moz-transition: stroke-width 250ms linear;
+  -webkit-transition: stroke-width 250ms linear;
+
+  transition-delay: 250ms
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+  */
+}
+
+.nvd3 .nv-groups path.nv-line.nv-thin-line {
+  stroke-width: 1px;
+}
+
+
+.nvd3 .nv-groups path.nv-area {
+  stroke: none;
+  /*
+  stroke-linecap: round;
+  shape-rendering: geometricPrecision;
+
+  stroke-width: 2.5px;
+  transition: stroke-width 250ms linear;
+  -moz-transition: stroke-width 250ms linear;
+  -webkit-transition: stroke-width 250ms linear;
+
+  transition-delay: 250ms
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+  */
+}
+
+.nvd3 .nv-line.hover path {
+  stroke-width: 6px;
+}
+
+/*
+.nvd3.scatter .groups .point {
+  fill-opacity: 0.1;
+  stroke-opacity: 0.1;
+}
+  */
+
+.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point {
+  fill-opacity: .5 !important;
+  stroke-opacity: .5 !important;
+}
+
+
+.with-transitions .nvd3 .nv-groups .nv-point {
+  transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+
+}
+
+.nvd3.nv-scatter .nv-groups .nv-point.hover,
+.nvd3 .nv-groups .nv-point.hover {
+  stroke-width: 7px;
+  fill-opacity: .95 !important;
+  stroke-opacity: .95 !important;
+}
+
+
+.nvd3 .nv-point-paths path {
+  stroke: #aaa;
+  stroke-opacity: 0;
+  fill: #eee;
+  fill-opacity: 0;
+}
+
+
+
+.nvd3 .nv-indexLine {
+  cursor: ew-resize;
+}
+
+
+/**********
+* Distribution
+*/
+
+.nvd3 .nv-distribution {
+  pointer-events: none;
+}
+
+
+
+/**********
+*  Scatter
+*/
+
+/* **Attempting to remove this for useVoronoi(false), need to see if it's required anywhere
+.nvd3 .nv-groups .nv-point {
+  pointer-events: none;
+}
+*/
+
+.nvd3 .nv-groups .nv-point.hover {
+  stroke-width: 20px;
+  stroke-opacity: .5;
+}
+
+.nvd3 .nv-scatter .nv-point.hover {
+  fill-opacity: 1;
+}
+
+/*
+.nv-group.hover .nv-point {
+  fill-opacity: 1;
+}
+*/
+
+
+/**********
+*  Stacked Area
+*/
+
+.nvd3.nv-stackedarea path.nv-area {
+  fill-opacity: .7;
+  /*
+  stroke-opacity: .65;
+  fill-opacity: 1;
+  */
+  stroke-opacity: 0;
+
+  transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+
+  /*
+  transition-delay: 500ms;
+  -moz-transition-delay: 500ms;
+  -webkit-transition-delay: 500ms;
+  */
+
+}
+
+.nvd3.nv-stackedarea path.nv-area.hover {
+  fill-opacity: .9;
+  /*
+  stroke-opacity: .85;
+  */
+}
+/*
+.d3stackedarea .groups path {
+  stroke-opacity: 0;
+}
+  */
+
+
+
+.nvd3.nv-stackedarea .nv-groups .nv-point {
+  stroke-opacity: 0;
+  fill-opacity: 0;
+}
+
+/*
+.nvd3.nv-stackedarea .nv-groups .nv-point.hover {
+  stroke-width: 20px;
+  stroke-opacity: .75;
+  fill-opacity: 1;
+}*/
+
+
+
+/**********
+*  Line Plus Bar
+*/
+
+.nvd3.nv-linePlusBar .nv-bar rect {
+  fill-opacity: .75;
+}
+
+.nvd3.nv-linePlusBar .nv-bar rect:hover {
+  fill-opacity: 1;
+}
+
+
+/**********
+*  Bullet
+*/
+
+.nvd3.nv-bullet { font: 10px sans-serif; }
+.nvd3.nv-bullet .nv-measure { fill-opacity: .8; }
+.nvd3.nv-bullet .nv-measure:hover { fill-opacity: 1; }
+.nvd3.nv-bullet .nv-marker { stroke: #000; stroke-width: 2px; }
+.nvd3.nv-bullet .nv-markerTriangle { stroke: #000; fill: #fff; stroke-width: 1.5px; }
+.nvd3.nv-bullet .nv-tick line { stroke: #666; stroke-width: .5px; }
+.nvd3.nv-bullet .nv-range.nv-s0 { fill: #eee; }
+.nvd3.nv-bullet .nv-range.nv-s1 { fill: #ddd; }
+.nvd3.nv-bullet .nv-range.nv-s2 { fill: #ccc; }
+.nvd3.nv-bullet .nv-title { font-size: 14px; font-weight: bold; }
+.nvd3.nv-bullet .nv-subtitle { fill: #999; }
+
+
+.nvd3.nv-bullet .nv-range {
+  fill: #bababa;
+  fill-opacity: .4;
+}
+.nvd3.nv-bullet .nv-range:hover {
+  fill-opacity: .7;
+}
+
+
+
+/**********
+* Sparkline
+*/
+
+.nvd3.nv-sparkline path {
+  fill: none;
+}
+
+.nvd3.nv-sparklineplus g.nv-hoverValue {
+  pointer-events: none;
+}
+
+.nvd3.nv-sparklineplus .nv-hoverValue line {
+  stroke: #333;
+  stroke-width: 1.5px;
+ }
+
+.nvd3.nv-sparklineplus,
+.nvd3.nv-sparklineplus g {
+  pointer-events: all;
+}
+
+.nvd3 .nv-hoverArea {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+.nvd3.nv-sparklineplus .nv-xValue,
+.nvd3.nv-sparklineplus .nv-yValue {
+  /*
+  stroke: #666;
+  */
+  stroke-width: 0;
+  font-size: .9em;
+  font-weight: normal;
+}
+
+.nvd3.nv-sparklineplus .nv-yValue {
+  stroke: #f66;
+}
+
+.nvd3.nv-sparklineplus .nv-maxValue {
+  stroke: #2ca02c;
+  fill: #2ca02c;
+}
+
+.nvd3.nv-sparklineplus .nv-minValue {
+  stroke: #d62728;
+  fill: #d62728;
+}
+
+.nvd3.nv-sparklineplus .nv-currentValue {
+  /*
+  stroke: #444;
+  fill: #000;
+  */
+  font-weight: bold;
+  font-size: 1.1em;
+}
+
+/**********
+* historical stock
+*/
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick {
+  stroke-width: 2px;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover {
+  stroke-width: 4px;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive {
+ stroke: #2ca02c;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative {
+ stroke: #d62728;
+}
+
+.nvd3.nv-historicalStockChart .nv-axis .nv-axislabel {
+  font-weight: bold;
+}
+
+.nvd3.nv-historicalStockChart .nv-dragTarget {
+  fill-opacity: 0;
+  stroke: none;
+  cursor: move;
+}
+
+.nvd3 .nv-brush .extent {
+  /*
+  cursor: ew-resize !important;
+  */
+  fill-opacity: 0 !important;
+}
+
+.nvd3 .nv-brushBackground rect {
+  stroke: #000;
+  stroke-width: .4;
+  fill: #fff;
+  fill-opacity: .7;
+}
+
+
+
+/**********
+* Indented Tree
+*/
+
+
+/**
+ * TODO: the following 3 selectors are based on classes used in the example.  I should either make them standard and leave them here, or move to a CSS file not included in the library
+ */
+.nvd3.nv-indentedtree .name {
+  margin-left: 5px;
+}
+
+.nvd3.nv-indentedtree .clickable {
+  color: #08C;
+  cursor: pointer;
+}
+
+.nvd3.nv-indentedtree span.clickable:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+
+
+.nvd3.nv-indentedtree .nv-childrenCount {
+  display: inline-block;
+  margin-left: 5px;
+}
+
+.nvd3.nv-indentedtree .nv-treeicon {
+  cursor: pointer;
+  /*
+  cursor: n-resize;
+  */
+}
+
+.nvd3.nv-indentedtree .nv-treeicon.nv-folded {
+  cursor: pointer;
+  /*
+  cursor: s-resize;
+  */
+}
+
+/**********
+* Parallel Coordinates
+*/
+
+.nvd3 .background path {
+  fill: none;
+  stroke: #ccc;
+  stroke-opacity: .4;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .foreground path {
+  fill: none;
+  stroke: steelblue;
+  stroke-opacity: .7;
+}
+
+.nvd3 .brush .extent {
+  fill-opacity: .3;
+  stroke: #fff;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .axis line, .axis path {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .axis text {
+  text-shadow: 0 1px 0 #fff;
+}
+
+/****
+Interactive Layer
+*/
+.nvd3 .nv-interactiveGuideLine {
+  pointer-events:none;
+}
+.nvd3 line.nv-guideline {
+  stroke: #ccc;
+}
\ No newline at end of file
diff --git a/nv.d3.js b/nv.d3.js
new file mode 100644
index 0000000..69063b0
--- /dev/null
+++ b/nv.d3.js
@@ -0,0 +1,15971 @@
+(function(){
+
+var nv = window.nv || {};
+
+
+nv.version = '1.1.15b';
+nv.dev = true //set false when in production
+
+window.nv = nv;
+
+nv.tooltip = nv.tooltip || {}; // For the tooltip system
+nv.utils = nv.utils || {}; // Utility subsystem
+nv.models = nv.models || {}; //stores all the possible models/components
+nv.charts = {}; //stores all the ready to use charts
+nv.graphs = []; //stores all the graphs currently on the page
+nv.logs = {}; //stores some statistics and potential error messages
+
+nv.dispatch = d3.dispatch('render_start', 'render_end');
+
+// *************************************************************************
+//  Development render timers - disabled if dev = false
+
+if (nv.dev) {
+  nv.dispatch.on('render_start', function(e) {
+    nv.logs.startTime = +new Date();
+  });
+
+  nv.dispatch.on('render_end', function(e) {
+    nv.logs.endTime = +new Date();
+    nv.logs.totalTime = nv.logs.endTime - nv.logs.startTime;
+    nv.log('total', nv.logs.totalTime); // used for development, to keep track of graph generation times
+  });
+}
+
+// ********************************************
+//  Public Core NV functions
+
+// Logs all arguments, and returns the last so you can test things in place
+// Note: in IE8 console.log is an object not a function, and if modernizr is used
+// then calling Function.prototype.bind with with anything other than a function
+// causes a TypeError to be thrown.
+nv.log = function() {
+  if (nv.dev && console.log && console.log.apply)
+    console.log.apply(console, arguments)
+  else if (nv.dev && typeof console.log == "function" && Function.prototype.bind) {
+    var log = Function.prototype.bind.call(console.log, console);
+    log.apply(console, arguments);
+  }
+  return arguments[arguments.length - 1];
+};
+
+
+nv.render = function render(step) {
+  step = step || 1; // number of graphs to generate in each timeout loop
+
+  nv.render.active = true;
+  nv.dispatch.render_start();
+
+  setTimeout(function() {
+    var chart, graph;
+
+    for (var i = 0; i < step && (graph = nv.render.queue[i]); i++) {
+      chart = graph.generate();
+      if (typeof graph.callback == typeof(Function)) graph.callback(chart);
+      nv.graphs.push(chart);
+    }
+
+    nv.render.queue.splice(0, i);
+
+    if (nv.render.queue.length) setTimeout(arguments.callee, 0);
+    else {
+      nv.dispatch.render_end();
+      nv.render.active = false;
+    }
+  }, 0);
+};
+
+nv.render.active = false;
+nv.render.queue = [];
+
+nv.addGraph = function(obj) {
+  if (typeof arguments[0] === typeof(Function))
+    obj = {generate: arguments[0], callback: arguments[1]};
+
+  nv.render.queue.push(obj);
+
+  if (!nv.render.active) nv.render();
+};
+
+nv.identity = function(d) { return d; };
+
+nv.strip = function(s) { return s.replace(/(\s|&)/g,''); };
+
+function daysInMonth(month,year) {
+  return (new Date(year, month+1, 0)).getDate();
+}
+
+function d3_time_range(floor, step, number) {
+  return function(t0, t1, dt) {
+    var time = floor(t0), times = [];
+    if (time < t0) step(time);
+    if (dt > 1) {
+      while (time < t1) {
+        var date = new Date(+time);
+        if ((number(date) % dt === 0)) times.push(date);
+        step(time);
+      }
+    } else {
+      while (time < t1) { times.push(new Date(+time)); step(time); }
+    }
+    return times;
+  };
+}
+
+d3.time.monthEnd = function(date) {
+  return new Date(date.getFullYear(), date.getMonth(), 0);
+};
+
+d3.time.monthEnds = d3_time_range(d3.time.monthEnd, function(date) {
+    date.setUTCDate(date.getUTCDate() + 1);
+    date.setDate(daysInMonth(date.getMonth() + 1, date.getFullYear()));
+  }, function(date) {
+    return date.getMonth();
+  }
+);
+
+/* Utility class to handle creation of an interactive layer.
+This places a rectangle on top of the chart. When you mouse move over it, it sends a dispatch
+containing the X-coordinate. It can also render a vertical line where the mouse is located.
+
+dispatch.elementMousemove is the important event to latch onto.  It is fired whenever the mouse moves over
+the rectangle. The dispatch is given one object which contains the mouseX/Y location.
+It also has 'pointXValue', which is the conversion of mouseX to the x-axis scale.
+*/
+nv.interactiveGuideline = function() {
+	"use strict";
+	var tooltip = nv.models.tooltip();
+	//Public settings
+	var width = null
+	, height = null
+    //Please pass in the bounding chart's top and left margins
+    //This is important for calculating the correct mouseX/Y positions.
+	, margin = {left: 0, top: 0}
+	, xScale = d3.scale.linear()
+	, yScale = d3.scale.linear()
+	, dispatch = d3.dispatch('elementMousemove', 'elementMouseout','elementDblclick')
+	, showGuideLine = true
+	, svgContainer = null  
+    //Must pass in the bounding chart's <svg> container.
+    //The mousemove event is attached to this container.
+	;
+
+	//Private variables
+	var isMSIE = navigator.userAgent.indexOf("MSIE") !== -1  //Check user-agent for Microsoft Internet Explorer.
+	;
+
+
+	function layer(selection) {
+		selection.each(function(data) {
+				var container = d3.select(this);
+				
+				var availableWidth = (width || 960), availableHeight = (height || 400);
+
+				var wrap = container.selectAll("g.nv-wrap.nv-interactiveLineLayer").data([data]);
+				var wrapEnter = wrap.enter()
+								.append("g").attr("class", " nv-wrap nv-interactiveLineLayer");
+								
+				
+				wrapEnter.append("g").attr("class","nv-interactiveGuideLine");
+				
+				if (!svgContainer) {
+					return;
+				}
+
+                function mouseHandler() {
+                      var d3mouse = d3.mouse(this);
+                      var mouseX = d3mouse[0];
+                      var mouseY = d3mouse[1];
+                      var subtractMargin = true;
+                      var mouseOutAnyReason = false;
+                      if (isMSIE) {
+                         /*
+                            D3.js (or maybe SVG.getScreenCTM) has a nasty bug in Internet Explorer 10.
+                            d3.mouse() returns incorrect X,Y mouse coordinates when mouse moving
+                            over a rect in IE 10.
+                            However, d3.event.offsetX/Y also returns the mouse coordinates
+                            relative to the triggering <rect>. So we use offsetX/Y on IE.  
+                         */
+                         mouseX = d3.event.offsetX;
+                         mouseY = d3.event.offsetY;
+
+                         /*
+                            On IE, if you attach a mouse event listener to the <svg> container,
+                            it will actually trigger it for all the child elements (like <path>, <circle>, etc).
+                            When this happens on IE, the offsetX/Y is set to where ever the child element
+                            is located.
+                            As a result, we do NOT need to subtract margins to figure out the mouse X/Y
+                            position under this scenario. Removing the line below *will* cause 
+                            the interactive layer to not work right on IE.
+                         */
+                         if(d3.event.target.tagName !== "svg")
+                            subtractMargin = false;
+
+                         if (d3.event.target.className.baseVal.match("nv-legend"))
+                         	mouseOutAnyReason = true;
+                          
+                      }
+
+                      if(subtractMargin) {
+                         mouseX -= margin.left;
+                         mouseY -= margin.top;
+                      }
+
+                      /* If mouseX/Y is outside of the chart's bounds,
+                      trigger a mouseOut event.
+                      */
+                      if (mouseX < 0 || mouseY < 0 
+                        || mouseX > availableWidth || mouseY > availableHeight
+                        || (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined)
+                        || mouseOutAnyReason
+                        ) 
+                      {
+                      		if (isMSIE) {
+                      			if (d3.event.relatedTarget 
+                      				&& d3.event.relatedTarget.ownerSVGElement === undefined
+                      				&& d3.event.relatedTarget.className.match(tooltip.nvPointerEventsClass)) {
+                      				return;
+                      			}
+                      		}
+                            dispatch.elementMouseout({
+                               mouseX: mouseX,
+                               mouseY: mouseY
+                            });
+                            layer.renderGuideLine(null); //hide the guideline
+                            return;
+                      }
+                      
+                      var pointXValue = xScale.invert(mouseX);
+                      dispatch.elementMousemove({
+                            mouseX: mouseX,
+                            mouseY: mouseY,
+                            pointXValue: pointXValue
+                      });
+
+                      //If user double clicks the layer, fire a elementDblclick dispatch.
+                      if (d3.event.type === "dblclick") {
+                        dispatch.elementDblclick({
+                            mouseX: mouseX,
+                            mouseY: mouseY,
+                            pointXValue: pointXValue
+                        });
+                      }
+                }
+
+				svgContainer
+				      .on("mousemove",mouseHandler, true)
+				      .on("mouseout" ,mouseHandler,true)
+                      .on("dblclick" ,mouseHandler)
+				      ;
+
+				 //Draws a vertical guideline at the given X postion.
+				layer.renderGuideLine = function(x) {
+				 	if (!showGuideLine) return;
+				 	var line = wrap.select(".nv-interactiveGuideLine")
+				 	      .selectAll("line")
+				 	      .data((x != null) ? [nv.utils.NaNtoZero(x)] : [], String);
+
+				 	line.enter()
+				 		.append("line")
+				 		.attr("class", "nv-guideline")
+				 		.attr("x1", function(d) { return d;})
+				 		.attr("x2", function(d) { return d;})
+				 		.attr("y1", availableHeight)
+				 		.attr("y2",0)
+				 		;
+				 	line.exit().remove();
+
+				}
+		});
+	}
+
+	layer.dispatch = dispatch;
+	layer.tooltip = tooltip;
+
+	layer.margin = function(_) {
+	    if (!arguments.length) return margin;
+	    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+	    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+	    return layer;
+    };
+
+	layer.width = function(_) {
+		if (!arguments.length) return width;
+		width = _;
+		return layer;
+	};
+
+	layer.height = function(_) {
+		if (!arguments.length) return height;
+		height = _;
+		return layer;
+	};
+
+	layer.xScale = function(_) {
+		if (!arguments.length) return xScale;
+		xScale = _;
+		return layer;
+	};
+
+	layer.showGuideLine = function(_) {
+		if (!arguments.length) return showGuideLine;
+		showGuideLine = _;
+		return layer;
+	};
+
+	layer.svgContainer = function(_) {
+		if (!arguments.length) return svgContainer;
+		svgContainer = _;
+		return layer;
+	};
+
+
+	return layer;
+};
+
+/* Utility class that uses d3.bisect to find the index in a given array, where a search value can be inserted.
+This is different from normal bisectLeft; this function finds the nearest index to insert the search value.
+
+For instance, lets say your array is [1,2,3,5,10,30], and you search for 28. 
+Normal d3.bisectLeft will return 4, because 28 is inserted after the number 10.  But interactiveBisect will return 5
+because 28 is closer to 30 than 10.
+
+Unit tests can be found in: interactiveBisectTest.html
+
+Has the following known issues:
+   * Will not work if the data points move backwards (ie, 10,9,8,7, etc) or if the data points are in random order.
+   * Won't work if there are duplicate x coordinate values.
+*/
+nv.interactiveBisect = function (values, searchVal, xAccessor) {
+	  "use strict";
+      if (! values instanceof Array) return null;
+      if (typeof xAccessor !== 'function') xAccessor = function(d,i) { return d.x;}
+
+      var bisect = d3.bisector(xAccessor).left;
+      var index = d3.max([0, bisect(values,searchVal) - 1]);
+      var currentValue = xAccessor(values[index], index);
+      if (typeof currentValue === 'undefined') currentValue = index;
+
+      if (currentValue === searchVal) return index;  //found exact match
+
+      var nextIndex = d3.min([index+1, values.length - 1]);
+      var nextValue = xAccessor(values[nextIndex], nextIndex);
+      if (typeof nextValue === 'undefined') nextValue = nextIndex;
+
+      if (Math.abs(nextValue - searchVal) >= Math.abs(currentValue - searchVal))
+          return index;
+      else
+          return nextIndex
+};
+
+/*
+Returns the index in the array "values" that is closest to searchVal.
+Only returns an index if searchVal is within some "threshold".
+Otherwise, returns null.
+*/
+nv.nearestValueIndex = function (values, searchVal, threshold) {
+      "use strict";
+      var yDistMax = Infinity, indexToHighlight = null;
+      values.forEach(function(d,i) {
+         var delta = Math.abs(searchVal - d);
+         if ( delta <= yDistMax && delta < threshold) {
+            yDistMax = delta;
+            indexToHighlight = i;
+         }
+      });
+      return indexToHighlight;
+};/* Tooltip rendering model for nvd3 charts.
+window.nv.models.tooltip is the updated,new way to render tooltips.
+
+window.nv.tooltip.show is the old tooltip code.
+window.nv.tooltip.* also has various helper methods.
+*/
+(function() {
+  "use strict";
+  window.nv.tooltip = {};
+
+  /* Model which can be instantiated to handle tooltip rendering.
+    Example usage: 
+    var tip = nv.models.tooltip().gravity('w').distance(23)
+                .data(myDataObject);
+
+        tip();    //just invoke the returned function to render tooltip.
+  */
+  window.nv.models.tooltip = function() {
+        var content = null    //HTML contents of the tooltip.  If null, the content is generated via the data variable.
+        ,   data = null     /* Tooltip data. If data is given in the proper format, a consistent tooltip is generated.
+        Format of data:
+        {
+            key: "Date",
+            value: "August 2009", 
+            series: [
+                    {
+                        key: "Series 1",
+                        value: "Value 1",
+                        color: "#000"
+                    },
+                    {
+                        key: "Series 2",
+                        value: "Value 2",
+                        color: "#00f"
+                    }
+            ]
+
+        }
+
+        */
+        ,   gravity = 'w'   //Can be 'n','s','e','w'. Determines how tooltip is positioned.
+        ,   distance = 50   //Distance to offset tooltip from the mouse location.
+        ,   snapDistance = 25   //Tolerance allowed before tooltip is moved from its current position (creates 'snapping' effect)
+        ,   fixedTop = null //If not null, this fixes the top position of the tooltip.
+        ,   classes = null  //Attaches additional CSS classes to the tooltip DIV that is created.
+        ,   chartContainer = null   //Parent DIV, of the SVG Container that holds the chart.
+        ,   tooltipElem = null  //actual DOM element representing the tooltip.
+        ,   position = {left: null, top: null}      //Relative position of the tooltip inside chartContainer.
+        ,   enabled = true  //True -> tooltips are rendered. False -> don't render tooltips.
+        //Generates a unique id when you create a new tooltip() object
+        ,   id = "nvtooltip-" + Math.floor(Math.random() * 100000)
+        ;
+
+        //CSS class to specify whether element should not have mouse events.
+        var  nvPointerEventsClass = "nv-pointer-events-none";
+
+        //Format function for the tooltip values column
+        var valueFormatter = function(d,i) {
+            return d;
+        };
+
+        //Format function for the tooltip header value.
+        var headerFormatter = function(d) {
+            return d;
+        };
+
+        //By default, the tooltip model renders a beautiful table inside a DIV.
+        //You can override this function if a custom tooltip is desired.
+        var contentGenerator = function(d) {
+            if (content != null) return content;
+
+            if (d == null) return '';
+
+            var table = d3.select(document.createElement("table"));
+            var theadEnter = table.selectAll("thead")
+                .data([d])
+                .enter().append("thead");
+            theadEnter.append("tr")
+                .append("td")
+                .attr("colspan",3)
+                .append("strong")
+                    .classed("x-value",true)
+                    .html(headerFormatter(d.value));
+
+            var tbodyEnter = table.selectAll("tbody")
+                .data([d])
+                .enter().append("tbody");
+            var trowEnter = tbodyEnter.selectAll("tr")
+                .data(function(p) { return p.series})
+                .enter()
+                .append("tr")
+                .classed("highlight", function(p) { return p.highlight})
+                ;
+
+            trowEnter.append("td")
+                .classed("legend-color-guide",true)
+                .append("div")
+                    .style("background-color", function(p) { return p.color});
+            trowEnter.append("td")
+                .classed("key",true)
+                .html(function(p) {return p.key});
+            trowEnter.append("td")
+                .classed("value",true)
+                .html(function(p,i) { return valueFormatter(p.value,i) });
+
+
+            trowEnter.selectAll("td").each(function(p) {
+                if (p.highlight) {
+                    var opacityScale = d3.scale.linear().domain([0,1]).range(["#fff",p.color]);
+                    var opacity = 0.6;
+                    d3.select(this)
+                        .style("border-bottom-color", opacityScale(opacity))
+                        .style("border-top-color", opacityScale(opacity))
+                        ;
+                }
+            });
+
+            var html = table.node().outerHTML;
+            if (d.footer !== undefined)
+                html += "<div class='footer'>" + d.footer + "</div>";
+            return html;
+
+        };
+
+        var dataSeriesExists = function(d) {
+            if (d && d.series && d.series.length > 0) return true;
+
+            return false;
+        };
+
+        //In situations where the chart is in a 'viewBox', re-position the tooltip based on how far chart is zoomed.
+        function convertViewBoxRatio() {
+            if (chartContainer) {
+              var svg = d3.select(chartContainer);
+              if (svg.node().tagName !== "svg") {
+                 svg = svg.select("svg");
+              }
+              var viewBox = (svg.node()) ? svg.attr('viewBox') : null;
+              if (viewBox) {
+                viewBox = viewBox.split(' ');
+                var ratio = parseInt(svg.style('width')) / viewBox[2];
+                
+                position.left = position.left * ratio;
+                position.top  = position.top * ratio;
+              }
+            }
+        }
+
+        //Creates new tooltip container, or uses existing one on DOM.
+        function getTooltipContainer(newContent) {
+            var body;
+            if (chartContainer)
+                body = d3.select(chartContainer);
+            else
+                body = d3.select("body");
+
+            var container = body.select(".nvtooltip");
+            if (container.node() === null) {
+                //Create new tooltip div if it doesn't exist on DOM.
+                container = body.append("div")
+                    .attr("class", "nvtooltip " + (classes? classes: "xy-tooltip"))
+                    .attr("id",id)
+                    ;
+            }
+        
+
+            container.node().innerHTML = newContent;
+            container.style("top",0).style("left",0).style("opacity",0);
+            container.selectAll("div, table, td, tr").classed(nvPointerEventsClass,true)
+            container.classed(nvPointerEventsClass,true);
+            return container.node();
+        }
+
+        
+
+        //Draw the tooltip onto the DOM.
+        function nvtooltip() {
+            if (!enabled) return;
+            if (!dataSeriesExists(data)) return;
+
+            convertViewBoxRatio();
+
+            var left = position.left;
+            var top = (fixedTop != null) ? fixedTop : position.top;
+            var container = getTooltipContainer(contentGenerator(data));
+            tooltipElem = container;
+            if (chartContainer) {
+                var svgComp = chartContainer.getElementsByTagName("svg")[0];
+                var boundRect = (svgComp) ? svgComp.getBoundingClientRect() : chartContainer.getBoundingClientRect();
+                var svgOffset = {left:0,top:0};
+                if (svgComp) {
+                    var svgBound = svgComp.getBoundingClientRect();
+                    var chartBound = chartContainer.getBoundingClientRect();
+                    var svgBoundTop = svgBound.top;
+                    
+                    //Defensive code. Sometimes, svgBoundTop can be a really negative
+                    //  number, like -134254. That's a bug. 
+                    //  If such a number is found, use zero instead. FireFox bug only
+                    if (svgBoundTop < 0) {
+                        var containerBound = chartContainer.getBoundingClientRect();
+                        svgBoundTop = (Math.abs(svgBoundTop) > containerBound.height) ? 0 : svgBoundTop;
+                    } 
+                    svgOffset.top = Math.abs(svgBoundTop - chartBound.top);
+                    svgOffset.left = Math.abs(svgBound.left - chartBound.left);
+                }
+                //If the parent container is an overflow <div> with scrollbars, subtract the scroll offsets.
+                //You need to also add any offset between the <svg> element and its containing <div>
+                //Finally, add any offset of the containing <div> on the whole page.
+                left += chartContainer.offsetLeft + svgOffset.left - 2*chartContainer.scrollLeft;
+                top += chartContainer.offsetTop + svgOffset.top - 2*chartContainer.scrollTop;
+            }
+
+            if (snapDistance && snapDistance > 0) {
+                top = Math.floor(top/snapDistance) * snapDistance;
+            }
+
+            nv.tooltip.calcTooltipPosition([left,top], gravity, distance, container);
+            return nvtooltip;
+        };
+
+        nvtooltip.nvPointerEventsClass = nvPointerEventsClass;
+        
+        nvtooltip.content = function(_) {
+            if (!arguments.length) return content;
+            content = _;
+            return nvtooltip;
+        };
+
+        //Returns tooltipElem...not able to set it.
+        nvtooltip.tooltipElem = function() {
+            return tooltipElem;
+        };
+
+        nvtooltip.contentGenerator = function(_) {
+            if (!arguments.length) return contentGenerator;
+            if (typeof _ === 'function') {
+                contentGenerator = _;
+            }
+            return nvtooltip;
+        };
+
+        nvtooltip.data = function(_) {
+            if (!arguments.length) return data;
+            data = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.gravity = function(_) {
+            if (!arguments.length) return gravity;
+            gravity = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.distance = function(_) {
+            if (!arguments.length) return distance;
+            distance = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.snapDistance = function(_) {
+            if (!arguments.length) return snapDistance;
+            snapDistance = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.classes = function(_) {
+            if (!arguments.length) return classes;
+            classes = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.chartContainer = function(_) {
+            if (!arguments.length) return chartContainer;
+            chartContainer = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.position = function(_) {
+            if (!arguments.length) return position;
+            position.left = (typeof _.left !== 'undefined') ? _.left : position.left;
+            position.top = (typeof _.top !== 'undefined') ? _.top : position.top;
+            return nvtooltip;
+        };
+
+        nvtooltip.fixedTop = function(_) {
+            if (!arguments.length) return fixedTop;
+            fixedTop = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.enabled = function(_) {
+            if (!arguments.length) return enabled;
+            enabled = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.valueFormatter = function(_) {
+            if (!arguments.length) return valueFormatter;
+            if (typeof _ === 'function') {
+                valueFormatter = _;
+            }
+            return nvtooltip;
+        };
+
+        nvtooltip.headerFormatter = function(_) {
+            if (!arguments.length) return headerFormatter;
+            if (typeof _ === 'function') {
+                headerFormatter = _;
+            }
+            return nvtooltip;
+        };
+
+        //id() is a read-only function. You can't use it to set the id.
+        nvtooltip.id = function() {
+            return id;
+        };
+
+
+        return nvtooltip;
+  };
+
+
+  //Original tooltip.show function. Kept for backward compatibility.
+  // pos = [left,top]
+  nv.tooltip.show = function(pos, content, gravity, dist, parentContainer, classes) {
+      
+        //Create new tooltip div if it doesn't exist on DOM.
+        var   container = document.createElement('div');
+        container.className = 'nvtooltip ' + (classes ? classes : 'xy-tooltip');
+
+        var body = parentContainer;
+        if ( !parentContainer || parentContainer.tagName.match(/g|svg/i)) {
+            //If the parent element is an SVG element, place tooltip in the <body> element.
+            body = document.getElementsByTagName('body')[0];
+        }
+   
+        container.style.left = 0;
+        container.style.top = 0;
+        container.style.opacity = 0;
+        var safeContent = DOMPurify.sanitize(content, {RETURN_TRUSTED_TYPE: true});
+        container.innerHTML = safeContent;
+        body.appendChild(container);
+        
+        //If the parent container is an overflow <div> with scrollbars, subtract the scroll offsets.
+        if (parentContainer) {
+           pos[0] = pos[0] - parentContainer.scrollLeft;
+           pos[1] = pos[1] - parentContainer.scrollTop;
+        }
+        nv.tooltip.calcTooltipPosition(pos, gravity, dist, container);
+  };
+
+  //Looks up the ancestry of a DOM element, and returns the first NON-svg node.
+  nv.tooltip.findFirstNonSVGParent = function(Elem) {
+            while(Elem.tagName.match(/^g|svg$/i) !== null) {
+                Elem = Elem.parentNode;
+            }
+            return Elem;
+  };
+
+  //Finds the total offsetTop of a given DOM element.
+  //Looks up the entire ancestry of an element, up to the first relatively positioned element.
+  nv.tooltip.findTotalOffsetTop = function ( Elem, initialTop ) {
+                var offsetTop = initialTop;
+                
+                do {
+                    if( !isNaN( Elem.offsetTop ) ) {
+                        offsetTop += (Elem.offsetTop);
+                    }
+                } while( Elem = Elem.offsetParent );
+                return offsetTop;
+  };
+
+  //Finds the total offsetLeft of a given DOM element.
+  //Looks up the entire ancestry of an element, up to the first relatively positioned element.
+  nv.tooltip.findTotalOffsetLeft = function ( Elem, initialLeft) {
+                var offsetLeft = initialLeft;
+                
+                do {
+                    if( !isNaN( Elem.offsetLeft ) ) {
+                        offsetLeft += (Elem.offsetLeft);
+                    }
+                } while( Elem = Elem.offsetParent );
+                return offsetLeft;
+  };
+
+  //Global utility function to render a tooltip on the DOM.
+  //pos = [left,top] coordinates of where to place the tooltip, relative to the SVG chart container.
+  //gravity = how to orient the tooltip
+  //dist = how far away from the mouse to place tooltip
+  //container = tooltip DIV
+  nv.tooltip.calcTooltipPosition = function(pos, gravity, dist, container) {
+
+            var height = parseInt(container.offsetHeight),
+                width = parseInt(container.offsetWidth),
+                windowWidth = nv.utils.windowSize().width,
+                windowHeight = nv.utils.windowSize().height,
+                scrollTop = window.pageYOffset,
+                scrollLeft = window.pageXOffset,
+                left, top;
+
+            windowHeight = window.innerWidth >= document.body.scrollWidth ? windowHeight : windowHeight - 16;
+            windowWidth = window.innerHeight >= document.body.scrollHeight ? windowWidth : windowWidth - 16;
+
+            gravity = gravity || 's';
+            dist = dist || 20;
+
+            var tooltipTop = function ( Elem ) {
+                return nv.tooltip.findTotalOffsetTop(Elem, top);
+            };
+
+            var tooltipLeft = function ( Elem ) {
+                return nv.tooltip.findTotalOffsetLeft(Elem,left);
+            };
+
+            switch (gravity) {
+              case 'e':
+                left = pos[0] - width - dist;
+                top = pos[1] - (height / 2);
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = pos[0] + dist > scrollLeft ? pos[0] + dist : scrollLeft - tLeft + left;
+                if (tTop < scrollTop) top = scrollTop - tTop + top;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 'w':
+                left = pos[0] + dist;
+                top = pos[1] - (height / 2);
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft + width > windowWidth) left = pos[0] - width - dist;
+                if (tTop < scrollTop) top = scrollTop + 5;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 'n':
+                left = pos[0] - (width / 2) - 5;
+                top = pos[1] + dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = scrollLeft + 5;
+                if (tLeft + width > windowWidth) left = left - width/2 + 5;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 's':
+                left = pos[0] - (width / 2);
+                top = pos[1] - height - dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = scrollLeft + 5;
+                if (tLeft + width > windowWidth) left = left - width/2 + 5;
+                if (scrollTop > tTop) top = scrollTop;
+                break;
+              case 'none':
+                left = pos[0];
+                top = pos[1] - dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                break;
+            }
+
+
+            container.style.left = left+'px';
+            container.style.top = top+'px';
+            container.style.opacity = 1;
+            container.style.position = 'absolute'; 
+
+            return container;
+    };
+
+    //Global utility function to remove tooltips from the DOM.
+    nv.tooltip.cleanup = function() {
+
+              // Find the tooltips, mark them for removal by this class (so others cleanups won't find it)
+              var tooltips = document.getElementsByClassName('nvtooltip');
+              var purging = [];
+              while(tooltips.length) {
+                purging.push(tooltips[0]);
+                tooltips[0].style.transitionDelay = '0 !important';
+                tooltips[0].style.opacity = 0;
+                tooltips[0].className = 'nvtooltip-pending-removal';
+              }
+
+              setTimeout(function() {
+
+                  while (purging.length) {
+                     var removeMe = purging.pop();
+                      removeMe.parentNode.removeChild(removeMe);
+                  }
+            }, 500);
+    };
+
+})();
+
+nv.utils.windowSize = function() {
+    // Sane defaults
+    var size = {width: 640, height: 480};
+
+    // Earlier IE uses Doc.body
+    if (document.body && document.body.offsetWidth) {
+        size.width = document.body.offsetWidth;
+        size.height = document.body.offsetHeight;
+    }
+
+    // IE can use depending on mode it is in
+    if (document.compatMode=='CSS1Compat' &&
+        document.documentElement &&
+        document.documentElement.offsetWidth ) {
+        size.width = document.documentElement.offsetWidth;
+        size.height = document.documentElement.offsetHeight;
+    }
+
+    // Most recent browsers use
+    if (window.innerWidth && window.innerHeight) {
+        size.width = window.innerWidth;
+        size.height = window.innerHeight;
+    }
+    return (size);
+};
+
+
+
+// Easy way to bind multiple functions to window.onresize
+// TODO: give a way to remove a function after its bound, other than removing all of them
+nv.utils.windowResize = function(fun){
+  if (fun === undefined) return;
+  var oldresize = window.onresize;
+
+  window.onresize = function(e) {
+    if (typeof oldresize == 'function') oldresize(e);
+    fun(e);
+  }
+}
+
+// Backwards compatible way to implement more d3-like coloring of graphs.
+// If passed an array, wrap it in a function which implements the old default
+// behavior
+nv.utils.getColor = function(color) {
+    if (!arguments.length) return nv.utils.defaultColor(); //if you pass in nothing, get default colors back
+
+    if( Object.prototype.toString.call( color ) === '[object Array]' )
+        return function(d, i) { return d.color || color[i % color.length]; };
+    else
+        return color;
+        //can't really help it if someone passes rubbish as color
+}
+
+// Default color chooser uses the index of an object as before.
+nv.utils.defaultColor = function() {
+    var colors = d3.scale.category20().range();
+    return function(d, i) { return d.color || colors[i % colors.length] };
+}
+
+
+// Returns a color function that takes the result of 'getKey' for each series and
+// looks for a corresponding color from the dictionary,
+nv.utils.customTheme = function(dictionary, getKey, defaultColors) {
+  getKey = getKey || function(series) { return series.key }; // use default series.key if getKey is undefined
+  defaultColors = defaultColors || d3.scale.category20().range(); //default color function
+
+  var defIndex = defaultColors.length; //current default color (going in reverse)
+
+  return function(series, index) {
+    var key = getKey(series);
+
+    if (!defIndex) defIndex = defaultColors.length; //used all the default colors, start over
+
+    if (typeof dictionary[key] !== "undefined")
+      return (typeof dictionary[key] === "function") ? dictionary[key]() : dictionary[key];
+    else
+      return defaultColors[--defIndex]; // no match in dictionary, use default color
+  }
+}
+
+
+
+// From the PJAX example on d3js.org, while this is not really directly needed
+// it's a very cool method for doing pjax, I may expand upon it a little bit,
+// open to suggestions on anything that may be useful
+nv.utils.pjax = function(links, content) {
+  d3.selectAll(links).on("click", function() {
+    history.pushState(this.href, this.textContent, this.href);
+    load(this.href);
+    d3.event.preventDefault();
+  });
+
+  function load(href) {
+    d3.html(href, function(fragment) {
+      var target = d3.select(content).node();
+      target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);
+      nv.utils.pjax(links, content);
+    });
+  }
+
+  d3.select(window).on("popstate", function() {
+    if (d3.event.state) load(d3.event.state);
+  });
+}
+
+/* For situations where we want to approximate the width in pixels for an SVG:text element.
+Most common instance is when the element is in a display:none; container.
+Forumla is : text.length * font-size * constant_factor
+*/
+nv.utils.calcApproxTextWidth = function (svgTextElem) {
+    if (typeof svgTextElem.style === 'function'
+        && typeof svgTextElem.text === 'function') {
+        var fontSize = parseInt(svgTextElem.style("font-size").replace("px",""));
+        var textLength = svgTextElem.text().length;
+
+        return textLength * fontSize * 0.5;
+    }
+    return 0;
+};
+
+/* Numbers that are undefined, null or NaN, convert them to zeros.
+*/
+nv.utils.NaNtoZero = function(n) {
+    if (typeof n !== 'number'
+        || isNaN(n)
+        || n === null
+        || n === Infinity) return 0;
+
+    return n;
+};
+
+/*
+Snippet of code you can insert into each nv.models.* to give you the ability to
+do things like:
+chart.options({
+  showXAxis: true,
+  tooltips: true
+});
+
+To enable in the chart:
+chart.options = nv.utils.optionsFunc.bind(chart);
+*/
+nv.utils.optionsFunc = function(args) {
+    if (args) {
+      d3.map(args).forEach((function(key,value) {
+        if (typeof this[key] === "function") {
+           this[key](value);
+        }
+      }).bind(this));
+    }
+    return this;
+};nv.models.axis = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var axis = d3.svg.axis()
+    ;
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 75 //only used for tickLabel currently
+    , height = 60 //only used for tickLabel currently
+    , scale = d3.scale.linear()
+    , axisLabelText = null
+    , showMaxMin = true //TODO: showMaxMin should be disabled on all ordinal scaled axes
+    , highlightZero = true
+    , rotateLabels = 0
+    , rotateYLabel = true
+    , staggerLabels = false
+    , isOrdinal = false
+    , ticks = null
+    , axisLabelDistance = 12 //The larger this number is, the closer the axis label is to the axis.
+    ;
+
+  axis
+    .scale(scale)
+    .orient('bottom')
+    .tickFormat(function(d) { return d })
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var scale0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-axis').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-axis');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      //------------------------------------------------------------
+
+
+      if (ticks !== null)
+        axis.ticks(ticks);
+      else if (axis.orient() == 'top' || axis.orient() == 'bottom')
+        axis.ticks(Math.abs(scale.range()[1] - scale.range()[0]) / 100);
+
+
+      //TODO: consider calculating width/height based on whether or not label is added, for reference in charts using this component
+
+
+      g.transition().call(axis);
+
+      scale0 = scale0 || axis.scale();
+
+      var fmt = axis.tickFormat();
+      if (fmt == null) {
+        fmt = scale0.tickFormat();
+      }
+
+      var axisLabel = g.selectAll('text.nv-axislabel')
+          .data([axisLabelText || null]);
+      axisLabel.exit().remove();
+      switch (axis.orient()) {
+        case 'top':
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          var w = (scale.range().length==2) ? scale.range()[1] : (scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]));
+          axisLabel
+              .attr('text-anchor', 'middle')
+              .attr('y', 0)
+              .attr('x', w/2);
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(' + scale(d) + ',0)'
+                })
+              .select('text')
+                .attr('dy', '-0.5em')
+                .attr('y', -axis.tickPadding())
+                .attr('text-anchor', 'middle')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(' + scale.range()[i] + ',0)'
+                });
+          }
+          break;
+        case 'bottom':
+          var xLabelMargin = 36;
+          var maxTextWidth = 30;
+          var xTicks = g.selectAll('g').select("text");
+          if (rotateLabels%360) {
+            //Calculate the longest xTick width
+            xTicks.each(function(d,i){
+              var width = this.getBBox().width;
+              if(width > maxTextWidth) maxTextWidth = width;
+            });
+            //Convert to radians before calculating sin. Add 30 to margin for healthy padding.
+            var sin = Math.abs(Math.sin(rotateLabels*Math.PI/180));
+            var xLabelMargin = (sin ? sin*maxTextWidth : maxTextWidth)+30;
+            //Rotate all xTicks
+            xTicks
+              .attr('transform', function(d,i,j) { return 'rotate(' + rotateLabels + ' 0,0)' })
+              .style('text-anchor', rotateLabels%360 > 0 ? 'start' : 'end');
+          }
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          var w = (scale.range().length==2) ? scale.range()[1] : (scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]));
+          axisLabel
+              .attr('text-anchor', 'middle')
+              .attr('y', xLabelMargin)
+              .attr('x', w/2);
+          if (showMaxMin) {
+          //if (showMaxMin && !isOrdinal) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           //.data(scale.domain())
+                           .data([scale.domain()[0], scale.domain()[scale.domain().length - 1]]);
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
+                })
+              .select('text')
+                .attr('dy', '.71em')
+                .attr('y', axis.tickPadding())
+                .attr('transform', function(d,i,j) { return 'rotate(' + rotateLabels + ' 0,0)' })
+                .style('text-anchor', rotateLabels ? (rotateLabels%360 > 0 ? 'start' : 'end') : 'middle')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  //return 'translate(' + scale.range()[i] + ',0)'
+                  //return 'translate(' + scale(d) + ',0)'
+                  return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
+                });
+          }
+          if (staggerLabels)
+            xTicks
+                .attr('transform', function(d,i) { return 'translate(0,' + (i % 2 == 0 ? '0' : '12') + ')' });
+
+          break;
+        case 'right':
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          axisLabel
+              .style('text-anchor', rotateYLabel ? 'middle' : 'begin')
+              .attr('transform', rotateYLabel ? 'rotate(90)' : '')
+              .attr('y', rotateYLabel ? (-Math.max(margin.right,width) + 12) : -10) //TODO: consider calculating this based on largest tick width... OR at least expose this on chart
+              .attr('x', rotateYLabel ? (scale.range()[0] / 2) : axis.tickPadding());
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text')
+                .style('opacity', 0);
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale(d) + ')'
+                })
+              .select('text')
+                .attr('dy', '.32em')
+                .attr('y', 0)
+                .attr('x', axis.tickPadding())
+                .style('text-anchor', 'start')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale.range()[i] + ')'
+                })
+              .select('text')
+                .style('opacity', 1);
+          }
+          break;
+        case 'left':
+          /*
+          //For dynamically placing the label. Can be used with dynamically-sized chart axis margins
+          var yTicks = g.selectAll('g').select("text");
+          yTicks.each(function(d,i){
+            var labelPadding = this.getBBox().width + axis.tickPadding() + 16;
+            if(labelPadding > width) width = labelPadding;
+          });
+          */
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          axisLabel
+              .style('text-anchor', rotateYLabel ? 'middle' : 'end')
+              .attr('transform', rotateYLabel ? 'rotate(-90)' : '')
+              .attr('y', rotateYLabel ? (-Math.max(margin.left,width) + axisLabelDistance) : -10) //TODO: consider calculating this based on largest tick width... OR at least expose this on chart
+              .attr('x', rotateYLabel ? (-scale.range()[0] / 2) : -axis.tickPadding());
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text')
+                .style('opacity', 0);
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale0(d) + ')'
+                })
+              .select('text')
+                .attr('dy', '.32em')
+                .attr('y', 0)
+                .attr('x', -axis.tickPadding())
+                .attr('text-anchor', 'end')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale.range()[i] + ')'
+                })
+              .select('text')
+                .style('opacity', 1);
+          }
+          break;
+      }
+      axisLabel
+          .text(function(d) { return d });
+
+
+      if (showMaxMin && (axis.orient() === 'left' || axis.orient() === 'right')) {
+        //check if max and min overlap other values, if so, hide the values that overlap
+        g.selectAll('g') // the g's wrapping each tick
+            .each(function(d,i) {
+              d3.select(this).select('text').attr('opacity', 1);
+              if (scale(d) < scale.range()[1] + 10 || scale(d) > scale.range()[0] - 10) { // 10 is assuming text height is 16... if d is 0, leave it!
+                if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL
+                  d3.select(this).attr('opacity', 0);
+
+                d3.select(this).select('text').attr('opacity', 0); // Don't remove the ZERO line!!
+              }
+            });
+
+        //if Max and Min = 0 only show min, Issue #281
+        if (scale.domain()[0] == scale.domain()[1] && scale.domain()[0] == 0)
+          wrap.selectAll('g.nv-axisMaxMin')
+            .style('opacity', function(d,i) { return !i ? 1 : 0 });
+
+      }
+
+      if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {
+        var maxMinRange = [];
+        wrap.selectAll('g.nv-axisMaxMin')
+            .each(function(d,i) {
+              try {
+                  if (i) // i== 1, max position
+                      maxMinRange.push(scale(d) - this.getBBox().width - 4)  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
+                  else // i==0, min position
+                      maxMinRange.push(scale(d) + this.getBBox().width + 4)
+              }catch (err) {
+                  if (i) // i== 1, max position
+                      maxMinRange.push(scale(d) - 4)  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
+                  else // i==0, min position
+                      maxMinRange.push(scale(d) + 4)
+              }
+            });
+        g.selectAll('g') // the g's wrapping each tick
+            .each(function(d,i) {
+              if (scale(d) < maxMinRange[0] || scale(d) > maxMinRange[1]) {
+                if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL
+                  d3.select(this).remove();
+                else
+                  d3.select(this).select('text').remove(); // Don't remove the ZERO line!!
+              }
+            });
+      }
+
+
+      //highlight zero line ... Maybe should not be an option and should just be in CSS?
+      if (highlightZero)
+        g.selectAll('.tick')
+          .filter(function(d) { return !parseFloat(Math.round(d.__data__*100000)/1000000) && (d.__data__ !== undefined) }) //this is because sometimes the 0 tick is a very small fraction, TODO: think of cleaner technique
+            .classed('zero', true);
+
+      //store old scales for use in transitions on update
+      scale0 = scale.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.axis = axis;
+
+  d3.rebind(chart, axis, 'orient', 'tickValues', 'tickSubdivide', 'tickSize', 'tickPadding', 'tickFormat');
+  d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands'); //these are also accessible by chart.scale(), but added common ones directly for ease of use
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if(!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  }
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.ticks = function(_) {
+    if (!arguments.length) return ticks;
+    ticks = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.axisLabel = function(_) {
+    if (!arguments.length) return axisLabelText;
+    axisLabelText = _;
+    return chart;
+  }
+
+  chart.showMaxMin = function(_) {
+    if (!arguments.length) return showMaxMin;
+    showMaxMin = _;
+    return chart;
+  }
+
+  chart.highlightZero = function(_) {
+    if (!arguments.length) return highlightZero;
+    highlightZero = _;
+    return chart;
+  }
+
+  chart.scale = function(_) {
+    if (!arguments.length) return scale;
+    scale = _;
+    axis.scale(scale);
+    isOrdinal = typeof scale.rangeBands === 'function';
+    d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands');
+    return chart;
+  }
+
+  chart.rotateYLabel = function(_) {
+    if(!arguments.length) return rotateYLabel;
+    rotateYLabel = _;
+    return chart;
+  }
+
+  chart.rotateLabels = function(_) {
+    if(!arguments.length) return rotateLabels;
+    rotateLabels = _;
+    return chart;
+  }
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.axisLabelDistance = function(_) {
+    if (!arguments.length) return axisLabelDistance;
+    axisLabelDistance = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+//TODO: consider deprecating and using multibar with single series for this
+nv.models.historicalBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceX = []
+    , forceY = [0]
+    , padData = false
+    , clipEdge = true
+    , color = nv.utils.defaultColor()
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    , interactive = true
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ))
+
+      if (padData)
+        x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(data[0].values.map(getY).concat(forceY) ))
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-historicalBar-' + id).data([data[0].values]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBar-' + id);
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-bars');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+            dispatch.chartClick({
+                data: d,
+                index: i,
+                pos: d3.event,
+                id: id
+            });
+          });
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-chart-clip-path-' + id)
+        .append('rect');
+
+      wrap.select('#nv-chart-clip-path-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');
+
+
+
+      var bars = wrap.select('.nv-bars').selectAll('.nv-bar')
+          .data(function(d) { return d }, function(d,i) {return getX(d,i)});
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('rect')
+          //.attr('class', function(d,i,j) { return (getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive') + ' nv-bar-' + j + '-' + i })
+          .attr('x', 0 )
+          .attr('y', function(d,i) {  return nv.utils.NaNtoZero(y(Math.max(0, getY(d,i)))) })
+          .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.abs(y(getY(d,i)) - y(0))) })
+          .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; }) 
+          .on('mouseover', function(d,i) {
+            if (!interactive) return;
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+                point: d,
+                series: data[0],
+                pos: [x(getX(d,i)), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+                pointIndex: i,
+                seriesIndex: 0,
+                e: d3.event
+            });
+
+          })
+          .on('mouseout', function(d,i) {
+                if (!interactive) return;
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    point: d,
+                    series: data[0],
+                    pointIndex: i,
+                    seriesIndex: 0,
+                    e: d3.event
+                });
+          })
+          .on('click', function(d,i) {
+                if (!interactive) return;
+                dispatch.elementClick({
+                    //label: d[label],
+                    value: getY(d,i),
+                    data: d,
+                    index: i,
+                    pos: [x(getX(d,i)), y(getY(d,i))],
+                    e: d3.event,
+                    id: id
+                });
+              d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+              if (!interactive) return;
+              dispatch.elementDblClick({
+                  //label: d[label],
+                  value: getY(d,i),
+                  data: d,
+                  index: i,
+                  pos: [x(getX(d,i)), y(getY(d,i))],
+                  e: d3.event,
+                  id: id
+              });
+              d3.event.stopPropagation();
+          });
+
+      bars
+          .attr('fill', function(d,i) { return color(d, i); })
+          .attr('class', function(d,i,j) { return (getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive') + ' nv-bar-' + j + '-' + i })
+          .transition()
+          .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; }) 
+           //TODO: better width calculations that don't assume always uniform data spacing;w
+          .attr('width', (availableWidth / data[0].values.length) * .9 );
+
+
+      bars.transition()
+          .attr('y', function(d,i) {
+            var rval = getY(d,i) < 0 ?
+                    y(0) :
+                    y(0) - y(getY(d,i)) < 1 ?
+                      y(0) - 1 :
+                      y(getY(d,i));
+            return nv.utils.NaNtoZero(rval);
+          })
+          .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.max(Math.abs(y(getY(d,i)) - y(0)),1)) });
+
+    });
+
+    return chart;
+  }
+
+  //Create methods to allow outside functions to highlight a specific bar.
+  chart.highlightPoint = function(pointIndex, isHoverOver) {
+      d3.select(".nv-historicalBar-" + id)
+        .select(".nv-bars .nv-bar-0-" + pointIndex)
+              .classed("hover", isHoverOver)
+               ;
+  };
+
+  chart.clearHighlights = function() {
+      d3.select(".nv-historicalBar-" + id)
+        .select(".nv-bars .nv-bar.hover")
+              .classed("hover", false)
+               ;
+  };
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.interactive = function(_) {
+    if(!arguments.length) return interactive;
+    interactive = false;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+
+nv.models.bullet = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , orient = 'left' // TODO top & bottom
+    , reverse = false
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , rangeLabels = function(d) { return d.rangeLabels ? d.rangeLabels : [] }
+    , markerLabels = function(d) { return d.markerLabels ? d.markerLabels : []  }
+    , measureLabels = function(d) { return d.measureLabels ? d.measureLabels : []  }
+    , forceX = [0] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)
+    , width = 380
+    , height = 30
+    , tickFormat = null
+    , color = nv.utils.getColor(['#1f77b4'])
+    , dispatch = d3.dispatch('elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending),
+          rangeLabelz = rangeLabels.call(this, d, i).slice(),
+          markerLabelz = markerLabels.call(this, d, i).slice(),
+          measureLabelz = measureLabels.call(this, d, i).slice();
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain( d3.extent(d3.merge([forceX, rangez])) )
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+
+      var rangeMin = d3.min(rangez), //rangez[2]
+          rangeMax = d3.max(rangez), //rangez[0]
+          rangeAvg = rangez[1];
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bullet').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bullet');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeMax');
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeAvg');
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeMin');
+      gEnter.append('rect').attr('class', 'nv-measure');
+      gEnter.append('path').attr('class', 'nv-markerTriangle');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+      var xp0 = function(d) { return d < 0 ? x0(d) : x0(0) },
+          xp1 = function(d) { return d < 0 ? x1(d) : x1(0) };
+
+
+      g.select('rect.nv-rangeMax')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeMax > 0 ? rangeMax : rangeMin))
+          .attr('x', xp1(rangeMax > 0 ? rangeMax : rangeMin))
+          .datum(rangeMax > 0 ? rangeMax : rangeMin)
+          /*
+          .attr('x', rangeMin < 0 ?
+                         rangeMax > 0 ?
+                             x1(rangeMin)
+                           : x1(rangeMax)
+                       : x1(0))
+                      */
+
+      g.select('rect.nv-rangeAvg')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeAvg))
+          .attr('x', xp1(rangeAvg))
+          .datum(rangeAvg)
+          /*
+          .attr('width', rangeMax <= 0 ?
+                             x1(rangeMax) - x1(rangeAvg)
+                           : x1(rangeAvg) - x1(rangeMin))
+          .attr('x', rangeMax <= 0 ?
+                         x1(rangeAvg)
+                       : x1(rangeMin))
+                      */
+
+      g.select('rect.nv-rangeMin')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeMax))
+          .attr('x', xp1(rangeMax))
+          .attr('width', w1(rangeMax > 0 ? rangeMin : rangeMax))
+          .attr('x', xp1(rangeMax > 0 ? rangeMin : rangeMax))
+          .datum(rangeMax > 0 ? rangeMin : rangeMax)
+          /*
+          .attr('width', rangeMax <= 0 ?
+                             x1(rangeAvg) - x1(rangeMin)
+                           : x1(rangeMax) - x1(rangeAvg))
+          .attr('x', rangeMax <= 0 ?
+                         x1(rangeMin)
+                       : x1(rangeAvg))
+                      */
+
+      g.select('rect.nv-measure')
+          .style('fill', color)
+          .attr('height', availableHeight / 3)
+          .attr('y', availableHeight / 3)
+          .attr('width', measurez < 0 ?
+                             x1(0) - x1(measurez[0])
+                           : x1(measurez[0]) - x1(0))
+          .attr('x', xp1(measurez))
+          .on('mouseover', function() {
+              dispatch.elementMouseover({
+                value: measurez[0],
+                label: measureLabelz[0] || 'Current',
+                pos: [x1(measurez[0]), availableHeight/2]
+              })
+          })
+          .on('mouseout', function() {
+              dispatch.elementMouseout({
+                value: measurez[0],
+                label: measureLabelz[0] || 'Current'
+              })
+          })
+
+      var h3 =  availableHeight / 6;
+      if (markerz[0]) {
+        g.selectAll('path.nv-markerTriangle')
+            .attr('transform', function(d) { return 'translate(' + x1(markerz[0]) + ',' + (availableHeight / 2) + ')' })
+            .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')
+            .on('mouseover', function() {
+              dispatch.elementMouseover({
+                value: markerz[0],
+                label: markerLabelz[0] || 'Previous',
+                pos: [x1(markerz[0]), availableHeight/2]
+              })
+            })
+            .on('mouseout', function() {
+              dispatch.elementMouseout({
+                value: markerz[0],
+                label: markerLabelz[0] || 'Previous'
+              })
+            });
+      } else {
+        g.selectAll('path.nv-markerTriangle').remove();
+      }
+
+
+      wrap.selectAll('.nv-range')
+          .on('mouseover', function(d,i) {
+            var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+
+            dispatch.elementMouseover({
+              value: d,
+              label: label,
+              pos: [x1(d), availableHeight/2]
+            })
+          })
+          .on('mouseout', function(d,i) {
+            var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+
+            dispatch.elementMouseout({
+              value: d,
+              label: label
+            })
+          })
+
+/* // THIS IS THE PREVIOUS BULLET IMPLEMENTATION, WILL REMOVE SHORTLY
+      // Update the range rects.
+      var range = g.selectAll('rect.nv-range')
+          .data(rangez);
+
+      range.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-range nv-s' + i; })
+          .attr('width', w0)
+          .attr('height', availableHeight)
+          .attr('x', reverse ? x0 : 0)
+          .on('mouseover', function(d,i) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: (i <= 0) ? 'Maximum' : (i > 1) ? 'Minimum' : 'Mean', //TODO: make these labels a variable
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d,i) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: (i <= 0) ? 'Minimum' : (i >=1) ? 'Maximum' : 'Mean' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(range)
+          .attr('x', reverse ? x1 : 0)
+          .attr('width', w1)
+          .attr('height', availableHeight);
+
+
+      // Update the measure rects.
+      var measure = g.selectAll('rect.nv-measure')
+          .data(measurez);
+
+      measure.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-measure nv-s' + i; })
+          .style('fill', function(d,i) { return color(d,i ) })
+          .attr('width', w0)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x0 : 0)
+          .attr('y', availableHeight / 3)
+          .on('mouseover', function(d) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Current', //TODO: make these labels a variable
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Current' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(measure)
+          .attr('width', w1)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x1 : 0)
+          .attr('y', availableHeight / 3);
+
+
+
+      // Update the marker lines.
+      var marker = g.selectAll('path.nv-markerTriangle')
+          .data(markerz);
+
+      var h3 =  availableHeight / 6;
+      marker.enter().append('path')
+          .attr('class', 'nv-markerTriangle')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',' + (availableHeight / 2) + ')' })
+          .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')
+          .on('mouseover', function(d,i) {
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Previous',
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d,i) {
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Previous'
+              })
+          });
+
+      d3.transition(marker)
+          .attr('transform', function(d) { return 'translate(' + (x1(d) - x1(0)) + ',' + (availableHeight / 2) + ')' });
+
+      marker.exit().remove();
+*/
+
+    });
+
+    // d3.timer.flush();  // Not needed?
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  // left, right, top, bottom
+  chart.orient = function(_) {
+    if (!arguments.length) return orient;
+    orient = _;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(_) {
+    if (!arguments.length) return ranges;
+    ranges = _;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(_) {
+    if (!arguments.length) return markers;
+    markers = _;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(_) {
+    if (!arguments.length) return measures;
+    measures = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(_) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+nv.models.bulletChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var bullet = nv.models.bullet()
+    ;
+
+  var orient = 'left' // TODO top & bottom
+    , reverse = false
+    , margin = {top: 5, right: 40, bottom: 20, left: 120}
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , width = null
+    , height = 55
+    , tickFormat = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + x + '</h3>' +
+               '<p>' + y + '</p>'
+      }
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ) + margin.left,
+        top = e.pos[1] + ( offsetElement.offsetTop || 0) + margin.top,
+        content = tooltip(e.key, e.label, e.value, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var container = d3.select(this);
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          that = this;
+
+
+      chart.update = function() { chart(selection) };
+      chart.container = this;
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!d || !ranges.call(this, d, i)) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', 18 + margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bulletChart').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bulletChart');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-bulletWrap');
+      gEnter.append('g').attr('class', 'nv-titles');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])  // TODO: need to allow forceX and forceY, and xDomain, yDomain
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+      /*
+      // Derive width-scales from the x-scales.
+      var w0 = bulletWidth(x0),
+          w1 = bulletWidth(x1);
+
+      function bulletWidth(x) {
+        var x0 = x(0);
+        return function(d) {
+          return Math.abs(x(d) - x(0));
+        };
+      }
+
+      function bulletTranslate(x) {
+        return function(d) {
+          return 'translate(' + x(d) + ',0)';
+        };
+      }
+      */
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+
+
+      var title = gEnter.select('.nv-titles').append('g')
+          .attr('text-anchor', 'end')
+          .attr('transform', 'translate(-6,' + (height - margin.top - margin.bottom) / 2 + ')');
+      title.append('text')
+          .attr('class', 'nv-title')
+          .text(function(d) { return d.title; });
+
+      title.append('text')
+          .attr('class', 'nv-subtitle')
+          .attr('dy', '1em')
+          .text(function(d) { return d.subtitle; });
+
+
+
+      bullet
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var bulletWrap = g.select('.nv-bulletWrap');
+
+      d3.transition(bulletWrap).call(bullet);
+
+
+
+      // Compute the tick format.
+      var format = tickFormat || x1.tickFormat( availableWidth / 100 );
+
+      // Update the tick groups.
+      var tick = g.selectAll('g.nv-tick')
+          .data(x1.ticks( availableWidth / 50 ), function(d) {
+            return this.textContent || format(d);
+          });
+
+      // Initialize the ticks with the old scale, x0.
+      var tickEnter = tick.enter().append('g')
+          .attr('class', 'nv-tick')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',0)' })
+          .style('opacity', 1e-6);
+
+      tickEnter.append('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickEnter.append('text')
+          .attr('text-anchor', 'middle')
+          .attr('dy', '1em')
+          .attr('y', availableHeight * 7 / 6)
+          .text(format);
+
+
+      // Transition the updating ticks to the new scale, x1.
+      var tickUpdate = d3.transition(tick)
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1);
+
+      tickUpdate.select('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickUpdate.select('text')
+          .attr('y', availableHeight * 7 / 6);
+
+      // Transition the exiting ticks to the new scale, x1.
+      d3.transition(tick.exit())
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1e-6)
+          .remove();
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      dispatch.on('tooltipShow', function(e) {
+        e.key = d.title;
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+    });
+
+    d3.timer.flush();
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  bullet.dispatch.on('elementMouseover.tooltip', function(e) {
+    dispatch.tooltipShow(e);
+  });
+
+  bullet.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.bullet = bullet;
+
+  d3.rebind(chart, bullet, 'color');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  // left, right, top, bottom
+  chart.orient = function(x) {
+    if (!arguments.length) return orient;
+    orient = x;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(x) {
+    if (!arguments.length) return ranges;
+    ranges = x;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(x) {
+    if (!arguments.length) return markers;
+    markers = x;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(x) {
+    if (!arguments.length) return measures;
+    measures = x;
+    return chart;
+  };
+
+  chart.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return chart;
+  };
+
+  chart.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
+
+nv.models.cumulativeLineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 50, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , tooltips = true
+    , showControls = true
+    , useInteractiveGuideline = false
+    , rescaleY = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , id = lines.id()
+    , state = { index: 0, rescaleY: rescaleY }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , average = function(d) { return d.average }
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+  controls.updateState(false);
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+   var dx = d3.scale.linear()
+     , index = {i: 0, x: 0}
+     ;
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this).classed('nv-chart-' + id, true),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      var indexDrag = d3.behavior.drag()
+                        .on('dragstart', dragStart)
+                        .on('drag', dragMove)
+                        .on('dragend', dragEnd);
+
+
+      function dragStart(d,i) {
+        d3.select(chart.container)
+            .style('cursor', 'ew-resize');
+      }
+
+      function dragMove(d,i) {
+        index.x = d3.event.x;
+        index.i = Math.round(dx.invert(index.x));
+        updateZero();
+      }
+
+      function dragEnd(d,i) {
+        d3.select(chart.container)
+            .style('cursor', 'auto');
+
+        // update state and send stateChange with new index
+        state.index = index.i;
+        dispatch.stateChange(state);
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+
+
+      if (!rescaleY) {
+        var seriesDomains = data
+          .filter(function(series) { return !series.disabled })
+          .map(function(series,i) {
+            var initialDomain = d3.extent(series.values, lines.y());
+
+            //account for series being disabled when losing 95% or more
+            if (initialDomain[0] < -.95) initialDomain[0] = -.95;
+
+            return [
+              (initialDomain[0] - initialDomain[1]) / (1 + initialDomain[1]),
+              (initialDomain[1] - initialDomain[0]) / (1 + initialDomain[0])
+            ];
+          });
+
+        var completeDomain = [
+          d3.min(seriesDomains, function(d) { return d[0] }),
+          d3.max(seriesDomains, function(d) { return d[1] })
+        ]
+
+        lines.yDomain(completeDomain);
+      } else {
+        lines.yDomain(null);
+      }
+
+
+      dx  .domain([0, data[0].values.length - 1]) //Assumes all series have same length
+          .range([0, availableWidth])
+          .clamp(true);
+
+      //------------------------------------------------------------
+
+
+      var data = indexify(index.i, data);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+      var interactivePointerEvents = (useInteractiveGuideline) ? "none" : "all";
+      var wrap = container.selectAll('g.nv-wrap.nv-cumulativeLine').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-cumulativeLine').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-interactive');
+      gEnter.append('g').attr('class', 'nv-x nv-axis').style("pointer-events","none");
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-background');
+      gEnter.append('g').attr('class', 'nv-linesWrap').style("pointer-events",interactivePointerEvents);
+      gEnter.append('g').attr('class', 'nv-avgLinesWrap').style("pointer-events","none");
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Re-scale y-axis', disabled: !rescaleY }
+        ];
+
+        controls.width(140).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      // Show error if series goes below 100%
+      var tempDisabled = data.filter(function(d) { return d.tempDisabled });
+
+      wrap.select('.tempDisabled').remove(); //clean-up and prevent duplicates
+      if (tempDisabled.length) {
+        wrap.append('text').attr('class', 'tempDisabled')
+            .attr('x', availableWidth / 2)
+            .attr('y', '-.71em')
+            .style('text-anchor', 'end')
+            .text(tempDisabled.map(function(d) { return d.key }).join(', ') + ' values cannot be calculated for this time period.');
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+      
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+          .width(availableWidth)
+          .height(availableHeight)
+          .margin({left:margin.left,top:margin.top})
+          .svgContainer(container)
+          .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+      gEnter.select('.nv-background')
+        .append('rect');
+
+      g.select('.nv-background rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      lines
+        //.x(function(d) { return d.x })
+        .y(function(d) { return d.display.y })
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].tempDisabled; }));
+
+
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(data.filter(function(d) { return  !d.disabled && !d.tempDisabled }));
+
+      //d3.transition(linesWrap).call(lines);
+      linesWrap.call(lines);
+
+      /*Handle average lines [AN-612] ----------------------------*/
+
+      //Store a series index number in the data array.
+      data.forEach(function(d,i) {
+            d.seriesIndex = i;
+      });
+
+      var avgLineData = data.filter(function(d) {
+          return !d.disabled && !!average(d);
+      });
+
+      var avgLines = g.select(".nv-avgLinesWrap").selectAll("line")
+              .data(avgLineData, function(d) { return d.key; });
+
+      var getAvgLineY = function(d) {
+          //If average lines go off the svg element, clamp them to the svg bounds.
+          var yVal = y(average(d));
+          if (yVal < 0) return 0;
+          if (yVal > availableHeight) return availableHeight;
+          return yVal;
+      };
+
+      avgLines.enter()
+              .append('line')
+              .style('stroke-width',2)
+              .style('stroke-dasharray','10,10')
+              .style('stroke',function (d,i) {
+                  return lines.color()(d,d.seriesIndex);
+              })
+              .attr('x1',0)
+              .attr('x2',availableWidth)
+              .attr('y1', getAvgLineY)
+              .attr('y2', getAvgLineY);
+
+      avgLines
+              .style('stroke-opacity',function(d){
+                  //If average lines go offscreen, make them transparent
+                  var yVal = y(average(d));
+                  if (yVal < 0 || yVal > availableHeight) return 0;
+                  return 1;
+              })
+              .attr('x1',0)
+              .attr('x2',availableWidth)
+              .attr('y1', getAvgLineY)
+              .attr('y2', getAvgLineY);
+
+      avgLines.exit().remove();
+
+      //Create index line -----------------------------------------
+
+      var indexLine = linesWrap.selectAll('.nv-indexLine')
+          .data([index]);
+      indexLine.enter().append('rect').attr('class', 'nv-indexLine')
+          .attr('width', 3)
+          .attr('x', -2)
+          .attr('fill', 'red')
+          .attr('fill-opacity', .5)
+          .style("pointer-events","all")
+          .call(indexDrag)
+
+      indexLine
+          .attr('transform', function(d) { return 'translate(' + dx(d.i) + ',0)' })
+          .attr('height', availableHeight)
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          //Suggest how many ticks based on the chart width and D3 should listen (70 is the optimal number for MM/DD/YY dates)
+          .ticks( Math.min(data[0].values.length,availableWidth/70) )
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        d3.transition(g.select('.nv-x.nv-axis'))
+            .call(xAxis);
+      }
+
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        d3.transition(g.select('.nv-y.nv-axis'))
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+
+      function updateZero() {
+        indexLine
+          .data([index]);
+        
+        //When dragging the index line, turn off line transitions.
+        // Then turn them back on when done dragging.
+        var oldDuration = chart.transitionDuration();
+        chart.transitionDuration(0);
+        chart.update();
+        chart.transitionDuration(oldDuration);
+      }
+
+      g.select('.nv-background rect')
+          .on('click', function() {
+            index.x = d3.mouse(this)[0];
+            index.i = Math.round(dx.invert(index.x));
+
+            // update state and send stateChange with new index
+            state.index = index.i;
+            dispatch.stateChange(state);
+
+            updateZero();
+          });
+
+      lines.dispatch.on('elementClick', function(e) {
+        index.i = e.pointIndex;
+        index.x = dx(index.i);
+
+        // update state and send stateChange with new index
+        state.index = index.i;
+        dispatch.stateChange(state);
+
+        updateZero();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+        rescaleY = !d.disabled;
+
+        state.rescaleY = rescaleY;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled; 
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          lines.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          
+          
+          data
+          .filter(function(series, i) { 
+            series.seriesIndex = i;
+            return !series.disabled; 
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              lines.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+              allData.push({
+                  key: series.key,
+                  value: chart.y()(point, pointIndex),
+                  color: color(series,series.seriesIndex)
+              });
+          });
+
+          //Highlight the tooltip entry based on which point the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);
+            var threshold = 0.03 * domainExtent;
+            var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value}),yValue,threshold);
+            if (indexToHighlight !== null)
+              allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex), pointIndex);
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(function(d,i) {
+                     return yAxis.tickFormat()(d);
+                  })
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          lines.clearHighlights();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+
+        if (typeof e.index !== 'undefined') {
+          index.i = e.index;
+          index.x = dx(index.i);
+
+          state.index = e.index;
+
+          indexLine
+            .data([index]);
+        }
+
+
+        if (typeof e.rescaleY !== 'undefined') {
+          rescaleY = e.rescaleY;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.lines = lines;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'x', 'y', 'xScale','yScale', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi','useVoronoi',  'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.rescaleY = function(_) {
+    if (!arguments.length) return rescaleY;
+    rescaleY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.average = function(_) {
+     if(!arguments.length) return average;
+     average = _;
+     return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  //============================================================
+  // Functions
+  //------------------------------------------------------------
+
+  /* Normalize the data according to an index point. */
+  function indexify(idx, data) {
+    return data.map(function(line, i) {
+      if (!line.values) {
+         return line;
+      }
+      var v = lines.y()(line.values[idx], idx);
+
+      //TODO: implement check below, and disable series if series loses 100% or more cause divide by 0 issue
+      if (v < -.95) {
+        //if a series loses more than 100%, calculations fail.. anything close can cause major distortion (but is mathematically correct till it hits 100)
+        line.tempDisabled = true;
+        return line;
+      }
+
+      line.tempDisabled = false;
+
+      line.values = line.values.map(function(point, pointIndex) {
+        point.display = {'y': (lines.y()(point, pointIndex) - v) / (1 + v) };
+        return point;
+      })
+
+      return line;
+    })
+  }
+
+  //============================================================
+
+
+  return chart;
+}
+//TODO: consider deprecating by adding necessary features to multiBar model
+nv.models.discreteBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , color = nv.utils.defaultColor()
+    , showValues = false
+    , valueFormat = d3.format(',.2f')
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    , rectClass = 'discreteBar'
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableWidth], .1);
+
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y }).concat(forceY)));
+
+
+      // If showValues, pad the Y axis range to account for label height
+      if (showValues) y.range(yRange || [availableHeight - (y.domain()[0] < 0 ? 12 : 0), y.domain()[1] > 0 ? 12 : 0]);
+      else y.range(yRange || [availableHeight, 0]);
+
+      //store old scales if they exist
+      x0 = x0 || x;
+      y0 = y0 || y.copy().range([y(0),y(0)]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-discretebar').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discretebar');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      //TODO: by definition, the discrete bar should not have multiple groups, will modify/remove later
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+          .transition()
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover });
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('g.nv-bar')
+          .data(function(d) { return d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('g')
+          .attr('transform', function(d,i,j) {
+              return 'translate(' + (x(getX(d,i)) + x.rangeBand() * .05 ) + ', ' + y(0) + ')'
+          })
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+
+      barsEnter.append('rect')
+          .attr('height', 0)
+          .attr('width', x.rangeBand() * .9 / data.length )
+
+      if (showValues) {
+        barsEnter.append('text')
+          .attr('text-anchor', 'middle')
+          ;
+
+        bars.select('text')
+          .text(function(d,i) { return valueFormat(getY(d,i)) })
+          .transition()
+          .attr('x', x.rangeBand() * .9 / 2)
+          .attr('y', function(d,i) { return getY(d,i) < 0 ? y(getY(d,i)) - y(0) + 12 : -4 })
+
+          ;
+      } else {
+        bars.selectAll('text').remove();
+      }
+
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive' })
+          .style('fill', function(d,i) { return d.color || color(d,i) })
+          .style('stroke', function(d,i) { return d.color || color(d,i) })
+        .select('rect')
+          .attr('class', rectClass)
+          .transition()
+          .attr('width', x.rangeBand() * .9 / data.length);
+      bars.transition()
+        //.delay(function(d,i) { return i * 1200 / data[0].values.length })
+          .attr('transform', function(d,i) {
+            var left = x(getX(d,i)) + x.rangeBand() * .05,
+                top = getY(d,i) < 0 ?
+                        y(0) :
+                        y(0) - y(getY(d,i)) < 1 ?
+                          y(0) - 1 : //make 1 px positive bars show up above y=0
+                          y(getY(d,i));
+
+              return 'translate(' + left + ', ' + top + ')'
+          })
+        .select('rect')
+          .attr('height', function(d,i) {
+            return  Math.max(Math.abs(y(getY(d,i)) - y((yDomain && yDomain[0]) || 0)) || 1)
+          });
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.showValues = function(_) {
+    if (!arguments.length) return showValues;
+    showValues = _;
+    return chart;
+  };
+
+  chart.valueFormat= function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.rectClass= function(_) {
+    if (!arguments.length) return rectClass;
+    rectClass = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.discreteBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var discretebar = nv.models.discreteBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    ;
+
+  var margin = {top: 15, right: 10, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.getColor()
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , staggerLabels = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , x
+    , y
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'beforeUpdate')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .highlightZero(false)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(discretebar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(discretebar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { 
+        dispatch.beforeUpdate(); 
+        container.transition().duration(transitionDuration).call(chart); 
+      };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = discretebar.xScale();
+      y = discretebar.yScale().clamp(true);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-discreteBarWithAxes').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discreteBarWithAxes').append('g');
+      var defsEnter = gEnter.append('defs');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis')
+            .append('g').attr('class', 'nv-zeroLine')
+            .append('line');
+        
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      discretebar
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(discretebar);
+
+      //------------------------------------------------------------
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-x-label-clip-' + discretebar.id())
+        .append('rect');
+
+      g.select('#nv-x-label-clip-' + discretebar.id() + ' rect')
+          .attr('width', x.rangeBand() * (staggerLabels ? 2 : 1))
+          .attr('height', 16)
+          .attr('x', -x.rangeBand() / (staggerLabels ? 1 : 2 ));
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableWidth / 100 )
+            .tickSize(-availableHeight, 0);
+
+          g.select('.nv-x.nv-axis')
+              .attr('transform', 'translate(0,' + (y.range()[0] + ((discretebar.showValues() && y.domain()[0] < 0) ? 16 : 0)) + ')');
+          //d3.transition(g.select('.nv-x.nv-axis'))
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+
+          var xTicks = g.select('.nv-x.nv-axis').selectAll('g');
+
+          if (staggerLabels) {
+            xTicks
+                .selectAll('text')
+                .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '5' : '17') + ')' })
+          }
+      }
+
+      if (showYAxis) {
+          yAxis
+            .scale(y)
+            .ticks( availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+      // Zero line
+      g.select(".nv-zeroLine line")
+        .attr("x1",0)
+        .attr("x2",availableWidth)
+        .attr("y1", y(0))
+        .attr("y2", y(0))
+        ;
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  discretebar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  discretebar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.discretebar = discretebar;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, discretebar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'id', 'showValues', 'valueFormat');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    discretebar.color(color);
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.distribution = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 400 //technically width or height depending on x or y....
+    , size = 8
+    , axis = 'x' // 'x' or 'y'... horizontal or vertical
+    , getData = function(d) { return d[axis] }  // defaults d.x or d.y
+    , color = nv.utils.defaultColor()
+    , scale = d3.scale.linear()
+    , domain
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var scale0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableLength = width - (axis === 'x' ? margin.left + margin.right : margin.top + margin.bottom),
+          naxis = axis == 'x' ? 'y' : 'x',
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      scale0 = scale0 || scale;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-distribution').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-distribution');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
+
+      //------------------------------------------------------------
+
+
+      var distWrap = g.selectAll('g.nv-dist')
+          .data(function(d) { return d }, function(d) { return d.key });
+
+      distWrap.enter().append('g');
+      distWrap
+          .attr('class', function(d,i) { return 'nv-dist nv-series-' + i })
+          .style('stroke', function(d,i) { return color(d, i) });
+
+      var dist = distWrap.selectAll('line.nv-dist' + axis)
+          .data(function(d) { return d.values })
+      dist.enter().append('line')
+          .attr(axis + '1', function(d,i) { return scale0(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale0(getData(d,i)) })
+      distWrap.exit().selectAll('line.nv-dist' + axis)
+          .transition()
+          .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })
+          .style('stroke-opacity', 0)
+          .remove();
+      dist
+          .attr('class', function(d,i) { return 'nv-dist' + axis + ' nv-dist' + axis + '-' + i })
+          .attr(naxis + '1', 0)
+          .attr(naxis + '2', size);
+      dist
+          .transition()
+          .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })
+
+
+      scale0 = scale.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.axis = function(_) {
+    if (!arguments.length) return axis;
+    axis = _;
+    return chart;
+  };
+
+  chart.size = function(_) {
+    if (!arguments.length) return size;
+    size = _;
+    return chart;
+  };
+
+  chart.getData = function(_) {
+    if (!arguments.length) return getData;
+    getData = d3.functor(_);
+    return chart;
+  };
+
+  chart.scale = function(_) {
+    if (!arguments.length) return scale;
+    scale = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.historicalBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var bars = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    ;
+
+
+  var margin = {top: 30, right: 90, bottom: 50, left: 90}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = false
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x
+    , y
+    , state = {}
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient( (rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+
+    // New addition to calculate position if SVG is scaled with viewBox, may move TODO: consider implementing everywhere else
+    if (offsetElement) {
+      var svg = d3.select(offsetElement).select('svg');
+      var viewBox = (svg.node()) ? svg.attr('viewBox') : null;
+      if (viewBox) {
+        viewBox = viewBox.split(' ');
+        var ratio = parseInt(svg.style('width')) / viewBox[2];
+        e.pos[0] = e.pos[0] * ratio;
+        e.pos[1] = e.pos[1] * ratio;
+      }
+    }
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(bars.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(bars.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = bars.xScale();
+      y = bars.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-historicalBarChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBarChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+        g.select(".nv-y.nv-axis")
+            .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      bars
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }));
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(bars);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        g.select('.nv-x.nv-axis')
+            .transition()
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+          .transition()
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.nv-series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        state.disabled = data.map(function(d) { return !!d.disabled });
+        dispatch.stateChange(state);
+
+        selection.transition().call(chart);
+      });
+
+      legend.dispatch.on('legendDblclick', function(d) {
+          //Double clicking should always enable current series, and disabled all others.
+          data.forEach(function(d) {
+             d.disabled = true;
+          });
+          d.disabled = false;
+
+          state.disabled = data.map(function(d) { return !!d.disabled });
+          dispatch.stateChange(state);
+          chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.bars = bars;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, bars, 'defined', 'isArea', 'x', 'y', 'size', 'xScale', 'yScale',
+    'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id', 'interpolate','highlightPoint','clearHighlights', 'interactive');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+nv.models.indentedTree = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0} //TODO: implement, maybe as margin on the containing div
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor()
+    , id = Math.floor(Math.random() * 10000)
+    , header = true
+    , filterZero = false
+    , noData = "No Data Available."
+    , childIndent = 20
+    , columns = [{key:'key', label: 'Name', type:'text'}] //TODO: consider functions like chart.addColumn, chart.removeColumn, instead of a block like this
+    , tableClass = null
+    , iconOpen = 'images/grey-plus.png' //TODO: consider removing this and replacing with a '+' or '-' unless user defines images
+    , iconClose = 'images/grey-minus.png'
+    , dispatch = d3.dispatch('elementClick', 'elementDblclick', 'elementMouseover', 'elementMouseout')
+    , getUrl = function(d) { return d.url }
+    ;
+
+  //============================================================
+
+  var idx = 0;
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var depth = 1,
+          container = d3.select(this);
+
+      var tree = d3.layout.tree()
+          .children(function(d) { return d.values })
+          .size([height, childIndent]); //Not sure if this is needed now that the result is HTML
+
+      chart.update = function() { container.transition().duration(600).call(chart) };
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+      if (!data[0]) data[0] = {key: noData};
+
+      //------------------------------------------------------------
+
+
+      var nodes = tree.nodes(data[0]);
+
+      // nodes.map(function(d) {
+      //   d.id = i++;
+      // })
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('div').data([[nodes]]);
+      var wrapEnter = wrap.enter().append('div').attr('class', 'nvd3 nv-wrap nv-indentedtree');
+      var tableEnter = wrapEnter.append('table');
+      var table = wrap.select('table').attr('width', '100%').attr('class', tableClass);
+
+      //------------------------------------------------------------
+
+
+      if (header) {
+        var thead = tableEnter.append('thead');
+
+        var theadRow1 = thead.append('tr');
+
+        columns.forEach(function(column) {
+          theadRow1
+            .append('th')
+              .attr('width', column.width ? column.width : '10%')
+              .style('text-align', column.type == 'numeric' ? 'right' : 'left')
+            .append('span')
+              .text(column.label);
+        });
+      }
+
+
+      var tbody = table.selectAll('tbody')
+                    .data(function(d) { return d });
+      tbody.enter().append('tbody');
+
+
+
+      //compute max generations
+      depth = d3.max(nodes, function(node) { return node.depth });
+      tree.size([height, depth * childIndent]); //TODO: see if this is necessary at all
+
+
+      // Update the nodes…
+      var node = tbody.selectAll('tr')
+          // .data(function(d) { return d; }, function(d) { return d.id || (d.id == ++i)});
+          .data(function(d) { return d.filter(function(d) { return (filterZero && !d.children) ? filterZero(d) :  true; } )}, function(d,i) { return d.id || (d.id || ++idx)});
+          //.style('display', 'table-row'); //TODO: see if this does anything
+
+      node.exit().remove();
+
+      node.select('img.nv-treeicon')
+          .attr('src', icon)
+          .classed('folded', folded);
+
+      var nodeEnter = node.enter().append('tr');
+
+
+      columns.forEach(function(column, index) {
+
+        var nodeName = nodeEnter.append('td')
+            .style('padding-left', function(d) { return (index ? 0 : d.depth * childIndent + 12 + (icon(d) ? 0 : 16)) + 'px' }, 'important') //TODO: check why I did the ternary here
+            .style('text-align', column.type == 'numeric' ? 'right' : 'left');
+
+
+        if (index == 0) {
+          nodeName.append('img')
+              .classed('nv-treeicon', true)
+              .classed('nv-folded', folded)
+              .attr('src', icon)
+              .style('width', '14px')
+              .style('height', '14px')
+              .style('padding', '0 1px')
+              .style('display', function(d) { return icon(d) ? 'inline-block' : 'none'; })
+              .on('click', click);
+        }
+
+
+        nodeName.each(function(d) {
+          if (!index && getUrl(d))
+            d3.select(this)
+              .append('a')
+              .attr('href',getUrl)
+              .attr('class', d3.functor(column.classes))
+              .append('span')
+          else
+            d3.select(this)
+              .append('span')
+
+            d3.select(this).select('span')
+              .attr('class', d3.functor(column.classes) )
+              .text(function(d) { return column.format ? column.format(d) :
+                                        (d[column.key] || '-') });
+          });
+
+        if  (column.showCount) {
+          nodeName.append('span')
+              .attr('class', 'nv-childrenCount');
+
+          node.selectAll('span.nv-childrenCount').text(function(d) {
+                return ((d.values && d.values.length) || (d._values && d._values.length)) ?                                   //If this is a parent
+                    '(' + ((d.values && (d.values.filter(function(d) { return filterZero ? filterZero(d) :  true; }).length)) //If children are in values check its children and filter
+                    || (d._values && d._values.filter(function(d) { return filterZero ? filterZero(d) :  true; }).length)     //Otherwise, do the same, but with the other name, _values...
+                    || 0) + ')'                                                                                               //This is the catch-all in case there are no children after a filter
+                    : ''                                                                                                     //If this is not a parent, just give an empty string
+            });
+        }
+
+        // if (column.click)
+        //   nodeName.select('span').on('click', column.click);
+
+      });
+
+      node
+        .order()
+        .on('click', function(d) { 
+          dispatch.elementClick({
+            row: this, //TODO: decide whether or not this should be consistent with scatter/line events or should be an html link (a href)
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('dblclick', function(d) { 
+          dispatch.elementDblclick({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('mouseover', function(d) { 
+          dispatch.elementMouseover({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('mouseout', function(d) { 
+          dispatch.elementMouseout({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        });
+
+
+
+
+      // Toggle children on click.
+      function click(d, _, unshift) {
+        d3.event.stopPropagation();
+
+        if(d3.event.shiftKey && !unshift) {
+          //If you shift-click, it'll toggle fold all the children, instead of itself
+          d3.event.shiftKey = false;
+          d.values && d.values.forEach(function(node){
+            if (node.values || node._values) {
+              click(node, 0, true);
+            }
+          });
+          return true;
+        }
+        if(!hasChildren(d)) {
+          //download file
+          //window.location.href = d.url;
+          return true;
+        }
+        if (d.values) {
+          d._values = d.values;
+          d.values = null;
+        } else {
+          d.values = d._values;
+          d._values = null;
+        }
+        chart.update();
+      }
+
+
+      function icon(d) {
+        return (d._values && d._values.length) ? iconOpen : (d.values && d.values.length) ? iconClose : '';
+      }
+
+      function folded(d) {
+        return (d._values && d._values.length);
+      }
+
+      function hasChildren(d) {
+        var values = d.values || d._values;
+
+        return (values && values.length);
+      }
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    scatter.color(color);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.header = function(_) {
+    if (!arguments.length) return header;
+    header = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.filterZero = function(_) {
+    if (!arguments.length) return filterZero;
+    filterZero = _;
+    return chart;
+  };
+
+  chart.columns = function(_) {
+    if (!arguments.length) return columns;
+    columns = _;
+    return chart;
+  };
+
+  chart.tableClass = function(_) {
+    if (!arguments.length) return tableClass;
+    tableClass = _;
+    return chart;
+  };
+
+  chart.iconOpen = function(_){
+     if (!arguments.length) return iconOpen;
+    iconOpen = _;
+    return chart;
+  }
+
+  chart.iconClose = function(_){
+     if (!arguments.length) return iconClose;
+    iconClose = _;
+    return chart;
+  }
+
+  chart.getUrl = function(_){
+     if (!arguments.length) return getUrl;
+    getUrl = _;
+    return chart;
+  }
+
+  //============================================================
+
+
+  return chart;
+};nv.models.legend = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 5, right: 0, bottom: 5, left: 0}
+    , width = 400
+    , height = 20
+    , getKey = function(d) { return d.key }
+    , color = nv.utils.defaultColor()
+    , align = true
+    , rightAlign = true
+    , updateState = true   //If true, legend will update data.disabled and trigger a 'stateChange' dispatch.
+    , radioButtonMode = false   //If true, clicking legend items will cause it to behave like a radio button. (only one can be selected at a time)
+    , dispatch = d3.dispatch('legendClick', 'legendDblclick', 'legendMouseover', 'legendMouseout', 'stateChange')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-legend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-legend').append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      var series = g.selectAll('.nv-series')
+          .data(function(d) { return d });
+      var seriesEnter = series.enter().append('g').attr('class', 'nv-series')
+          .on('mouseover', function(d,i) {
+            dispatch.legendMouseover(d,i);  //TODO: Make consistent with other event objects
+          })
+          .on('mouseout', function(d,i) {
+            dispatch.legendMouseout(d,i);
+          })
+          .on('click', function(d,i) {
+            dispatch.legendClick(d,i);
+            if (updateState) {
+               if (radioButtonMode) {
+                   //Radio button mode: set every series to disabled,
+                   //  and enable the clicked series.
+                   data.forEach(function(series) { series.disabled = true});
+                   d.disabled = false;
+               }
+               else {
+                   d.disabled = !d.disabled;
+                   if (data.every(function(series) { return series.disabled})) {
+                       //the default behavior of NVD3 legends is, if every single series
+                       // is disabled, turn all series' back on.
+                       data.forEach(function(series) { series.disabled = false});
+                   }
+               }
+               dispatch.stateChange({
+                  disabled: data.map(function(d) { return !!d.disabled })
+               });
+            }
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.legendDblclick(d,i);
+            if (updateState) {
+                //the default behavior of NVD3 legends, when double clicking one,
+                // is to set all other series' to false, and make the double clicked series enabled.
+                data.forEach(function(series) {
+                   series.disabled = true;
+                });
+                d.disabled = false; 
+                dispatch.stateChange({
+                    disabled: data.map(function(d) { return !!d.disabled })
+                });
+            }
+          });
+      seriesEnter.append('circle')
+          .style('stroke-width', 2)
+          .attr('class','nv-legend-symbol')
+          .attr('r', 5);
+      seriesEnter.append('text')
+          .attr('text-anchor', 'start')
+          .attr('class','nv-legend-text')
+          .attr('dy', '.32em')
+          .attr('dx', '8');
+      series.classed('disabled', function(d) { return d.disabled });
+      series.exit().remove();
+      series.select('circle')
+          .style('fill', function(d,i) { return d.color || color(d,i)})
+          .style('stroke', function(d,i) { return d.color || color(d, i) });
+      series.select('text').text(getKey);
+
+
+      //TODO: implement fixed-width and max-width options (max-width is especially useful with the align option)
+
+      // NEW ALIGNING CODE, TODO: clean up
+      if (align) {
+
+        var seriesWidths = [];
+        series.each(function(d,i) {
+              var legendText = d3.select(this).select('text');
+              var nodeTextLength;
+              try {
+                nodeTextLength = legendText.node().getComputedTextLength();
+              }
+              catch(e) {
+                nodeTextLength = nv.utils.calcApproxTextWidth(legendText);
+              }
+             
+              seriesWidths.push(nodeTextLength + 28); // 28 is ~ the width of the circle plus some padding
+            });
+
+        var seriesPerRow = 0;
+        var legendWidth = 0;
+        var columnWidths = [];
+
+        while ( legendWidth < availableWidth && seriesPerRow < seriesWidths.length) {
+          columnWidths[seriesPerRow] = seriesWidths[seriesPerRow];
+          legendWidth += seriesWidths[seriesPerRow++];
+        }
+        if (seriesPerRow === 0) seriesPerRow = 1; //minimum of one series per row
+
+
+        while ( legendWidth > availableWidth && seriesPerRow > 1 ) {
+          columnWidths = [];
+          seriesPerRow--;
+
+          for (var k = 0; k < seriesWidths.length; k++) {
+            if (seriesWidths[k] > (columnWidths[k % seriesPerRow] || 0) )
+              columnWidths[k % seriesPerRow] = seriesWidths[k];
+          }
+
+          legendWidth = columnWidths.reduce(function(prev, cur, index, array) {
+                          return prev + cur;
+                        });
+        }
+
+        var xPositions = [];
+        for (var i = 0, curX = 0; i < seriesPerRow; i++) {
+            xPositions[i] = curX;
+            curX += columnWidths[i];
+        }
+
+        series
+            .attr('transform', function(d, i) {
+              return 'translate(' + xPositions[i % seriesPerRow] + ',' + (5 + Math.floor(i / seriesPerRow) * 20) + ')';
+            });
+
+        //position legend as far right as possible within the total width
+        if (rightAlign) {
+           g.attr('transform', 'translate(' + (width - margin.right - legendWidth) + ',' + margin.top + ')');
+        }
+        else {
+           g.attr('transform', 'translate(0' + ',' + margin.top + ')');
+        }
+
+        height = margin.top + margin.bottom + (Math.ceil(seriesWidths.length / seriesPerRow) * 20);
+
+      } else {
+
+        var ypos = 5,
+            newxpos = 5,
+            maxwidth = 0,
+            xpos;
+        series
+            .attr('transform', function(d, i) {
+              var length = d3.select(this).select('text').node().getComputedTextLength() + 28;
+              xpos = newxpos;
+
+              if (width < margin.left + margin.right + xpos + length) {
+                newxpos = xpos = 5;
+                ypos += 20;
+              }
+
+              newxpos += length;
+              if (newxpos > maxwidth) maxwidth = newxpos;
+
+              return 'translate(' + xpos + ',' + ypos + ')';
+            });
+
+        //position legend as far right as possible within the total width
+        g.attr('transform', 'translate(' + (width - margin.right - maxwidth) + ',' + margin.top + ')');
+
+        height = margin.top + margin.bottom + ypos + 15;
+
+      }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.key = function(_) {
+    if (!arguments.length) return getKey;
+    getKey = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.align = function(_) {
+    if (!arguments.length) return align;
+    align = _;
+    return chart;
+  };
+
+  chart.rightAlign = function(_) {
+    if (!arguments.length) return rightAlign;
+    rightAlign = _;
+    return chart;
+  };
+
+  chart.updateState = function(_) {
+    if (!arguments.length) return updateState;
+    updateState = _;
+    return chart;
+  };
+
+  chart.radioButtonMode = function(_) {
+    if (!arguments.length) return radioButtonMode;
+    radioButtonMode = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.line = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var  scatter = nv.models.scatter()
+    ;
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor() // a function that returns a color
+    , getX = function(d) { return d.x } // accessor to get the x value from a data point
+    , getY = function(d) { return d.y } // accessor to get the y value from a data point
+    , defined = function(d,i) { return !isNaN(getY(d,i)) && getY(d,i) !== null } // allows a line to be not continuous when it is not defined
+    , isArea = function(d) { return d.area } // decides if a line is an area or just a line
+    , clipEdge = false // if true, masks lines within x and y scale
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , interpolate = "linear" // controls the line interpolation
+    ;
+
+  scatter
+    .size(16) // default size
+    .sizeDomain([16,256]) //set to speed up calculation, needs to be unset if there is a custom size accessor
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-line').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-line');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-groups');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var scatterWrap = wrap.select('.nv-scatterWrap');
+          //.datum(data); // Data automatically trickles down from the wrap
+
+      scatterWrap.transition().call(scatter);
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + scatter.id())
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + scatter.id() + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');
+      scatterWrap
+          .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');
+
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+
+      groups.exit().remove();
+
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i)});
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .5);
+
+
+
+      var areaPaths = groups.selectAll('path.nv-area')
+          .data(function(d) { return isArea(d) ? [d] : [] }); // this is done differently than lines because I need to check if series is an area
+      areaPaths.enter().append('path')
+          .attr('class', 'nv-area')
+          .attr('d', function(d) {
+            return d3.svg.area()
+                .interpolate(interpolate)
+                .defined(defined)
+                .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+                .y0(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+                .y1(function(d,i) { return y0( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })
+                //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this
+                .apply(this, [d.values])
+          });
+      groups.exit().selectAll('path.nv-area')
+           .remove();
+
+      areaPaths
+          .transition()
+          .attr('d', function(d) {
+            return d3.svg.area()
+                .interpolate(interpolate)
+                .defined(defined)
+                .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+                .y0(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+                .y1(function(d,i) { return y( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })
+                //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this
+                .apply(this, [d.values])
+          });
+
+
+
+      var linePaths = groups.selectAll('path.nv-line')
+          .data(function(d) { return [d.values] });
+      linePaths.enter().append('path')
+          .attr('class', 'nv-line')
+          .attr('d',
+            d3.svg.line()
+              .interpolate(interpolate)
+              .defined(defined)
+              .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+              .y(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+          );
+
+      linePaths
+          .transition()
+          .attr('d',
+            d3.svg.line()
+              .interpolate(interpolate)
+              .defined(defined)
+              .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+              .y(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+          );
+
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = scatter.dispatch;
+  chart.scatter = scatter;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange',
+    'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi', 'clipRadius', 'padData','highlightPoint','clearHighlights');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    scatter.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    scatter.y(_);
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    scatter.color(color);
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+    if (!arguments.length) return interpolate;
+    interpolate = _;
+    return chart;
+  };
+
+  chart.defined = function(_) {
+    if (!arguments.length) return defined;
+    defined = _;
+    return chart;
+  };
+
+  chart.isArea = function(_) {
+    if (!arguments.length) return isArea;
+    isArea = d3.functor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.lineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , useInteractiveGuideline = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x
+    , y
+    , state = {}
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+    
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-lineChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append("rect").style("opacity",0);
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-linesWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-interactive');
+
+      g.select("rect").attr("width",availableWidth).attr("height",availableHeight);
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+           .width(availableWidth)
+           .height(availableHeight)
+           .margin({left:margin.left, top:margin.top})
+           .svgContainer(container)
+           .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }));
+
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      linesWrap.transition().call(lines);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .ticks( availableWidth / 100 )
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        g.select('.nv-x.nv-axis')
+            .transition()
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .transition()
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+          state = newState;
+          dispatch.stateChange(state);
+          chart.update();
+      });
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          lines.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          data
+          .filter(function(series, i) { 
+            series.seriesIndex = i;
+            return !series.disabled; 
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              lines.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+              allData.push({
+                  key: series.key,
+                  value: chart.y()(point, pointIndex),
+                  color: color(series,series.seriesIndex)
+              });
+          });
+          //Highlight the tooltip entry based on which point the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);
+            var threshold = 0.03 * domainExtent;
+            var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value}),yValue,threshold);
+            if (indexToHighlight !== null)
+              allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex));
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(function(d,i) {
+                     return yAxis.tickFormat()(d);
+                  })
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          lines.clearHighlights();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.lines = lines;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'x', 'y', 'size', 'xScale', 'yScale', 'xDomain', 'yDomain', 'xRange', 'yRange'
+    , 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'useVoronoi','id', 'interpolate');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.linePlusBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , bars = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , y1Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 60, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.defaultColor()
+    , showLegend = true
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>';
+      }
+    , x
+    , y1
+    , y2
+    , state = {}
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    ;
+
+  bars
+    .padData(true)
+    ;
+  lines
+    .clipEdge(false)
+    .padData(true)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    .highlightZero(false)
+    ;
+  y1Axis
+    .orient('left')
+    ;
+  y2Axis
+    .orient('right')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+      var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+          top = e.pos[1] + ( offsetElement.offsetTop || 0),
+          x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+          y = (e.series.bar ? y1Axis : y2Axis).tickFormat()(lines.y()(e.point, e.pointIndex)),
+          content = tooltip(e.series.key, x, y, e, chart);
+
+      nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+    }
+    ;
+
+  //------------------------------------------------------------
+
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().call(chart); };
+      // chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      var dataBars = data.filter(function(d) { return !d.disabled && d.bar });
+      var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240
+
+      //x = xAxis.scale();
+       x = dataLines.filter(function(d) { return !d.disabled; }).length && dataLines.filter(function(d) { return !d.disabled; })[0].values.length ? lines.xScale() : bars.xScale();
+      //x = dataLines.filter(function(d) { return !d.disabled; }).length ? lines.xScale() : bars.xScale(); //old code before change above
+      y1 = bars.yScale();
+      y2 = lines.yScale();
+
+      //------------------------------------------------------------
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-linePlusBar').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-linePlusBar').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      gEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-linesWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.nv-legendWrap')
+            .datum(data.map(function(series) {
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.bar ? ' (left axis)' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }))
+
+      bars
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }))
+
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(dataBars.length ? dataBars : [{values:[]}])
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(dataLines[0] && !dataLines[0].disabled ? dataLines : [{values:[]}] );
+          //.datum(!dataLines[0].disabled ? dataLines : [{values:dataLines[0].values.map(function(d) { return [d[0], null] }) }] );
+
+      d3.transition(barsWrap).call(bars);
+      d3.transition(linesWrap).call(lines);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y1.range()[0] + ')');
+      d3.transition(g.select('.nv-x.nv-axis'))
+          .call(xAxis);
+
+
+      y1Axis
+        .scale(y1)
+        .ticks( availableHeight / 36 )
+        .tickSize(-availableWidth, 0);
+
+      d3.transition(g.select('.nv-y1.nv-axis'))
+          .style('opacity', dataBars.length ? 1 : 0)
+          .call(y1Axis);
+
+
+      y2Axis
+        .scale(y2)
+        .ticks( availableHeight / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+      g.select('.nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + availableWidth + ',0)');
+          //.attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+      d3.transition(g.select('.nv-y2.nv-axis'))
+          .call(y2Axis);
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.bars = bars;
+  chart.xAxis = xAxis;
+  chart.y1Axis = y1Axis;
+  chart.y2Axis = y2Axis;
+
+  d3.rebind(chart, lines, 'defined', 'size', 'clipVoronoi', 'interpolate');
+  //TODO: consider rebinding x, y and some other stuff, and simply do soemthign lile bars.x(lines.x()), etc.
+  //d3.rebind(chart, lines, 'x', 'y', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    bars.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    bars.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+nv.models.lineWithFocusChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , lines2 = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , x2Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    , brush = d3.svg.brush()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 30, left: 60}
+    , margin2 = {top: 0, right: 30, bottom: 20, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , height2 = 100
+    , x
+    , y
+    , x2
+    , y2
+    , showLegend = true
+    , brushExtent = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'brush')
+    , transitionDuration = 250
+    ;
+
+  lines
+    .clipEdge(true)
+    ;
+  lines2
+    .interactive(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  yAxis
+    .orient('left')
+    ;
+  x2Axis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y2Axis
+    .orient('left')
+    ;
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2,
+          availableHeight2 = height2 - margin2.top - margin2.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight1 / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+      x2 = lines2.xScale();
+      y2 = lines2.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-lineWithFocusChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineWithFocusChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      var focusEnter = gEnter.append('g').attr('class', 'nv-focus');
+      focusEnter.append('g').attr('class', 'nv-x nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y nv-axis');
+      focusEnter.append('g').attr('class', 'nv-linesWrap');
+
+      var contextEnter = gEnter.append('g').attr('class', 'nv-context');
+      contextEnter.append('g').attr('class', 'nv-x nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y nv-axis');
+      contextEnter.append('g').attr('class', 'nv-linesWrap');
+      contextEnter.append('g').attr('class', 'nv-brushBackground');
+      contextEnter.append('g').attr('class', 'nv-x nv-brush');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(
+          data
+            .map(function(d,i) {
+              return d.color || color(d, i);
+            })
+            .filter(function(d,i) {
+              return !data[i].disabled;
+          })
+        );
+
+      lines2
+        .defined(lines.defined())
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(
+          data
+            .map(function(d,i) {
+              return d.color || color(d, i);
+            })
+            .filter(function(d,i) {
+              return !data[i].disabled;
+          })
+        );
+
+      g.select('.nv-context')
+          .attr('transform', 'translate(0,' + ( availableHeight1 + margin.bottom + margin2.top) + ')')
+
+      var contextLinesWrap = g.select('.nv-context .nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(contextLinesWrap).call(lines2);
+
+      //------------------------------------------------------------
+
+
+      /*
+      var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(focusLinesWrap).call(lines);
+     */
+
+
+      //------------------------------------------------------------
+      // Setup Main (Focus) Axes
+
+      xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight1, 0);
+
+      yAxis
+        .scale(y)
+        .ticks( availableHeight1 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      g.select('.nv-focus .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + availableHeight1 + ')');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Brush
+
+      brush
+        .x(x2)
+        .on('brush', function() {
+            //When brushing, turn off transitions because chart needs to change immediately.
+            var oldTransition = chart.transitionDuration();
+            chart.transitionDuration(0); 
+            onBrush();
+            chart.transitionDuration(oldTransition);
+        });
+
+      if (brushExtent) brush.extent(brushExtent);
+
+      var brushBG = g.select('.nv-brushBackground').selectAll('g')
+          .data([brushExtent || brush.extent()])
+
+      var brushBGenter = brushBG.enter()
+          .append('g');
+
+      brushBGenter.append('rect')
+          .attr('class', 'left')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      brushBGenter.append('rect')
+          .attr('class', 'right')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      var gBrush = g.select('.nv-x.nv-brush')
+          .call(brush);
+      gBrush.selectAll('rect')
+          //.attr('y', -5)
+          .attr('height', availableHeight2);
+      gBrush.selectAll('.resize').append('path').attr('d', resizePath);
+
+      onBrush();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Secondary (Context) Axes
+
+      x2Axis
+        .scale(x2)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight2, 0);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y2.range()[0] + ')');
+      d3.transition(g.select('.nv-context .nv-x.nv-axis'))
+          .call(x2Axis);
+
+
+      y2Axis
+        .scale(y2)
+        .ticks( availableHeight2 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.nv-context .nv-y.nv-axis'))
+          .call(y2Axis);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y2.range()[0] + ')');
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+      //============================================================
+      // Functions
+      //------------------------------------------------------------
+
+      // Taken from crossfilter (http://square.github.com/crossfilter/)
+      function resizePath(d) {
+        var e = +(d == 'e'),
+            x = e ? 1 : -1,
+            y = availableHeight2 / 3;
+        return 'M' + (.5 * x) + ',' + y
+            + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)
+            + 'V' + (2 * y - 6)
+            + 'A6,6 0 0 ' + e + ' ' + (.5 * x) + ',' + (2 * y)
+            + 'Z'
+            + 'M' + (2.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8)
+            + 'M' + (4.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8);
+      }
+
+
+      function updateBrushBG() {
+        if (!brush.empty()) brush.extent(brushExtent);
+        brushBG
+            .data([brush.empty() ? x2.domain() : brushExtent])
+            .each(function(d,i) {
+              var leftWidth = x2(d[0]) - x.range()[0],
+                  rightWidth = x.range()[1] - x2(d[1]);
+              d3.select(this).select('.left')
+                .attr('width',  leftWidth < 0 ? 0 : leftWidth);
+
+              d3.select(this).select('.right')
+                .attr('x', x2(d[1]))
+                .attr('width', rightWidth < 0 ? 0 : rightWidth);
+            });
+      }
+
+
+      function onBrush() {
+        brushExtent = brush.empty() ? null : brush.extent();
+        var extent = brush.empty() ? x2.domain() : brush.extent();
+
+        //The brush extent cannot be less than one.  If it is, don't update the line chart.
+        if (Math.abs(extent[0] - extent[1]) <= 1) {
+          return;
+        }
+
+        dispatch.brush({extent: extent, brush: brush});
+
+
+        updateBrushBG();
+
+        // Update Main (Focus)
+        var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+            .datum(
+              data
+                .filter(function(d) { return !d.disabled })
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+            );
+        focusLinesWrap.transition().duration(transitionDuration).call(lines);
+
+
+        // Update Main (Focus) Axes
+        g.select('.nv-focus .nv-x.nv-axis').transition().duration(transitionDuration)
+            .call(xAxis);
+        g.select('.nv-focus .nv-y.nv-axis').transition().duration(transitionDuration)
+            .call(yAxis);
+      }
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.lines2 = lines2;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.x2Axis = x2Axis;
+  chart.y2Axis = y2Axis;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return lines.x;
+    lines.x(_);
+    lines2.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return lines.y;
+    lines.y(_);
+    lines2.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.margin2 = function(_) {
+    if (!arguments.length) return margin2;
+    margin2 = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.height2 = function(_) {
+    if (!arguments.length) return height2;
+    height2 = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color =nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+    if (!arguments.length) return lines.interpolate();
+    lines.interpolate(_);
+    lines2.interpolate(_);
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  // Chart has multiple similar Axes, to prevent code duplication, probably need to link all axis functions manually like below
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return xAxis.tickFormat();
+    xAxis.tickFormat(_);
+    x2Axis.tickFormat(_);
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return yAxis.tickFormat();
+    yAxis.tickFormat(_);
+    y2Axis.tickFormat(_);
+    return chart;
+  };
+  
+  chart.brushExtent = function(_) {
+    if (!arguments.length) return brushExtent;
+    brushExtent = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.linePlusBarWithFocusChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , lines2 = nv.models.line()
+    , bars = nv.models.historicalBar()
+    , bars2 = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , x2Axis = nv.models.axis()
+    , y1Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , y3Axis = nv.models.axis()
+    , y4Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    , brush = d3.svg.brush()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 30, left: 60}
+    , margin2 = {top: 0, right: 30, bottom: 20, left: 60}
+    , width = null
+    , height = null
+    , height2 = 100
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.defaultColor()
+    , showLegend = true
+    , extent
+    , brushExtent = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>';
+      }
+    , x
+    , x2
+    , y1
+    , y2
+    , y3
+    , y4
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'brush')
+    , transitionDuration = 0
+    ;
+
+  lines
+    .clipEdge(true)
+    ;
+  lines2
+    .interactive(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y1Axis
+    .orient('left')
+    ;
+  y2Axis
+    .orient('right')
+    ;
+  x2Axis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y3Axis
+    .orient('left')
+    ;
+  y4Axis
+    .orient('right')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    if (extent) {
+        e.pointIndex += Math.ceil(extent[0]);
+    }
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = (e.series.bar ? y1Axis : y2Axis).tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //------------------------------------------------------------
+
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2,
+          availableHeight2 = height2 - margin2.top - margin2.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight1 / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      var dataBars = data.filter(function(d) { return !d.disabled && d.bar });
+      var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240
+
+      x = bars.xScale();
+      x2 = x2Axis.scale();
+      y1 = bars.yScale();
+      y2 = lines.yScale();
+      y3 = bars2.yScale();
+      y4 = lines2.yScale();
+
+      var series1 = data
+        .filter(function(d) { return !d.disabled && d.bar })
+        .map(function(d) {
+          return d.values.map(function(d,i) {
+            return { x: getX(d,i), y: getY(d,i) }
+          })
+        });
+
+      var series2 = data
+        .filter(function(d) { return !d.disabled && !d.bar })
+        .map(function(d) {
+          return d.values.map(function(d,i) {
+            return { x: getX(d,i), y: getY(d,i) }
+          })
+        });
+
+      x   .range([0, availableWidth]);
+      
+      x2  .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-linePlusBar').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-linePlusBar').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      
+      var focusEnter = gEnter.append('g').attr('class', 'nv-focus');
+      focusEnter.append('g').attr('class', 'nv-x nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      focusEnter.append('g').attr('class', 'nv-barsWrap');
+      focusEnter.append('g').attr('class', 'nv-linesWrap');
+
+      var contextEnter = gEnter.append('g').attr('class', 'nv-context');
+      contextEnter.append('g').attr('class', 'nv-x nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      contextEnter.append('g').attr('class', 'nv-barsWrap');
+      contextEnter.append('g').attr('class', 'nv-linesWrap');
+      contextEnter.append('g').attr('class', 'nv-brushBackground');
+      contextEnter.append('g').attr('class', 'nv-x nv-brush');
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.nv-legendWrap')
+            .datum(data.map(function(series) {
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.bar ? ' (left axis)' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Context Components
+
+      bars2
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }));
+
+      lines2
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }));
+        
+      var bars2Wrap = g.select('.nv-context .nv-barsWrap')
+          .datum(dataBars.length ? dataBars : [{values:[]}]);
+
+      var lines2Wrap = g.select('.nv-context .nv-linesWrap')
+          .datum(!dataLines[0].disabled ? dataLines : [{values:[]}]);
+          
+      g.select('.nv-context')
+          .attr('transform', 'translate(0,' + ( availableHeight1 + margin.bottom + margin2.top) + ')')
+
+      bars2Wrap.transition().call(bars2);
+      lines2Wrap.transition().call(lines2);
+
+      //------------------------------------------------------------
+
+
+
+      //------------------------------------------------------------
+      // Setup Brush
+
+      brush
+        .x(x2)
+        .on('brush', onBrush);
+
+      if (brushExtent) brush.extent(brushExtent);
+
+      var brushBG = g.select('.nv-brushBackground').selectAll('g')
+          .data([brushExtent || brush.extent()])
+
+      var brushBGenter = brushBG.enter()
+          .append('g');
+
+      brushBGenter.append('rect')
+          .attr('class', 'left')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      brushBGenter.append('rect')
+          .attr('class', 'right')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      var gBrush = g.select('.nv-x.nv-brush')
+          .call(brush);
+      gBrush.selectAll('rect')
+          //.attr('y', -5)
+          .attr('height', availableHeight2);
+      gBrush.selectAll('.resize').append('path').attr('d', resizePath);
+
+      //------------------------------------------------------------
+
+      //------------------------------------------------------------
+      // Setup Secondary (Context) Axes
+
+      x2Axis
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight2, 0);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y3.range()[0] + ')');
+      g.select('.nv-context .nv-x.nv-axis').transition()
+          .call(x2Axis);
+
+
+      y3Axis
+        .scale(y3)
+        .ticks( availableHeight2 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      g.select('.nv-context .nv-y1.nv-axis')
+          .style('opacity', dataBars.length ? 1 : 0)
+          .attr('transform', 'translate(0,' + x2.range()[0] + ')');
+          
+      g.select('.nv-context .nv-y1.nv-axis').transition()
+          .call(y3Axis);
+          
+
+      y4Axis
+        .scale(y4)
+        .ticks( availableHeight2 / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+      g.select('.nv-context .nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + x2.range()[1] + ',0)');
+
+      g.select('.nv-context .nv-y2.nv-axis').transition()
+          .call(y4Axis);
+          
+      //------------------------------------------------------------
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+      //============================================================
+      // Functions
+      //------------------------------------------------------------
+
+      // Taken from crossfilter (http://square.github.com/crossfilter/)
+      function resizePath(d) {
+        var e = +(d == 'e'),
+            x = e ? 1 : -1,
+            y = availableHeight2 / 3;
+        return 'M' + (.5 * x) + ',' + y
+            + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)
+            + 'V' + (2 * y - 6)
+            + 'A6,6 0 0 ' + e + ' ' + (.5 * x) + ',' + (2 * y)
+            + 'Z'
+            + 'M' + (2.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8)
+            + 'M' + (4.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8);
+      }
+
+
+      function updateBrushBG() {
+        if (!brush.empty()) brush.extent(brushExtent);
+        brushBG
+            .data([brush.empty() ? x2.domain() : brushExtent])
+            .each(function(d,i) {
+              var leftWidth = x2(d[0]) - x2.range()[0],
+                  rightWidth = x2.range()[1] - x2(d[1]);
+              d3.select(this).select('.left')
+                .attr('width',  leftWidth < 0 ? 0 : leftWidth);
+
+              d3.select(this).select('.right')
+                .attr('x', x2(d[1]))
+                .attr('width', rightWidth < 0 ? 0 : rightWidth);
+            });
+      }
+
+
+      function onBrush() {
+        brushExtent = brush.empty() ? null : brush.extent();
+        extent = brush.empty() ? x2.domain() : brush.extent();
+
+
+        dispatch.brush({extent: extent, brush: brush});
+
+        updateBrushBG();
+
+
+        //------------------------------------------------------------
+        // Prepare Main (Focus) Bars and Lines
+        
+        bars
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }));
+
+
+        lines
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }));
+
+        var focusBarsWrap = g.select('.nv-focus .nv-barsWrap')
+            .datum(!dataBars.length ? [{values:[]}] :
+              dataBars
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return bars.x()(d,i) >= extent[0] && bars.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+            );
+        
+        var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+            .datum(dataLines[0].disabled ? [{values:[]}] :
+              dataLines
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+             );
+                 
+        //------------------------------------------------------------
+        
+        
+        //------------------------------------------------------------
+        // Update Main (Focus) X Axis
+
+        if (dataBars.length) {
+            x = bars.xScale();
+        } else {
+            x = lines.xScale();
+        }
+        
+        xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight1, 0);
+
+        xAxis.domain([Math.ceil(extent[0]), Math.floor(extent[1])]);
+        
+        g.select('.nv-x.nv-axis').transition().duration(transitionDuration)
+          .call(xAxis);
+        //------------------------------------------------------------
+        
+        
+        //------------------------------------------------------------
+        // Update Main (Focus) Bars and Lines
+
+        focusBarsWrap.transition().duration(transitionDuration).call(bars);
+        focusLinesWrap.transition().duration(transitionDuration).call(lines);
+        
+        //------------------------------------------------------------
+        
+          
+        //------------------------------------------------------------
+        // Setup and Update Main (Focus) Y Axes
+        
+        g.select('.nv-focus .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y1.range()[0] + ')');
+
+
+        y1Axis
+        .scale(y1)
+        .ticks( availableHeight1 / 36 )
+        .tickSize(-availableWidth, 0);
+
+        g.select('.nv-focus .nv-y1.nv-axis')
+          .style('opacity', dataBars.length ? 1 : 0);
+
+
+        y2Axis
+        .scale(y2)
+        .ticks( availableHeight1 / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+        g.select('.nv-focus .nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+        g.select('.nv-focus .nv-y1.nv-axis').transition().duration(transitionDuration)
+            .call(y1Axis);
+        g.select('.nv-focus .nv-y2.nv-axis').transition().duration(transitionDuration)
+            .call(y2Axis);
+      }
+
+      //============================================================
+
+      onBrush();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.lines2 = lines2;
+  chart.bars = bars;
+  chart.bars2 = bars2;
+  chart.xAxis = xAxis;
+  chart.x2Axis = x2Axis;
+  chart.y1Axis = y1Axis;
+  chart.y2Axis = y2Axis;
+  chart.y3Axis = y3Axis;
+  chart.y4Axis = y4Axis;
+
+  d3.rebind(chart, lines, 'defined', 'size', 'clipVoronoi', 'interpolate');
+  //TODO: consider rebinding x, y and some other stuff, and simply do soemthign lile bars.x(lines.x()), etc.
+  //d3.rebind(chart, lines, 'x', 'y', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    bars.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    bars.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.brushExtent = function(_) {
+    if (!arguments.length) return brushExtent;
+    brushExtent = _;
+    return chart;
+  };
+
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.multiBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , clipEdge = true
+    , stacked = false
+    , stackOffset = 'zero' // options include 'silhouette', 'wiggle', 'expand', 'zero', or a custom function
+    , color = nv.utils.defaultColor()
+    , hideable = false
+    , barColor = null // adding the ability to set the color for each rather than the whole group
+    , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled
+    , delay = 1200
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , groupSpacing = 0.1
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      if(hideable && data.length) hideable = [{
+        values: data[0].values.map(function(d) {
+        return {
+          x: d.x,
+          y: 0,
+          series: d.series,
+          size: 0.01
+        };}
+      )}];
+
+      if (stacked)
+        data = d3.layout.stack()
+                 .offset(stackOffset)
+                 .values(function(d){ return d.values })
+                 .y(getY)
+                 (!data.length && hideable ? hideable : data);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+      //------------------------------------------------------------
+      // HACK for negative value stacking
+      if (stacked)
+        data[0].values.map(function(d,i) {
+          var posBase = 0, negBase = 0;
+          data.map(function(d) {
+            var f = d.values[i]
+            f.size = Math.abs(f.y);
+            if (f.y<0)  {
+              f.y1 = negBase;
+              negBase = negBase - f.size;
+            } else
+            {
+              f.y1 = f.size + posBase;
+              posBase = posBase + f.size;
+            }
+          });
+        });
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableWidth], groupSpacing);
+
+      //y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y + (stacked ? d.y1 : 0) }).concat(forceY)))
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return stacked ? (d.y > 0 ? d.y1 : d.y1 + d.y ) : d.y }).concat(forceY)))
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multibar').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibar');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d,i) { return i });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+        .transition()
+        .selectAll('rect.nv-bar')
+        .delay(function(d,i) {
+             return i * delay/ data[0].values.length;
+        })
+          .attr('y', function(d) { return stacked ? y0(d.y0) : y0(0) })
+          .attr('height', 0)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) });
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('rect.nv-bar')
+          .data(function(d) { return (hideable && !data.length) ? hideable.values : d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('rect')
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .attr('x', function(d,i,j) {
+              return stacked ? 0 : (j * x.rangeBand() / data.length )
+          })
+          .attr('y', function(d) { return y0(stacked ? d.y0 : 0) })
+          .attr('height', 0)
+          .attr('width', x.rangeBand() / (stacked ? 1 : data.length) )
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })
+          ;
+      bars
+          .style('fill', function(d,i,j){ return color(d, j, i);  })
+          .style('stroke', function(d,i,j){ return color(d, j, i); })
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .transition()
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })
+
+      if (barColor) {
+        if (!disabled) disabled = data.map(function() { return true });
+        bars
+          .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })
+          .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });
+      }
+
+
+      if (stacked)
+          bars.transition()
+            .delay(function(d,i) {
+
+                  return i * delay / data[0].values.length;
+            })
+            .attr('y', function(d,i) {
+
+              return y((stacked ? d.y1 : 0));
+            })
+            .attr('height', function(d,i) {
+              return Math.max(Math.abs(y(d.y + (stacked ? d.y0 : 0)) - y((stacked ? d.y0 : 0))),1);
+            })
+            .attr('x', function(d,i) {
+                  return stacked ? 0 : (d.series * x.rangeBand() / data.length )
+            })
+            .attr('width', x.rangeBand() / (stacked ? 1 : data.length) );
+      else
+          bars.transition()
+            .delay(function(d,i) {
+                return i * delay/ data[0].values.length;
+            })
+            .attr('x', function(d,i) {
+              return d.series * x.rangeBand() / data.length
+            })
+            .attr('width', x.rangeBand() / data.length)
+            .attr('y', function(d,i) {
+                return getY(d,i) < 0 ?
+                        y(0) :
+                        y(0) - y(getY(d,i)) < 1 ?
+                          y(0) - 1 :
+                        y(getY(d,i)) || 0;
+            })
+            .attr('height', function(d,i) {
+                return Math.max(Math.abs(y(getY(d,i)) - y(0)),1) || 0;
+            });
+
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.stacked = function(_) {
+    if (!arguments.length) return stacked;
+    stacked = _;
+    return chart;
+  };
+
+  chart.stackOffset = function(_) {
+    if (!arguments.length) return stackOffset;
+    stackOffset = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.barColor = function(_) {
+    if (!arguments.length) return barColor;
+    barColor = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.disabled = function(_) {
+    if (!arguments.length) return disabled;
+    disabled = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.hideable = function(_) {
+    if (!arguments.length) return hideable;
+    hideable = _;
+    return chart;
+  };
+
+  chart.delay = function(_) {
+    if (!arguments.length) return delay;
+    delay = _;
+    return chart;
+  };
+
+  chart.groupSpacing = function(_) {
+    if (!arguments.length) return groupSpacing;
+    groupSpacing = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.multiBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var multibar = nv.models.multiBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor()
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , reduceXTicks = true // if false a tick will show for every data point
+    , staggerLabels = false
+    , rotateLabels = 0
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' on ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , state = { stacked: false }
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = function() { return showControls ? 180 : 0 }
+    , transitionDuration = 250
+    ;
+
+  multibar
+    .stacked(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    .highlightZero(true)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = multibar.xScale();
+      y = multibar.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multiBarWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarWithLegend').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth - controlWidth());
+
+        if (multibar.barColor())
+          data.forEach(function(series,i) {
+            series.color = d3.rgb('#ccc').darker(i * 1.5).toString();
+          })
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Grouped', disabled: multibar.stacked() },
+          { key: 'Stacked', disabled: !multibar.stacked() }
+        ];
+
+        controls.width(controlWidth()).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      multibar
+        .disabled(data.map(function(series) { return series.disabled }))
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(multibar);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableWidth / 100 )
+            .tickSize(-availableHeight, 0);
+
+          g.select('.nv-x.nv-axis')
+              .attr('transform', 'translate(0,' + y.range()[0] + ')');
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+          var xTicks = g.select('.nv-x.nv-axis > g').selectAll('g');
+
+          xTicks
+              .selectAll('line, text')
+              .style('opacity', 1)
+
+          if (staggerLabels) {
+              var getTranslate = function(x,y) {
+                  return "translate(" + x + "," + y + ")";
+              };
+
+              var staggerUp = 5, staggerDown = 17;  //pixels to stagger by
+              // Issue #140
+              xTicks
+                .selectAll("text")
+                .attr('transform', function(d,i,j) { 
+                    return  getTranslate(0, (j % 2 == 0 ? staggerUp : staggerDown));
+                  });
+
+              var totalInBetweenTicks = d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;
+              g.selectAll(".nv-x.nv-axis .nv-axisMaxMin text")
+                .attr("transform", function(d,i) {
+                    return getTranslate(0, (i === 0 || totalInBetweenTicks % 2 !== 0) ? staggerDown : staggerUp);
+                });
+          }
+
+          if (reduceXTicks)
+            xTicks
+              .filter(function(d,i) {
+                  return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+                })
+              .selectAll('text, line')
+              .style('opacity', 0);
+
+          if(rotateLabels)
+            xTicks
+              .selectAll('.tick text')
+              .attr('transform', 'rotate(' + rotateLabels + ' 0,0)')
+              .style('text-anchor', rotateLabels > 0 ? 'start' : 'end');
+          
+          g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')
+              .style('opacity', 1);
+      }
+
+
+      if (showYAxis) {      
+          yAxis
+            .scale(y)
+            .ticks( availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+
+      //------------------------------------------------------------
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        state.stacked = multibar.stacked();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode)
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.stacked !== 'undefined') {
+          multibar.stacked(e.stacked);
+          state.stacked = e.stacked;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.multibar = multibar;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'clipEdge',
+   'id', 'stacked', 'stackOffset', 'delay', 'barColor','groupSpacing');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.reduceXTicks= function(_) {
+    if (!arguments.length) return reduceXTicks;
+    reduceXTicks = _;
+    return chart;
+  };
+
+  chart.rotateLabels = function(_) {
+    if (!arguments.length) return rotateLabels;
+    rotateLabels = _;
+    return chart;
+  }
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+  
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.multiBarHorizontal = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , color = nv.utils.defaultColor()
+    , barColor = null // adding the ability to set the color for each rather than the whole group
+    , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled
+    , stacked = false
+    , showValues = false
+    , showBarLabels = false
+    , valuePadding = 60
+    , valueFormat = d3.format(',.2f')
+    , delay = 1200
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      if (stacked)
+        data = d3.layout.stack()
+                 .offset('zero')
+                 .values(function(d){ return d.values })
+                 .y(getY)
+                 (data);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+
+      //------------------------------------------------------------
+      // HACK for negative value stacking
+      if (stacked)
+        data[0].values.map(function(d,i) {
+          var posBase = 0, negBase = 0;
+          data.map(function(d) {
+            var f = d.values[i]
+            f.size = Math.abs(f.y);
+            if (f.y<0)  {
+              f.y1 = negBase - f.size;
+              negBase = negBase - f.size;
+            } else
+            {
+              f.y1 = posBase;
+              posBase = posBase + f.size;
+            }
+          });
+        });
+
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableHeight], .1);
+
+      //y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y + (stacked ? d.y0 : 0) }).concat(forceY)))
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return stacked ? (d.y > 0 ? d.y1 + d.y : d.y1 ) : d.y }).concat(forceY)))
+
+      if (showValues && !stacked)
+        y.range(yRange || [(y.domain()[0] < 0 ? valuePadding : 0), availableWidth - (y.domain()[1] > 0 ? valuePadding : 0) ]);
+      else
+        y.range(yRange || [0, availableWidth]);
+
+      x0 = x0 || x;
+      y0 = y0 || d3.scale.linear().domain(y.domain()).range([y(0),y(0)]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-multibarHorizontal').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibarHorizontal');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d,i) { return i });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit().transition()
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) });
+      groups.transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('g.nv-bar')
+          .data(function(d) { return d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('g')
+          .attr('transform', function(d,i,j) {
+              return 'translate(' + y0(stacked ? d.y0 : 0) + ',' + (stacked ? 0 : (j * x.rangeBand() / data.length ) + x(getX(d,i))) + ')'
+          });
+
+      barsEnter.append('rect')
+          .attr('width', 0)
+          .attr('height', x.rangeBand() / (stacked ? 1 : data.length) )
+
+      bars
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [ y(getY(d,i) + (stacked ? d.y0 : 0)), x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length) ],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+
+
+      barsEnter.append('text');
+
+      if (showValues && !stacked) {
+        bars.select('text')
+            .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'end' : 'start' })
+            .attr('y', x.rangeBand() / (data.length * 2))
+            .attr('dy', '.32em')
+            .text(function(d,i) { return valueFormat(getY(d,i)) })
+        bars.transition()
+          .select('text')
+            .attr('x', function(d,i) { return getY(d,i) < 0 ? -4 : y(getY(d,i)) - y(0) + 4 })
+      } else {
+        bars.selectAll('text').text('');
+      }
+
+      if (showBarLabels && !stacked) {
+        barsEnter.append('text').classed('nv-bar-label',true);
+        bars.select('text.nv-bar-label')
+            .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'start' : 'end' })
+            .attr('y', x.rangeBand() / (data.length * 2))
+            .attr('dy', '.32em')
+            .text(function(d,i) { return getX(d,i) });
+        bars.transition()
+          .select('text.nv-bar-label')
+            .attr('x', function(d,i) { return getY(d,i) < 0 ? y(0) - y(getY(d,i)) + 4 : -4 });
+      }
+      else {
+        bars.selectAll('text.nv-bar-label').text('');
+      }
+
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+
+      if (barColor) {
+        if (!disabled) disabled = data.map(function() { return true });
+        bars
+          .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })
+          .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });
+      }
+
+      if (stacked)
+        bars.transition()
+            .attr('transform', function(d,i) {
+              return 'translate(' + y(d.y1) + ',' + x(getX(d,i)) + ')'
+            })
+          .select('rect')
+            .attr('width', function(d,i) {
+              return Math.abs(y(getY(d,i) + d.y0) - y(d.y0))
+            })
+            .attr('height', x.rangeBand() );
+      else
+        bars.transition()
+            .attr('transform', function(d,i) {
+              //TODO: stacked must be all positive or all negative, not both?
+              return 'translate(' +
+              (getY(d,i) < 0 ? y(getY(d,i)) : y(0))
+              + ',' +
+              (d.series * x.rangeBand() / data.length
+              +
+              x(getX(d,i)) )
+              + ')'
+            })
+          .select('rect')
+            .attr('height', x.rangeBand() / data.length )
+            .attr('width', function(d,i) {
+              return Math.max(Math.abs(y(getY(d,i)) - y(0)),1)
+            });
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.stacked = function(_) {
+    if (!arguments.length) return stacked;
+    stacked = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.barColor = function(_) {
+    if (!arguments.length) return barColor;
+    barColor = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.disabled = function(_) {
+    if (!arguments.length) return disabled;
+    disabled = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.delay = function(_) {
+    if (!arguments.length) return delay;
+    delay = _;
+    return chart;
+  };
+
+  chart.showValues = function(_) {
+    if (!arguments.length) return showValues;
+    showValues = _;
+    return chart;
+  };
+
+  chart.showBarLabels = function(_) {
+    if (!arguments.length) return showBarLabels;
+    showBarLabels = _;
+    return chart;
+  };
+
+
+  chart.valueFormat= function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.valuePadding = function(_) {
+    if (!arguments.length) return valuePadding;
+    valuePadding = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.multiBarHorizontalChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var multibar = nv.models.multiBarHorizontal()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend().height(30)
+    , controls = nv.models.legend().height(30)
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor()
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , stacked = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + ' - ' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , state = { stacked: stacked }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = function() { return showControls ? 180 : 0 }
+    , transitionDuration = 250
+    ;
+
+  multibar
+    .stacked(stacked)
+    ;
+  xAxis
+    .orient('left')
+    .tickPadding(5)
+    .highlightZero(false)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient('bottom')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = multibar.xScale();
+      y = multibar.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multiBarHorizontalChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarHorizontalChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis')
+            .append('g').attr('class', 'nv-zeroLine')
+            .append('line');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth - controlWidth());
+
+        if (multibar.barColor())
+          data.forEach(function(series,i) {
+            series.color = d3.rgb('#ccc').darker(i * 1.5).toString();
+          })
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Grouped', disabled: multibar.stacked() },
+          { key: 'Stacked', disabled: !multibar.stacked() }
+        ];
+
+        controls.width(controlWidth()).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      multibar
+        .disabled(data.map(function(series) { return series.disabled }))
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(multibar);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableHeight / 24 )
+            .tickSize(-availableWidth, 0);
+
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+          var xTicks = g.select('.nv-x.nv-axis').selectAll('g');
+
+          xTicks
+              .selectAll('line, text');
+      }
+
+      if (showYAxis) {
+          yAxis
+            .scale(y)
+            .ticks( availableWidth / 100 )
+            .tickSize( -availableHeight, 0);
+
+          g.select('.nv-y.nv-axis')
+              .attr('transform', 'translate(0,' + availableHeight + ')');
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+      // Zero line
+      g.select(".nv-zeroLine line")
+        .attr("x1", y(0))
+        .attr("x2", y(0))
+        .attr("y1", 0)
+        .attr("y2", -availableHeight)
+        ;
+
+      //------------------------------------------------------------
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        state.stacked = multibar.stacked();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.stacked !== 'undefined') {
+          multibar.stacked(e.stacked);
+          state.stacked = e.stacked;
+        }
+
+        chart.update();
+      });
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.multibar = multibar;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY',
+    'clipEdge', 'id', 'delay', 'showValues','showBarLabels', 'valueFormat', 'stacked', 'barColor');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
+nv.models.multiChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      color = d3.scale.category20().range(),
+      width = null, 
+      height = null,
+      showLegend = true,
+      tooltips = true,
+      tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      },
+      x,
+      y,
+      yDomain1,
+      yDomain2
+      ; //can be accessed via chart.lines.[x/y]Scale()
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x = d3.scale.linear(),
+      yScale1 = d3.scale.linear(),
+      yScale2 = d3.scale.linear(),
+
+      lines1 = nv.models.line().yScale(yScale1),
+      lines2 = nv.models.line().yScale(yScale2),
+
+      bars1 = nv.models.multiBar().stacked(false).yScale(yScale1),
+      bars2 = nv.models.multiBar().stacked(false).yScale(yScale2),
+
+      stack1 = nv.models.stackedArea().yScale(yScale1),
+      stack2 = nv.models.stackedArea().yScale(yScale2),
+
+      xAxis = nv.models.axis().scale(x).orient('bottom').tickPadding(5),
+      yAxis1 = nv.models.axis().scale(yScale1).orient('left'),
+      yAxis2 = nv.models.axis().scale(yScale2).orient('right'),
+
+      legend = nv.models.legend().height(30),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines1.x()(e.point, e.pointIndex)),
+        y = ((e.series.yAxis == 2) ? yAxis2 : yAxis1).tickFormat()(lines1.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, undefined, undefined, offsetElement.offsetParent);
+  };
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      chart.update = function() { container.transition().call(chart); };
+      chart.container = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      var dataLines1 = data.filter(function(d) {return !d.disabled && d.type == 'line' && d.yAxis == 1})
+      var dataLines2 = data.filter(function(d) {return !d.disabled && d.type == 'line' && d.yAxis == 2})
+      var dataBars1 = data.filter(function(d) {return !d.disabled && d.type == 'bar' && d.yAxis == 1})
+      var dataBars2 = data.filter(function(d) {return !d.disabled && d.type == 'bar' && d.yAxis == 2})
+      var dataStack1 = data.filter(function(d) {return !d.disabled && d.type == 'area' && d.yAxis == 1})
+      var dataStack2 = data.filter(function(d) {return !d.disabled && d.type == 'area' && d.yAxis == 2})
+
+      var series1 = data.filter(function(d) {return !d.disabled && d.yAxis == 1})
+            .map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: d.x, y: d.y }
+              })
+            })
+
+      var series2 = data.filter(function(d) {return !d.disabled && d.yAxis == 2})
+            .map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: d.x, y: d.y }
+              })
+            })
+
+      x   .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      var wrap = container.selectAll('g.wrap.multiChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 multiChart').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y1 axis');
+      gEnter.append('g').attr('class', 'y2 axis');
+      gEnter.append('g').attr('class', 'lines1Wrap');
+      gEnter.append('g').attr('class', 'lines2Wrap');
+      gEnter.append('g').attr('class', 'bars1Wrap');
+      gEnter.append('g').attr('class', 'bars2Wrap');
+      gEnter.append('g').attr('class', 'stack1Wrap');
+      gEnter.append('g').attr('class', 'stack2Wrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+      var g = wrap.select('g');
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.legendWrap')
+            .datum(data.map(function(series) { 
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.yAxis == 1 ? '' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+
+      lines1
+        .width(availableWidth)
+        .height(availableHeight)
+        .interpolate("monotone")
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'line'}));
+
+      lines2
+        .width(availableWidth)
+        .height(availableHeight)
+        .interpolate("monotone")
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'line'}));
+
+      bars1
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'bar'}));
+
+      bars2
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'bar'}));
+
+      stack1
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'area'}));
+
+      stack2
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'area'}));
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var lines1Wrap = g.select('.lines1Wrap')
+          .datum(dataLines1)
+      var bars1Wrap = g.select('.bars1Wrap')
+          .datum(dataBars1)
+      var stack1Wrap = g.select('.stack1Wrap')
+          .datum(dataStack1)
+
+      var lines2Wrap = g.select('.lines2Wrap')
+          .datum(dataLines2)
+      var bars2Wrap = g.select('.bars2Wrap')
+          .datum(dataBars2)
+      var stack2Wrap = g.select('.stack2Wrap')
+          .datum(dataStack2)
+
+      var extraValue1 = dataStack1.length ? dataStack1.map(function(a){return a.values}).reduce(function(a,b){
+        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})
+      }).concat([{x:0, y:0}]) : []
+      var extraValue2 = dataStack2.length ? dataStack2.map(function(a){return a.values}).reduce(function(a,b){
+        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})
+      }).concat([{x:0, y:0}]) : []
+
+      yScale1 .domain(yDomain1 || d3.extent(d3.merge(series1).concat(extraValue1), function(d) { return d.y } ))
+              .range([0, availableHeight])
+
+      yScale2 .domain(yDomain2 || d3.extent(d3.merge(series2).concat(extraValue2), function(d) { return d.y } ))
+              .range([0, availableHeight])
+
+      lines1.yDomain(yScale1.domain())
+      bars1.yDomain(yScale1.domain())
+      stack1.yDomain(yScale1.domain())
+
+      lines2.yDomain(yScale2.domain())
+      bars2.yDomain(yScale2.domain())
+      stack2.yDomain(yScale2.domain())
+
+      if(dataStack1.length){d3.transition(stack1Wrap).call(stack1);}
+      if(dataStack2.length){d3.transition(stack2Wrap).call(stack2);}
+
+      if(dataBars1.length){d3.transition(bars1Wrap).call(bars1);}
+      if(dataBars2.length){d3.transition(bars2Wrap).call(bars2);}
+
+      if(dataLines1.length){d3.transition(lines1Wrap).call(lines1);}
+      if(dataLines2.length){d3.transition(lines2Wrap).call(lines2);}
+      
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + availableHeight + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis1
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+
+      d3.transition(g.select('.y1.axis'))
+          .call(yAxis1);
+
+      yAxis2
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y2.axis'))
+          .call(yAxis2);
+
+      g.select('.y2.axis')
+          .style('opacity', series2.length ? 1 : 0)
+          .attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+     
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  lines2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  stack1.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    if (!Math.round(stack1.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stack1.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  stack2.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    if (!Math.round(stack2.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stack2.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+    lines1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  lines2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+
+
+  //============================================================
+  // Global getters and setters
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.lines1 = lines1;
+  chart.lines2 = lines2;
+  chart.bars1 = bars1;
+  chart.bars2 = bars2;
+  chart.stack1 = stack1;
+  chart.stack2 = stack2;
+  chart.xAxis = xAxis;
+  chart.yAxis1 = yAxis1;
+  chart.yAxis2 = yAxis2;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines1.x(_);
+    bars1.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines1.y(_);
+    bars1.y(_);
+    return chart;
+  };
+
+  chart.yDomain1 = function(_) {
+    if (!arguments.length) return yDomain1;
+    yDomain1 = _;
+    return chart;
+  };
+
+  chart.yDomain2 = function(_) {
+    if (!arguments.length) return yDomain2;
+    yDomain2 = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  return chart;
+}
+
+
+nv.models.ohlcBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , getOpen = function(d) { return d.open }
+    , getClose = function(d) { return d.close }
+    , getHigh = function(d) { return d.high }
+    , getLow = function(d) { return d.low }
+    , forceX = []
+    , forceY = []
+    , padData     = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart
+    , clipEdge = true
+    , color = nv.utils.defaultColor()
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  //TODO: store old scales for transitions
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ));
+
+      if (padData)
+        x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || [
+            d3.min(data[0].values.map(getLow).concat(forceY)),
+            d3.max(data[0].values.map(getHigh).concat(forceY))
+          ])
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-ohlcBar').data([data[0].values]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-ohlcBar');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-ticks');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+            dispatch.chartClick({
+                data: d,
+                index: i,
+                pos: d3.event,
+                id: id
+            });
+          });
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-chart-clip-path-' + id)
+        .append('rect');
+
+      wrap.select('#nv-chart-clip-path-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');
+
+
+
+      var ticks = wrap.select('.nv-ticks').selectAll('.nv-tick')
+          .data(function(d) { return d });
+
+      ticks.exit().remove();
+
+
+      var ticksEnter = ticks.enter().append('path')
+          .attr('class', function(d,i,j) { return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i })
+          .attr('d', function(d,i) {
+            var w = (availableWidth / data[0].values.length) * .9;
+            return 'm0,0l0,'
+                 + (y(getOpen(d,i))
+                 - y(getHigh(d,i)))
+                 + 'l'
+                 + (-w/2)
+                 + ',0l'
+                 + (w/2)
+                 + ',0l0,'
+                 + (y(getLow(d,i)) - y(getOpen(d,i)))
+                 + 'l0,'
+                 + (y(getClose(d,i))
+                 - y(getLow(d,i)))
+                 + 'l'
+                 + (w/2)
+                 + ',0l'
+                 + (-w/2)
+                 + ',0z';
+          })
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })
+          //.attr('fill', function(d,i) { return color[0]; })
+          //.attr('stroke', function(d,i) { return color[0]; })
+          //.attr('x', 0 )
+          //.attr('y', function(d,i) {  return y(Math.max(0, getY(d,i))) })
+          //.attr('height', function(d,i) { return Math.abs(y(getY(d,i)) - y(0)) })
+          .on('mouseover', function(d,i) {
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+                point: d,
+                series: data[0],
+                pos: [x(getX(d,i)), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+                pointIndex: i,
+                seriesIndex: 0,
+                e: d3.event
+            });
+
+          })
+          .on('mouseout', function(d,i) {
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    point: d,
+                    series: data[0],
+                    pointIndex: i,
+                    seriesIndex: 0,
+                    e: d3.event
+                });
+          })
+          .on('click', function(d,i) {
+                dispatch.elementClick({
+                    //label: d[label],
+                    value: getY(d,i),
+                    data: d,
+                    index: i,
+                    pos: [x(getX(d,i)), y(getY(d,i))],
+                    e: d3.event,
+                    id: id
+                });
+              d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+              dispatch.elementDblClick({
+                  //label: d[label],
+                  value: getY(d,i),
+                  data: d,
+                  index: i,
+                  pos: [x(getX(d,i)), y(getY(d,i))],
+                  e: d3.event,
+                  id: id
+              });
+              d3.event.stopPropagation();
+          });
+
+      ticks
+          .attr('class', function(d,i,j) { return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i })
+      d3.transition(ticks)
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })
+          .attr('d', function(d,i) {
+            var w = (availableWidth / data[0].values.length) * .9;
+            return 'm0,0l0,'
+                 + (y(getOpen(d,i))
+                 - y(getHigh(d,i)))
+                 + 'l'
+                 + (-w/2)
+                 + ',0l'
+                 + (w/2)
+                 + ',0l0,'
+                 + (y(getLow(d,i))
+                 - y(getOpen(d,i)))
+                 + 'l0,'
+                 + (y(getClose(d,i))
+                 - y(getLow(d,i)))
+                 + 'l'
+                 + (w/2)
+                 + ',0l'
+                 + (-w/2)
+                 + ',0z';
+          })
+          //.attr('width', (availableWidth / data[0].values.length) * .9 )
+
+
+      //d3.transition(ticks)
+          //.attr('y', function(d,i) {  return y(Math.max(0, getY(d,i))) })
+          //.attr('height', function(d,i) { return Math.abs(y(getY(d,i)) - y(0)) });
+          //.order();  // not sure if this makes any sense for this model
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.open = function(_) {
+    if (!arguments.length) return getOpen;
+    getOpen = _;
+    return chart;
+  };
+
+  chart.close = function(_) {
+    if (!arguments.length) return getClose;
+    getClose = _;
+    return chart;
+  };
+
+  chart.high = function(_) {
+    if (!arguments.length) return getHigh;
+    getHigh = _;
+    return chart;
+  };
+
+  chart.low = function(_) {
+    if (!arguments.length) return getLow;
+    getLow = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+nv.models.pie = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 500
+    , height = 500
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , getDescription = function(d) { return d.description }
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , color = nv.utils.defaultColor()
+    , valueFormat = d3.format(',.2f')
+    , showLabels = true
+    , pieLabelsOutside = true
+    , donutLabelsOutside = false
+    , labelType = "key"
+    , labelThreshold = .02 //if slice percentage is under this, don't show label
+    , donut = false
+    , labelSunbeamLayout = false
+    , startAngle = false
+    , endAngle = false
+    , donutRatio = 0.5
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          radius = Math.min(availableWidth, availableHeight) / 2,
+          arcRadius = radius-(radius / 5),
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      //var wrap = container.selectAll('.nv-wrap.nv-pie').data([data]);
+      var wrap = container.selectAll('.nv-wrap.nv-pie').data(data);
+      var wrapEnter = wrap.enter().append('g').attr('class','nvd3 nv-wrap nv-pie nv-chart-' + id);
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-pie');
+      gEnter.append('g').attr('class', 'nv-pieLabels');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+      g.select('.nv-pie').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+      g.select('.nv-pieLabels').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+              dispatch.chartClick({
+                  data: d,
+                  index: i,
+                  pos: d3.event,
+                  id: id
+              });
+          });
+
+
+      var arc = d3.svg.arc()
+                  .outerRadius(arcRadius);
+
+      if (startAngle) arc.startAngle(startAngle)
+      if (endAngle) arc.endAngle(endAngle);
+      if (donut) arc.innerRadius(radius * donutRatio);
+
+      // Setup the Pie chart and choose the data element
+      var pie = d3.layout.pie()
+          .sort(null)
+          .value(function(d) { return d.disabled ? 0 : getY(d) });
+
+      var slices = wrap.select('.nv-pie').selectAll('.nv-slice')
+          .data(pie);
+
+      var pieLabels = wrap.select('.nv-pieLabels').selectAll('.nv-label')
+          .data(pie);
+
+      slices.exit().remove();
+      pieLabels.exit().remove();
+
+      var ae = slices.enter().append('g')
+              .attr('class', 'nv-slice')
+              .on('mouseover', function(d,i){
+                d3.select(this).classed('hover', true);
+                dispatch.elementMouseover({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    pointIndex: i,
+                    pos: [d3.event.pageX, d3.event.pageY],
+                    id: id
+                });
+              })
+              .on('mouseout', function(d,i){
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    id: id
+                });
+              })
+              .on('click', function(d,i) {
+                dispatch.elementClick({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+                d3.event.stopPropagation();
+              })
+              .on('dblclick', function(d,i) {
+                dispatch.elementDblClick({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+                d3.event.stopPropagation();
+              });
+
+        slices
+            .attr('fill', function(d,i) { return color(d, i); })
+            .attr('stroke', function(d,i) { return color(d, i); });
+
+        var paths = ae.append('path')
+            .each(function(d) { this._current = d; });
+            //.attr('d', arc);
+
+        slices.select('path')
+          .transition()
+            .attr('d', arc)
+            .attrTween('d', arcTween);
+
+        if (showLabels) {
+          // This does the normal label
+          var labelsArc = d3.svg.arc().innerRadius(0);
+
+          if (pieLabelsOutside){ labelsArc = arc; }
+
+          if (donutLabelsOutside) { labelsArc = d3.svg.arc().outerRadius(arc.outerRadius()); }
+
+          pieLabels.enter().append("g").classed("nv-label",true)
+            .each(function(d,i) {
+                var group = d3.select(this);
+
+                group
+                  .attr('transform', function(d) {
+                       if (labelSunbeamLayout) {
+                         d.outerRadius = arcRadius + 10; // Set Outer Coordinate
+                         d.innerRadius = arcRadius + 15; // Set Inner Coordinate
+                         var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);
+                         if ((d.startAngle+d.endAngle)/2 < Math.PI) {
+                           rotateAngle -= 90;
+                         } else {
+                           rotateAngle += 90;
+                         }
+                         return 'translate(' + labelsArc.centroid(d) + ') rotate(' + rotateAngle + ')';
+                       } else {
+                         d.outerRadius = radius + 10; // Set Outer Coordinate
+                         d.innerRadius = radius + 15; // Set Inner Coordinate
+                         return 'translate(' + labelsArc.centroid(d) + ')'
+                       }
+                  });
+
+                group.append('rect')
+                    .style('stroke', '#fff')
+                    .style('fill', '#fff')
+                    .attr("rx", 3)
+                    .attr("ry", 3);
+
+                group.append('text')
+                    .style('text-anchor', labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle') //center the text on it's origin or begin/end if orthogonal aligned
+                    .style('fill', '#000')
+
+            });
+
+          var labelLocationHash = {};
+          var avgHeight = 14;
+          var avgWidth = 140;
+          var createHashKey = function(coordinates) {
+
+              return Math.floor(coordinates[0]/avgWidth) * avgWidth + ',' + Math.floor(coordinates[1]/avgHeight) * avgHeight;
+          };
+          pieLabels.transition()
+                .attr('transform', function(d) {
+                  if (labelSunbeamLayout) {
+                      d.outerRadius = arcRadius + 10; // Set Outer Coordinate
+                      d.innerRadius = arcRadius + 15; // Set Inner Coordinate
+                      var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);
+                      if ((d.startAngle+d.endAngle)/2 < Math.PI) {
+                        rotateAngle -= 90;
+                      } else {
+                        rotateAngle += 90;
+                      }
+                      return 'translate(' + labelsArc.centroid(d) + ') rotate(' + rotateAngle + ')';
+                    } else {
+                      d.outerRadius = radius + 10; // Set Outer Coordinate
+                      d.innerRadius = radius + 15; // Set Inner Coordinate
+
+                      /*
+                      Overlapping pie labels are not good. What this attempts to do is, prevent overlapping.
+                      Each label location is hashed, and if a hash collision occurs, we assume an overlap.
+                      Adjust the label's y-position to remove the overlap.
+                      */
+                      var center = labelsArc.centroid(d);
+                      var hashKey = createHashKey(center);
+                      if (labelLocationHash[hashKey]) {
+                        center[1] -= avgHeight;
+                      }
+                      labelLocationHash[createHashKey(center)] = true;
+                      return 'translate(' + center + ')'
+                    }
+                });
+          pieLabels.select(".nv-label text")
+                .style('text-anchor', labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle') //center the text on it's origin or begin/end if orthogonal aligned
+                .text(function(d, i) {
+                  var percent = (d.endAngle - d.startAngle) / (2 * Math.PI);
+                  var labelTypes = {
+                    "key" : getX(d.data),
+                    "value": getY(d.data),
+                    "percent": d3.format('%')(percent)
+                  };
+                  return (d.value && percent > labelThreshold) ? labelTypes[labelType] : '';
+                });
+        }
+
+
+        // Computes the angle of an arc, converting from radians to degrees.
+        function angle(d) {
+          var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
+          return a > 90 ? a - 180 : a;
+        }
+
+        function arcTween(a) {
+          a.endAngle = isNaN(a.endAngle) ? 0 : a.endAngle;
+          a.startAngle = isNaN(a.startAngle) ? 0 : a.startAngle;
+          if (!donut) a.innerRadius = 0;
+          var i = d3.interpolate(this._current, a);
+          this._current = i(0);
+          return function(t) {
+            return arc(i(t));
+          };
+        }
+
+        function tweenPie(b) {
+          b.innerRadius = 0;
+          var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
+          return function(t) {
+              return arc(i(t));
+          };
+        }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.values = function(_) {
+    nv.log("pie.values() is no longer supported.");
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.description = function(_) {
+    if (!arguments.length) return getDescription;
+    getDescription = _;
+    return chart;
+  };
+
+  chart.showLabels = function(_) {
+    if (!arguments.length) return showLabels;
+    showLabels = _;
+    return chart;
+  };
+
+  chart.labelSunbeamLayout = function(_) {
+    if (!arguments.length) return labelSunbeamLayout;
+    labelSunbeamLayout = _;
+    return chart;
+  };
+
+  chart.donutLabelsOutside = function(_) {
+    if (!arguments.length) return donutLabelsOutside;
+    donutLabelsOutside = _;
+    return chart;
+  };
+
+  chart.pieLabelsOutside = function(_) {
+    if (!arguments.length) return pieLabelsOutside;
+    pieLabelsOutside = _;
+    return chart;
+  };
+
+  chart.labelType = function(_) {
+    if (!arguments.length) return labelType;
+    labelType = _;
+    labelType = labelType || "key";
+    return chart;
+  };
+
+  chart.donut = function(_) {
+    if (!arguments.length) return donut;
+    donut = _;
+    return chart;
+  };
+
+  chart.donutRatio = function(_) {
+    if (!arguments.length) return donutRatio;
+    donutRatio = _;
+    return chart;
+  };
+
+  chart.startAngle = function(_) {
+    if (!arguments.length) return startAngle;
+    startAngle = _;
+    return chart;
+  };
+
+  chart.endAngle = function(_) {
+    if (!arguments.length) return endAngle;
+    endAngle = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.valueFormat = function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.labelThreshold = function(_) {
+    if (!arguments.length) return labelThreshold;
+    labelThreshold = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
+nv.models.pieChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var pie = nv.models.pie()
+    , legend = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 20, left: 20}
+    , width = null
+    , height = null
+    , showLegend = true
+    , color = nv.utils.defaultColor()
+    , tooltips = true
+    , tooltip = function(key, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , state = {}
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var tooltipLabel = pie.description()(e.point) || pie.x()(e.point)
+    var left = e.pos[0] + ( (offsetElement && offsetElement.offsetLeft) || 0 ),
+        top = e.pos[1] + ( (offsetElement && offsetElement.offsetTop) || 0),
+        y = pie.valueFormat()(pie.y()(e.point)),
+        content = tooltip(tooltipLabel, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-pieChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-pieChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-pieWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend
+          .width( availableWidth )
+          .key(pie.x());
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      pie
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var pieWrap = g.select('.nv-pieWrap')
+          .datum([data]);
+
+      d3.transition(pieWrap).call(pie);
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      pie.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  pie.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  dispatch.on('tooltipShow', function(e) {
+    if (tooltips) showTooltip(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.legend = legend;
+  chart.dispatch = dispatch;
+  chart.pie = pie;
+
+  d3.rebind(chart, pie, 'valueFormat', 'values', 'x', 'y', 'description', 'id', 'showLabels', 'donutLabelsOutside', 'pieLabelsOutside', 'labelType', 'donut', 'donutRatio', 'labelThreshold');
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    pie.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.scatter = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin       = {top: 0, right: 0, bottom: 0, left: 0}
+    , width        = 960
+    , height       = 500
+    , color        = nv.utils.defaultColor() // chooses color
+    , id           = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't select one
+    , x            = d3.scale.linear()
+    , y            = d3.scale.linear()
+    , z            = d3.scale.linear() //linear because d3.svg.shape.size is treated as area
+    , getX         = function(d) { return d.x } // accessor to get the x value
+    , getY         = function(d) { return d.y } // accessor to get the y value
+    , getSize      = function(d) { return d.size || 1} // accessor to get the point size
+    , getShape     = function(d) { return d.shape || 'circle' } // accessor to get point shape
+    , onlyCircles  = true // Set to false to use shapes
+    , forceX       = [] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)
+    , forceY       = [] // List of numbers to Force into the Y scale
+    , forceSize    = [] // List of numbers to Force into the Size scale
+    , interactive  = true // If true, plots a voronoi overlay for advanced point intersection
+    , pointKey     = null
+    , pointActive  = function(d) { return !d.notActive } // any points that return false will be filtered out
+    , padData      = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart
+    , padDataOuter = .1 //outerPadding to imitate ordinal scale outer padding
+    , clipEdge     = false // if true, masks points within x and y scale
+    , clipVoronoi  = true // if true, masks each point with a circle... can turn off to slightly increase performance
+    , clipRadius   = function() { return 25 } // function to get the radius for voronoi point clips
+    , xDomain      = null // Override x domain (skips the calculation from data)
+    , yDomain      = null // Override y domain
+    , xRange       = null // Override x range
+    , yRange       = null // Override y range
+    , sizeDomain   = null // Override point size domain
+    , sizeRange    = null
+    , singlePoint  = false
+    , dispatch     = d3.dispatch('elementClick', 'elementMouseover', 'elementMouseout')
+    , useVoronoi   = true
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0, z0 // used to store previous scales
+    , timeoutID
+    , needsUpdate = false // Flag for when the points are visually updating, but the interactive layer is behind, to disable tooltips
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain && sizeDomain) ? [] : // if we know xDomain and yDomain and sizeDomain, no need to calculate.... if Size is constant remember to set sizeDomain to speed up performance
+            d3.merge(
+              data.map(function(d) {
+                return d.values.map(function(d,i) {
+                  return { x: getX(d,i), y: getY(d,i), size: getSize(d,i) }
+                })
+              })
+            );
+
+      x   .domain(xDomain || d3.extent(seriesData.map(function(d) { return d.x; }).concat(forceX)))
+
+      if (padData && data[0])
+        x.range(xRange || [(availableWidth * padDataOuter +  availableWidth) / (2 *data[0].values.length), availableWidth - availableWidth * (1 + padDataOuter) / (2 * data[0].values.length)  ]);
+        //x.range([availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(seriesData.map(function(d) { return d.y }).concat(forceY)))
+          .range(yRange || [availableHeight, 0]);
+
+      z   .domain(sizeDomain || d3.extent(seriesData.map(function(d) { return d.size }).concat(forceSize)))
+          .range(sizeRange || [16, 256]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1] || y.domain()[0] === y.domain()[1]) singlePoint = true;
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] - y.domain()[0] * 0.01, y.domain()[1] + y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      if ( isNaN(x.domain()[0])) {
+          x.domain([-1,1]);
+      }
+
+      if ( isNaN(y.domain()[0])) {
+          y.domain([-1,1]);
+      }
+
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+      z0 = z0 || z;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatter').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatter nv-chart-' + id + (singlePoint ? ' nv-single-point' : ''));
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+      gEnter.append('g').attr('class', 'nv-point-paths');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+      function updateInteractiveLayer() {
+
+        if (!interactive) return false;
+
+        var eventElements;
+
+        var vertices = d3.merge(data.map(function(group, groupIndex) {
+            return group.values
+              .map(function(point, pointIndex) {
+                // *Adding noise to make duplicates very unlikely
+                // *Injecting series and point index for reference
+                /* *Adding a 'jitter' to the points, because there's an issue in d3.geom.voronoi.
+                */
+                var pX = getX(point,pointIndex);
+                var pY = getY(point,pointIndex);
+
+                return [x(pX)+ Math.random() * 1e-7,
+                        y(pY)+ Math.random() * 1e-7,
+                        groupIndex,
+                        pointIndex, point]; //temp hack to add noise untill I think of a better way so there are no duplicates
+              })
+              .filter(function(pointArray, pointIndex) {
+                return pointActive(pointArray[4], pointIndex); // Issue #237.. move filter to after map, so pointIndex is correct!
+              })
+          })
+        );
+
+
+
+        //inject series and point index for reference into voronoi
+        if (useVoronoi === true) {
+
+          if (clipVoronoi) {
+            var pointClipsEnter = wrap.select('defs').selectAll('.nv-point-clips')
+                .data([id])
+              .enter();
+
+            pointClipsEnter.append('clipPath')
+                  .attr('class', 'nv-point-clips')
+                  .attr('id', 'nv-points-clip-' + id);
+
+            var pointClips = wrap.select('#nv-points-clip-' + id).selectAll('circle')
+                .data(vertices);
+            pointClips.enter().append('circle')
+                .attr('r', clipRadius);
+            pointClips.exit().remove();
+            pointClips
+                .attr('cx', function(d) { return d[0] })
+                .attr('cy', function(d) { return d[1] });
+
+            wrap.select('.nv-point-paths')
+                .attr('clip-path', 'url(#nv-points-clip-' + id + ')');
+          }
+
+
+          if(vertices.length) {
+            // Issue #283 - Adding 2 dummy points to the voronoi b/c voronoi requires min 3 points to work
+            vertices.push([x.range()[0] - 20, y.range()[0] - 20, null, null]);
+            vertices.push([x.range()[1] + 20, y.range()[1] + 20, null, null]);
+            vertices.push([x.range()[0] - 20, y.range()[0] + 20, null, null]);
+            vertices.push([x.range()[1] + 20, y.range()[1] - 20, null, null]);
+          }
+
+          var bounds = d3.geom.polygon([
+              [-10,-10],
+              [-10,height + 10],
+              [width + 10,height + 10],
+              [width + 10,-10]
+          ]);
+
+          var voronoi = d3.geom.voronoi(vertices).map(function(d, i) {
+              return {
+                'data': bounds.clip(d),
+                'series': vertices[i][2],
+                'point': vertices[i][3]
+              }
+            });
+
+
+          var pointPaths = wrap.select('.nv-point-paths').selectAll('path')
+              .data(voronoi);
+          pointPaths.enter().append('path')
+              .attr('class', function(d,i) { return 'nv-path-'+i; });
+          pointPaths.exit().remove();
+          pointPaths
+              .attr('d', function(d) {
+                if (d.data.length === 0)
+                    return 'M 0 0'
+                else
+                    return 'M' + d.data.join('L') + 'Z';
+              });
+
+          var mouseEventCallback = function(d,mDispatch) {
+                if (needsUpdate) return 0;
+                var series = data[d.series];
+                if (typeof series === 'undefined') return;
+
+                var point  = series.values[d.point];
+
+                mDispatch({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: d.point
+                });
+          };
+
+          pointPaths
+              .on('click', function(d) {
+                mouseEventCallback(d, dispatch.elementClick);
+              })
+              .on('mouseover', function(d) {
+                mouseEventCallback(d, dispatch.elementMouseover);
+              })
+              .on('mouseout', function(d, i) {
+                mouseEventCallback(d, dispatch.elementMouseout);
+              });
+
+
+        } else {
+          /*
+          // bring data in form needed for click handlers
+          var dataWithPoints = vertices.map(function(d, i) {
+              return {
+                'data': d,
+                'series': vertices[i][2],
+                'point': vertices[i][3]
+              }
+            });
+           */
+
+          // add event handlers to points instead voronoi paths
+          wrap.select('.nv-groups').selectAll('.nv-group')
+            .selectAll('.nv-point')
+              //.data(dataWithPoints)
+              //.style('pointer-events', 'auto') // recativate events, disabled by css
+              .on('click', function(d,i) {
+                //nv.log('test', d, i);
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementClick({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              })
+              .on('mouseover', function(d,i) {
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementMouseover({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              })
+              .on('mouseout', function(d,i) {
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementMouseout({
+                  point: point,
+                  series: series,
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              });
+          }
+
+          needsUpdate = false;
+      }
+
+      needsUpdate = true;
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover });
+      groups
+          .transition()
+          .style('fill', function(d,i) { return color(d, i) })
+          .style('stroke', function(d,i) { return color(d, i) })
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .5);
+
+
+      if (onlyCircles) {
+
+        var points = groups.selectAll('circle.nv-point')
+            .data(function(d) { return d.values }, pointKey);
+        points.enter().append('circle')
+            .style('fill', function (d,i) { return d.color })
+            .style('stroke', function (d,i) { return d.color })
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+            .attr('r', function(d,i) { return Math.sqrt(z(getSize(d,i))/Math.PI) });
+        points.exit().remove();
+        groups.exit().selectAll('path.nv-point').transition()
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+            .remove();
+        points.each(function(d,i) {
+          d3.select(this)
+            .classed('nv-point', true)
+            .classed('nv-point-' + i, true)
+            .classed('hover',false)
+            ;
+        });
+        points.transition()
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+            .attr('r', function(d,i) { return Math.sqrt(z(getSize(d,i))/Math.PI) });
+
+      } else {
+
+        var points = groups.selectAll('path.nv-point')
+            .data(function(d) { return d.values });
+        points.enter().append('path')
+            .style('fill', function (d,i) { return d.color })
+            .style('stroke', function (d,i) { return d.color })
+            .attr('transform', function(d,i) {
+              return 'translate(' + x0(getX(d,i)) + ',' + y0(getY(d,i)) + ')'
+            })
+            .attr('d',
+              d3.svg.symbol()
+                .type(getShape)
+                .size(function(d,i) { return z(getSize(d,i)) })
+            );
+        points.exit().remove();
+        groups.exit().selectAll('path.nv-point')
+            .transition()
+            .attr('transform', function(d,i) {
+              return 'translate(' + x(getX(d,i)) + ',' + y(getY(d,i)) + ')'
+            })
+            .remove();
+        points.each(function(d,i) {
+          d3.select(this)
+            .classed('nv-point', true)
+            .classed('nv-point-' + i, true)
+            .classed('hover',false)
+            ;
+        });
+        points.transition()
+            .attr('transform', function(d,i) {
+              //nv.log(d,i,getX(d,i), x(getX(d,i)));
+              return 'translate(' + x(getX(d,i)) + ',' + y(getY(d,i)) + ')'
+            })
+            .attr('d',
+              d3.svg.symbol()
+                .type(getShape)
+                .size(function(d,i) { return z(getSize(d,i)) })
+            );
+      }
+
+
+      // Delay updating the invisible interactive layer for smoother animation
+      clearTimeout(timeoutID); // stop repeat calls to updateInteractiveLayer
+      timeoutID = setTimeout(updateInteractiveLayer, 300);
+      //updateInteractiveLayer();
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+      z0 = z.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+  chart.clearHighlights = function() {
+      //Remove the 'hover' class from all highlighted points.
+      d3.selectAll(".nv-chart-" + id + " .nv-point.hover").classed("hover",false);
+  };
+
+  chart.highlightPoint = function(seriesIndex,pointIndex,isHoverOver) {
+      d3.select(".nv-chart-" + id + " .nv-series-" + seriesIndex + " .nv-point-" + pointIndex)
+          .classed("hover",isHoverOver);
+  };
+
+
+  dispatch.on('elementMouseover.point', function(d) {
+     if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,true);
+  });
+
+  dispatch.on('elementMouseout.point', function(d) {
+     if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,false);
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.size = function(_) {
+    if (!arguments.length) return getSize;
+    getSize = d3.functor(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.zScale = function(_) {
+    if (!arguments.length) return z;
+    z = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.sizeDomain = function(_) {
+    if (!arguments.length) return sizeDomain;
+    sizeDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.sizeRange = function(_) {
+    if (!arguments.length) return sizeRange;
+    sizeRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.forceSize = function(_) {
+    if (!arguments.length) return forceSize;
+    forceSize = _;
+    return chart;
+  };
+
+  chart.interactive = function(_) {
+    if (!arguments.length) return interactive;
+    interactive = _;
+    return chart;
+  };
+
+  chart.pointKey = function(_) {
+    if (!arguments.length) return pointKey;
+    pointKey = _;
+    return chart;
+  };
+
+  chart.pointActive = function(_) {
+    if (!arguments.length) return pointActive;
+    pointActive = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.padDataOuter = function(_) {
+    if (!arguments.length) return padDataOuter;
+    padDataOuter = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.clipVoronoi= function(_) {
+    if (!arguments.length) return clipVoronoi;
+    clipVoronoi = _;
+    return chart;
+  };
+
+  chart.useVoronoi= function(_) {
+    if (!arguments.length) return useVoronoi;
+    useVoronoi = _;
+    if (useVoronoi === false) {
+        clipVoronoi = false;
+    }
+    return chart;
+  };
+
+  chart.clipRadius = function(_) {
+    if (!arguments.length) return clipRadius;
+    clipRadius = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.shape = function(_) {
+    if (!arguments.length) return getShape;
+    getShape = _;
+    return chart;
+  };
+
+  chart.onlyCircles = function(_) {
+    if (!arguments.length) return onlyCircles;
+    onlyCircles = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.singlePoint = function(_) {
+    if (!arguments.length) return singlePoint;
+    singlePoint = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+nv.models.scatterChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var scatter      = nv.models.scatter()
+    , xAxis        = nv.models.axis()
+    , yAxis        = nv.models.axis()
+    , legend       = nv.models.legend()
+    , controls     = nv.models.legend()
+    , distX        = nv.models.distribution()
+    , distY        = nv.models.distribution()
+    ;
+
+  var margin       = {top: 30, right: 20, bottom: 50, left: 75}
+    , width        = null
+    , height       = null
+    , color        = nv.utils.defaultColor()
+    , x            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.xScale()
+    , y            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.yScale()
+    , xPadding     = 0
+    , yPadding     = 0
+    , showDistX    = false
+    , showDistY    = false
+    , showLegend   = true
+    , showXAxis    = true
+    , showYAxis    = true
+    , rightAlignYAxis = false
+    , showControls = !!d3.fisheye
+    , fisheye      = 0
+    , pauseFisheye = false
+    , tooltips     = true
+    , tooltipX     = function(key, x, y) { return '<strong>' + x + '</strong>' }
+    , tooltipY     = function(key, x, y) { return '<strong>' + y + '</strong>' }
+    , tooltip      = null
+    , state = {}
+    , defaultState = null
+    , dispatch     = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , noData       = "No Data Available."
+    , transitionDuration = 250
+    ;
+
+  scatter
+    .xScale(x)
+    .yScale(y)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(10)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickPadding(10)
+    ;
+  distX
+    .axis('x')
+    ;
+  distY
+    .axis('y')
+    ;
+
+  controls.updateState(false);
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point, e.pointIndex)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point, e.pointIndex));
+
+      if( tooltipX != null )
+          nv.tooltip.show([leftX, topX], tooltipX(e.series.key, xVal, yVal, e, chart), 'n', 1, offsetElement, 'x-nvtooltip');
+      if( tooltipY != null )
+          nv.tooltip.show([leftY, topY], tooltipY(e.series.key, xVal, yVal, e, chart), 'e', 1, offsetElement, 'y-nvtooltip');
+      if( tooltip != null )
+          nv.tooltip.show([left, top], tooltip(e.series.key, xVal, yVal, e, chart), e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id());
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      // background for pointer events
+      gEnter.append('rect').attr('class', 'nvd3 nv-background');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+      gEnter.append('g').attr('class', 'nv-distWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        var legendWidth = (showControls) ? availableWidth / 2 : availableWidth;
+        legend.width(legendWidth);
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth - legendWidth) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      scatter
+          .width(availableWidth)
+          .height(availableHeight)
+          .color(data.map(function(d,i) {
+            return d.color || color(d, i);
+          }).filter(function(d,i) { return !data[i].disabled }));
+
+      if (xPadding !== 0)
+        scatter.xDomain(null);
+
+      if (yPadding !== 0)
+        scatter.yDomain(null);
+
+      wrap.select('.nv-scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(scatter);
+
+      //Adjust for x and y padding
+      if (xPadding !== 0) {
+        var xRange = x.domain()[1] - x.domain()[0];
+        scatter.xDomain([x.domain()[0] - (xPadding * xRange), x.domain()[1] + (xPadding * xRange)]);
+      }
+
+      if (yPadding !== 0) {
+        var yRange = y.domain()[1] - y.domain()[0];
+        scatter.yDomain([y.domain()[0] - (yPadding * yRange), y.domain()[1] + (yPadding * yRange)]);
+      }
+
+      //Only need to update the scatter again if x/yPadding changed the domain.
+      if (yPadding !== 0 || xPadding !== 0) {
+        wrap.select('.nv-scatterWrap')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(scatter);
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+      if (showXAxis) {
+        xAxis
+            .scale(x)
+            .ticks( xAxis.ticks() && xAxis.ticks().length ? xAxis.ticks() : availableWidth / 100 )
+            .tickSize( -availableHeight , 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .call(xAxis);
+
+      }
+
+      if (showYAxis) {
+        yAxis
+            .scale(y)
+            .ticks( yAxis.ticks() && yAxis.ticks().length ? yAxis.ticks() : availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .call(yAxis);
+      }
+
+
+      if (showDistX) {
+        distX
+            .getData(scatter.x())
+            .scale(x)
+            .width(availableWidth)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionX');
+        g.select('.nv-distributionX')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+      }
+
+      if (showDistY) {
+        distY
+            .getData(scatter.y())
+            .scale(y)
+            .width(availableHeight)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionY');
+        g.select('.nv-distributionY')
+            .attr('transform', 
+              'translate(' + (rightAlignYAxis ? availableWidth : -distY.size() ) + ',0)')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+      //------------------------------------------------------------
+
+
+
+
+      if (d3.fisheye) {
+        g.select('.nv-background')
+            .attr('width', availableWidth)
+            .attr('height', availableHeight);
+
+        g.select('.nv-background').on('mousemove', updateFisheye);
+        g.select('.nv-background').on('click', function() { pauseFisheye = !pauseFisheye;});
+        scatter.dispatch.on('elementClick.freezeFisheye', function() {
+          pauseFisheye = !pauseFisheye;
+        });
+      }
+
+
+      function updateFisheye() {
+        if (pauseFisheye) {
+          g.select('.nv-point-paths').style('pointer-events', 'all');
+          return false;
+        }
+
+        g.select('.nv-point-paths').style('pointer-events', 'none' );
+
+        var mouse = d3.mouse(this);
+        x.distortion(fisheye).focus(mouse[0]);
+        y.distortion(fisheye).focus(mouse[1]);
+
+        g.select('.nv-scatterWrap')
+            .call(scatter);
+
+        if (showXAxis)
+          g.select('.nv-x.nv-axis').call(xAxis);
+        
+        if (showYAxis)
+          g.select('.nv-y.nv-axis').call(yAxis);
+        
+        g.select('.nv-distributionX')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+        g.select('.nv-distributionY')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 2.5;
+        g.select('.nv-background') .style('pointer-events', d.disabled ? 'none' : 'all');
+        g.select('.nv-point-paths').style('pointer-events', d.disabled ? 'all' : 'none' );
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+          y.distortion(fisheye).focus(0);
+
+          g.select('.nv-scatterWrap').call(scatter);
+          g.select('.nv-x.nv-axis').call(xAxis);
+          g.select('.nv-y.nv-axis').call(yAxis);
+        } else {
+          pauseFisheye = false;
+        }
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+            .attr('y1', function(d,i) { return e.pos[1] - availableHeight;});
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+            .attr('x2', e.pos[0] + distX.size());
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+        .attr('y1', 0);
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+        .attr('x2', distY.size());
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.distX = distX;
+  chart.distY = distY;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'pointActive', 'x', 'y', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'sizeRange', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'useVoronoi');
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    distX.color(color);
+    distY.color(color);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+
+  chart.fisheye = function(_) {
+    if (!arguments.length) return fisheye;
+    fisheye = _;
+    return chart;
+  };
+
+  chart.xPadding = function(_) {
+    if (!arguments.length) return xPadding;
+    xPadding = _;
+    return chart;
+  };
+
+  chart.yPadding = function(_) {
+    if (!arguments.length) return yPadding;
+    yPadding = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltipXContent = function(_) {
+    if (!arguments.length) return tooltipX;
+    tooltipX = _;
+    return chart;
+  };
+
+  chart.tooltipYContent = function(_) {
+    if (!arguments.length) return tooltipY;
+    tooltipY = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+  
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.scatterPlusLineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var scatter      = nv.models.scatter()
+    , xAxis        = nv.models.axis()
+    , yAxis        = nv.models.axis()
+    , legend       = nv.models.legend()
+    , controls     = nv.models.legend()
+    , distX        = nv.models.distribution()
+    , distY        = nv.models.distribution()
+    ;
+
+  var margin       = {top: 30, right: 20, bottom: 50, left: 75}
+    , width        = null
+    , height       = null
+    , color        = nv.utils.defaultColor()
+    , x            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.xScale()
+    , y            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.yScale()
+    , showDistX    = false
+    , showDistY    = false
+    , showLegend   = true
+    , showXAxis    = true
+    , showYAxis    = true
+    , rightAlignYAxis = false
+    , showControls = !!d3.fisheye
+    , fisheye      = 0
+    , pauseFisheye = false
+    , tooltips     = true
+    , tooltipX     = function(key, x, y) { return '<strong>' + x + '</strong>' }
+    , tooltipY     = function(key, x, y) { return '<strong>' + y + '</strong>' }
+    , tooltip      = function(key, x, y, date) { return '<h3>' + key + '</h3>' 
+                                                      + '<p>' + date + '</p>' }
+    , state = {}
+    , defaultState = null
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , noData       = "No Data Available."
+    , transitionDuration = 250
+    ;
+
+  scatter
+    .xScale(x)
+    .yScale(y)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(10)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickPadding(10)
+    ;
+  distX
+    .axis('x')
+    ;
+  distY
+    .axis('y')
+    ;
+  
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point, e.pointIndex)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point, e.pointIndex));
+
+      if( tooltipX != null )
+          nv.tooltip.show([leftX, topX], tooltipX(e.series.key, xVal, yVal, e, chart), 'n', 1, offsetElement, 'x-nvtooltip');
+      if( tooltipY != null )
+          nv.tooltip.show([leftY, topY], tooltipY(e.series.key, xVal, yVal, e, chart), 'e', 1, offsetElement, 'y-nvtooltip');
+      if( tooltip != null )
+          nv.tooltip.show([left, top], tooltip(e.series.key, xVal, yVal, e.point.tooltip, e, chart), e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id());
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      // background for pointer events
+      gEnter.append('rect').attr('class', 'nvd3 nv-background').style("pointer-events","none");
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+      gEnter.append('g').attr('class', 'nv-regressionLinesWrap');
+      gEnter.append('g').attr('class', 'nv-distWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      scatter
+          .width(availableWidth)
+          .height(availableHeight)
+          .color(data.map(function(d,i) {
+            return d.color || color(d, i);
+          }).filter(function(d,i) { return !data[i].disabled }))
+
+      wrap.select('.nv-scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(scatter);
+
+      wrap.select('.nv-regressionLinesWrap')
+          .attr('clip-path', 'url(#nv-edge-clip-' + scatter.id() + ')');
+
+      var regWrap = wrap.select('.nv-regressionLinesWrap').selectAll('.nv-regLines')
+                      .data(function(d) {return d });
+      
+      regWrap.enter().append('g').attr('class', 'nv-regLines');
+
+      var regLine = regWrap.selectAll('.nv-regLine').data(function(d){return [d]});
+      var regLineEnter = regLine.enter()
+                       .append('line').attr('class', 'nv-regLine')
+                       .style('stroke-opacity', 0);
+
+      regLine
+          .transition()
+          .attr('x1', x.range()[0])
+          .attr('x2', x.range()[1])
+          .attr('y1', function(d,i) {return y(x.domain()[0] * d.slope + d.intercept) })
+          .attr('y2', function(d,i) { return y(x.domain()[1] * d.slope + d.intercept) })
+          .style('stroke', function(d,i,j) { return color(d,j) })
+          .style('stroke-opacity', function(d,i) {
+            return (d.disabled || typeof d.slope === 'undefined' || typeof d.intercept === 'undefined') ? 0 : 1 
+          });
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+            .scale(x)
+            .ticks( xAxis.ticks() ? xAxis.ticks() : availableWidth / 100 )
+            .tickSize( -availableHeight , 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+            .scale(y)
+            .ticks( yAxis.ticks() ? yAxis.ticks() : availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .call(yAxis);
+      }
+
+
+      if (showDistX) {
+        distX
+            .getData(scatter.x())
+            .scale(x)
+            .width(availableWidth)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionX');
+        g.select('.nv-distributionX')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+      }
+
+      if (showDistY) {
+        distY
+            .getData(scatter.y())
+            .scale(y)
+            .width(availableHeight)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionY');
+        g.select('.nv-distributionY')
+            .attr('transform', 'translate(' + (rightAlignYAxis ? availableWidth : -distY.size() ) + ',0)')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+      //------------------------------------------------------------
+
+
+
+
+      if (d3.fisheye) {
+        g.select('.nv-background')
+            .attr('width', availableWidth)
+            .attr('height', availableHeight)
+            ;
+
+        g.select('.nv-background').on('mousemove', updateFisheye);
+        g.select('.nv-background').on('click', function() { pauseFisheye = !pauseFisheye;});
+        scatter.dispatch.on('elementClick.freezeFisheye', function() {
+          pauseFisheye = !pauseFisheye;
+        });
+      }
+
+
+      function updateFisheye() {
+        if (pauseFisheye) {
+          g.select('.nv-point-paths').style('pointer-events', 'all');
+          return false;
+        }
+
+        g.select('.nv-point-paths').style('pointer-events', 'none' );
+
+        var mouse = d3.mouse(this);
+        x.distortion(fisheye).focus(mouse[0]);
+        y.distortion(fisheye).focus(mouse[1]);
+
+        g.select('.nv-scatterWrap')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(scatter);
+
+        if (showXAxis)
+          g.select('.nv-x.nv-axis').call(xAxis);
+
+        if (showYAxis)
+          g.select('.nv-y.nv-axis').call(yAxis);
+        
+        g.select('.nv-distributionX')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+        g.select('.nv-distributionY')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 2.5;
+        g.select('.nv-background') .style('pointer-events', d.disabled ? 'none' : 'all');
+        g.select('.nv-point-paths').style('pointer-events', d.disabled ? 'all' : 'none' );
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+          y.distortion(fisheye).focus(0);
+
+          g.select('.nv-scatterWrap').call(scatter);
+          g.select('.nv-x.nv-axis').call(xAxis);
+          g.select('.nv-y.nv-axis').call(yAxis);
+        } else {
+          pauseFisheye = false;
+        }
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+            .attr('y1', e.pos[1] - availableHeight);
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+            .attr('x2', e.pos[0] + distX.size());
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+        .attr('y1', 0);
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+        .attr('x2', distY.size());
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.distX = distX;
+  chart.distY = distY;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'pointActive', 'x', 'y', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'sizeRange', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'useVoronoi');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    distX.color(color);
+    distY.color(color);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.fisheye = function(_) {
+    if (!arguments.length) return fisheye;
+    fisheye = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltipXContent = function(_) {
+    if (!arguments.length) return tooltipX;
+    tooltipX = _;
+    return chart;
+  };
+
+  chart.tooltipYContent = function(_) {
+    if (!arguments.length) return tooltipY;
+    tooltipY = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.sparkline = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 2, right: 0, bottom: 2, left: 0}
+    , width = 400
+    , height = 32
+    , animate = true
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.getColor(['#000'])
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data, getX ))
+          .range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(data, getY ))
+          .range(yRange || [availableHeight, 0]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-sparkline').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparkline');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
+
+      //------------------------------------------------------------
+
+
+      var paths = wrap.selectAll('path')
+          .data(function(d) { return [d] });
+      paths.enter().append('path');
+      paths.exit().remove();
+      paths
+          .style('stroke', function(d,i) { return d.color || color(d, i) })
+          .attr('d', d3.svg.line()
+            .x(function(d,i) { return x(getX(d,i)) })
+            .y(function(d,i) { return y(getY(d,i)) })
+          );
+
+
+      // TODO: Add CURRENT data point (Need Min, Mac, Current / Most recent)
+      var points = wrap.selectAll('circle.nv-point')
+          .data(function(data) {
+              var yValues = data.map(function(d, i) { return getY(d,i); });
+              function pointIndex(index) {
+                  if (index != -1) {
+	              var result = data[index];
+                      result.pointIndex = index;
+                      return result;
+                  } else {
+                      return null;
+                  }
+              }
+              var maxPoint = pointIndex(yValues.lastIndexOf(y.domain()[1])),
+                  minPoint = pointIndex(yValues.indexOf(y.domain()[0])),
+                  currentPoint = pointIndex(yValues.length - 1);
+              return [minPoint, maxPoint, currentPoint].filter(function (d) {return d != null;});
+          });
+      points.enter().append('circle');
+      points.exit().remove();
+      points
+          .attr('cx', function(d,i) { return x(getX(d,d.pointIndex)) })
+          .attr('cy', function(d,i) { return y(getY(d,d.pointIndex)) })
+          .attr('r', 2)
+          .attr('class', function(d,i) {
+            return getX(d, d.pointIndex) == x.domain()[1] ? 'nv-point nv-currentValue' :
+                   getY(d, d.pointIndex) == y.domain()[0] ? 'nv-point nv-minValue' : 'nv-point nv-maxValue'
+          });
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.animate = function(_) {
+    if (!arguments.length) return animate;
+    animate = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.sparklinePlus = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var sparkline = nv.models.sparkline();
+
+  var margin = {top: 15, right: 100, bottom: 10, left: 50}
+    , width = null
+    , height = null
+    , x
+    , y
+    , index = []
+    , paused = false
+    , xTickFormat = d3.format(',r')
+    , yTickFormat = d3.format(',.2f')
+    , showValue = true
+    , alignValue = true
+    , rightAlignValue = false
+    , noData = "No Data Available."
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this);
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      
+
+      chart.update = function() { chart(selection) };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      var currentValue = sparkline.y()(data[data.length-1], data.length-1);
+
+      //------------------------------------------------------------
+
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = sparkline.xScale();
+      y = sparkline.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-sparklineplus').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparklineplus');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-sparklineWrap');
+      gEnter.append('g').attr('class', 'nv-valueWrap');
+      gEnter.append('g').attr('class', 'nv-hoverArea');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      var sparklineWrap = g.select('.nv-sparklineWrap');
+
+      sparkline
+        .width(availableWidth)
+        .height(availableHeight);
+
+      sparklineWrap
+          .call(sparkline);
+
+      //------------------------------------------------------------
+
+
+      var valueWrap = g.select('.nv-valueWrap');
+      
+      var value = valueWrap.selectAll('.nv-currentValue')
+          .data([currentValue]);
+
+      value.enter().append('text').attr('class', 'nv-currentValue')
+          .attr('dx', rightAlignValue ? -8 : 8)
+          .attr('dy', '.9em')
+          .style('text-anchor', rightAlignValue ? 'end' : 'start');
+
+      value
+          .attr('x', availableWidth + (rightAlignValue ? margin.right : 0))
+          .attr('y', alignValue ? function(d) { return y(d) } : 0)
+          .style('fill', sparkline.color()(data[data.length-1], data.length-1))
+          .text(yTickFormat(currentValue));
+
+
+
+      gEnter.select('.nv-hoverArea').append('rect')
+          .on('mousemove', sparklineHover)
+          .on('click', function() { paused = !paused })
+          .on('mouseout', function() { index = []; updateValueLine(); });
+          //.on('mouseout', function() { index = null; updateValueLine(); });
+
+      g.select('.nv-hoverArea rect')
+          .attr('transform', function(d) { return 'translate(' + -margin.left + ',' + -margin.top + ')' })
+          .attr('width', availableWidth + margin.left + margin.right)
+          .attr('height', availableHeight + margin.top);
+
+
+
+      function updateValueLine() { //index is currently global (within the chart), may or may not keep it that way
+        if (paused) return;
+
+        var hoverValue = g.selectAll('.nv-hoverValue').data(index)
+
+        var hoverEnter = hoverValue.enter()
+          .append('g').attr('class', 'nv-hoverValue')
+            .style('stroke-opacity', 0)
+            .style('fill-opacity', 0);
+
+        hoverValue.exit()
+          .transition().duration(250)
+            .style('stroke-opacity', 0)
+            .style('fill-opacity', 0)
+            .remove();
+
+        hoverValue
+            .attr('transform', function(d) { return 'translate(' + x(sparkline.x()(data[d],d)) + ',0)' })
+          .transition().duration(250)
+            .style('stroke-opacity', 1)
+            .style('fill-opacity', 1);
+
+        if (!index.length) return;
+
+        hoverEnter.append('line')
+            .attr('x1', 0)
+            .attr('y1', -margin.top)
+            .attr('x2', 0)
+            .attr('y2', availableHeight);
+
+
+        hoverEnter.append('text').attr('class', 'nv-xValue')
+            .attr('x', -6)
+            .attr('y', -margin.top)
+            .attr('text-anchor', 'end')
+            .attr('dy', '.9em')
+
+
+        g.select('.nv-hoverValue .nv-xValue')
+            .text(xTickFormat(sparkline.x()(data[index[0]], index[0])));
+
+        hoverEnter.append('text').attr('class', 'nv-yValue')
+            .attr('x', 6)
+            .attr('y', -margin.top)
+            .attr('text-anchor', 'start')
+            .attr('dy', '.9em')
+
+        g.select('.nv-hoverValue .nv-yValue')
+            .text(yTickFormat(sparkline.y()(data[index[0]], index[0])));
+
+      }
+
+
+      function sparklineHover() {
+        if (paused) return;
+
+        var pos = d3.mouse(this)[0] - margin.left;
+
+        function getClosestIndex(data, x) {
+          var distance = Math.abs(sparkline.x()(data[0], 0) - x);
+          var closestIndex = 0;
+          for (var i = 0; i < data.length; i++){
+            if (Math.abs(sparkline.x()(data[i], i) - x) < distance) {
+              distance = Math.abs(sparkline.x()(data[i], i) - x);
+              closestIndex = i;
+            }
+          }
+          return closestIndex;
+        }
+
+        index = [getClosestIndex(data, Math.round(x.invert(pos)))];
+
+        updateValueLine();
+      }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.sparkline = sparkline;
+
+  d3.rebind(chart, sparkline, 'x', 'y', 'xScale', 'yScale', 'color');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return xTickFormat;
+    xTickFormat = _;
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return yTickFormat;
+    yTickFormat = _;
+    return chart;
+  };
+
+  chart.showValue = function(_) {
+    if (!arguments.length) return showValue;
+    showValue = _;
+    return chart;
+  };
+
+  chart.alignValue = function(_) {
+    if (!arguments.length) return alignValue;
+    alignValue = _;
+    return chart;
+  };
+
+  chart.rightAlignValue = function(_) {
+    if (!arguments.length) return rightAlignValue;
+    rightAlignValue = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.stackedArea = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor() // a function that computes the color
+    , id = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't selet one
+    , getX = function(d) { return d.x } // accessor to get the x value from a data point
+    , getY = function(d) { return d.y } // accessor to get the y value from a data point
+    , style = 'stack'
+    , offset = 'zero'
+    , order = 'default'
+    , interpolate = 'linear'  // controls the line interpolation
+    , clipEdge = false // if true, masks lines within x and y scale
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , scatter = nv.models.scatter()
+    , dispatch =  d3.dispatch('tooltipShow', 'tooltipHide', 'areaClick', 'areaMouseover', 'areaMouseout')
+    ;
+
+  scatter
+    .size(2.2) // default size
+    .sizeDomain([2.2,2.2]) // all the same size by default
+    ;
+
+  /************************************
+   * offset:
+   *   'wiggle' (stream)
+   *   'zero' (stacked)
+   *   'expand' (normalize to 100%)
+   *   'silhouette' (simple centered)
+   *
+   * order:
+   *   'inside-out' (stream)
+   *   'default' (input order)
+   ************************************/
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      //------------------------------------------------------------
+
+      var dataRaw = data;
+      // Injecting point index into each point because d3.layout.stack().out does not give index
+      data.forEach(function(aseries, i) {
+        aseries.seriesIndex = i;
+        aseries.values = aseries.values.map(function(d, j) {
+          d.index = j;
+          d.seriesIndex = i;
+          return d;
+        });
+      });
+
+      var dataFiltered = data.filter(function(series) {
+            return !series.disabled;
+      });
+
+      data = d3.layout.stack()
+               .order(order)
+               .offset(offset)
+               .values(function(d) { return d.values })  //TODO: make values customizeable in EVERY model in this fashion
+               .x(getX)
+               .y(getY)
+               .out(function(d, y0, y) {
+                    var yHeight = (getY(d) === 0) ? 0 : y;
+                    d.display = {
+                      y: yHeight,
+                     y0: y0
+                    };
+                })
+              (dataFiltered);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-stackedarea').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedarea');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-areaWrap');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+        .x(getX)
+        .y(function(d) { return d.display.y + d.display.y0 })
+        .forceY([0])
+        .color(data.map(function(d,i) {
+          return d.color || color(d, d.seriesIndex);
+        }));
+
+
+      var scatterWrap = g.select('.nv-scatterWrap')
+          .datum(data);
+
+      scatterWrap.call(scatter);
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+      var area = d3.svg.area()
+          .x(function(d,i)  { return x(getX(d,i)) })
+          .y0(function(d) {
+              return y(d.display.y0)
+          })
+          .y1(function(d) {
+              return y(d.display.y + d.display.y0)
+          })
+          .interpolate(interpolate);
+
+      var zeroArea = d3.svg.area()
+          .x(function(d,i)  { return x(getX(d,i)) })
+          .y0(function(d) { return y(d.display.y0) })
+          .y1(function(d) { return y(d.display.y0) });
+
+
+      var path = g.select('.nv-areaWrap').selectAll('path.nv-area')
+          .data(function(d) { return d });
+
+      path.enter().append('path').attr('class', function(d,i) { return 'nv-area nv-area-' + i })
+          .attr('d', function(d,i){
+            return zeroArea(d.values, d.seriesIndex);
+          })
+          .on('mouseover', function(d,i) {
+            d3.select(this).classed('hover', true);
+            dispatch.areaMouseover({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.areaMouseout({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+          .on('click', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.areaClick({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+
+      path.exit().remove();
+
+      path
+          .style('fill', function(d,i){
+            return d.color || color(d, d.seriesIndex)
+          })
+          .style('stroke', function(d,i){ return d.color || color(d, d.seriesIndex) });
+      path.transition()
+          .attr('d', function(d,i) {
+            return area(d.values,i)
+          });
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      scatter.dispatch.on('elementMouseover.area', function(e) {
+        g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', true);
+      });
+      scatter.dispatch.on('elementMouseout.area', function(e) {
+        g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', false);
+      });
+
+      //============================================================
+      //Special offset functions
+      chart.d3_stackedOffset_stackPercent = function(stackData) {
+          var n = stackData.length,    //How many series
+          m = stackData[0].length,     //how many points per series
+          k = 1 / n,
+           i,
+           j,
+           o,
+           y0 = [];
+
+          for (j = 0; j < m; ++j) { //Looping through all points
+            for (i = 0, o = 0; i < dataRaw.length; i++)  //looping through series'
+                o += getY(dataRaw[i].values[j])   //total value of all points at a certian point in time.
+
+            if (o) for (i = 0; i < n; i++)
+               stackData[i][j][1] /= o;
+            else
+              for (i = 0; i < n; i++)
+               stackData[i][j][1] = k;
+          }
+          for (j = 0; j < m; ++j) y0[j] = 0;
+          return y0;
+      };
+
+    });
+
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementClick.area', function(e) {
+    dispatch.areaClick(e);
+  })
+  scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+        dispatch.tooltipShow(e);
+  });
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+  });
+
+  //============================================================
+
+  //============================================================
+  // Global getters and setters
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+
+  d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange',
+    'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi','clipRadius','highlightPoint','clearHighlights');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  }
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.offset = function(_) {
+    if (!arguments.length) return offset;
+    offset = _;
+    return chart;
+  };
+
+  chart.order = function(_) {
+    if (!arguments.length) return order;
+    order = _;
+    return chart;
+  };
+
+  //shortcut for offset + order
+  chart.style = function(_) {
+    if (!arguments.length) return style;
+    style = _;
+
+    switch (style) {
+      case 'stack':
+        chart.offset('zero');
+        chart.order('default');
+        break;
+      case 'stream':
+        chart.offset('wiggle');
+        chart.order('inside-out');
+        break;
+      case 'stream-center':
+          chart.offset('silhouette');
+          chart.order('inside-out');
+          break;
+      case 'expand':
+        chart.offset('expand');
+        chart.order('default');
+        break;
+      case 'stack_percent':
+        chart.offset(chart.d3_stackedOffset_stackPercent);
+        chart.order('default');
+        break;
+    }
+
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+	    if (!arguments.length) return interpolate;
+	    interpolate = _;
+	    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
+
+nv.models.stackedAreaChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var stacked = nv.models.stackedArea()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 25, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor() // a function that takes in d, i and returns color
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , useInteractiveGuideline = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' on ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , yAxisTickFormat = d3.format(',.2f')
+    , state = { style: stacked.style() }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = 250
+    , cData = ['Stacked','Stream','Expanded']
+    , controlLabels = {}
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(stacked.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(stacked.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = stacked.xScale();
+      y = stacked.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-stackedAreaChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedAreaChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append("rect").style("opacity",0);
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-stackedWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      gEnter.append('g').attr('class', 'nv-interactive');
+
+      g.select("rect").attr("width",availableWidth).attr("height",availableHeight);
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        var legendWidth = (showControls) ? availableWidth - controlWidth : availableWidth;
+        legend
+          .width(legendWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth-legendWidth) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          {
+            key: controlLabels.stacked || 'Stacked',
+            metaKey: 'Stacked',
+            disabled: stacked.style() != 'stack',
+            style: 'stack'
+          },
+          {
+            key: controlLabels.stream || 'Stream',
+            metaKey: 'Stream',
+            disabled: stacked.style() != 'stream',
+            style: 'stream'
+          },
+          {
+            key: controlLabels.expanded || 'Expanded',
+            metaKey: 'Expanded',
+            disabled: stacked.style() != 'expand',
+            style: 'expand'
+          },
+          {
+            key: controlLabels.stack_percent || 'Stack %',
+            metaKey: 'Stack_Percent',
+            disabled: stacked.style() != 'stack_percent',
+            style: 'stack_percent'
+          }
+        ];
+
+        controlWidth = (cData.length/3) * 260;
+
+        controlsData = controlsData.filter(function(d) {
+          return cData.indexOf(d.metaKey) !== -1;
+        })
+
+        controls
+          .width( controlWidth )
+          .color(['#444', '#444', '#444']);
+
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .call(controls);
+
+
+        if ( margin.top != Math.max(controls.height(), legend.height()) ) {
+          margin.top = Math.max(controls.height(), legend.height());
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+
+        g.select('.nv-controlsWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+           .width(availableWidth)
+           .height(availableHeight)
+           .margin({left: margin.left, top: margin.top})
+           .svgContainer(container)
+           .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+      stacked
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var stackedWrap = g.select('.nv-stackedWrap')
+          .datum(data);
+
+      stackedWrap.transition().call(stacked);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .ticks( availableWidth / 100 )
+          .tickSize( -availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + availableHeight + ')');
+
+        g.select('.nv-x.nv-axis')
+          .transition().duration(0)
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks(stacked.offset() == 'wiggle' ? 0 : availableHeight / 36)
+          .tickSize(-availableWidth, 0)
+          .setTickFormat( (stacked.style() == 'expand' || stacked.style() == 'stack_percent')
+                ? d3.format('%') : yAxisTickFormat);
+
+        g.select('.nv-y.nv-axis')
+          .transition().duration(0)
+            .call(yAxis);
+      }
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      stacked.dispatch.on('areaClick.toggle', function(e) {
+        if (data.filter(function(d) { return !d.disabled }).length === 1)
+          data.forEach(function(d) {
+            d.disabled = false;
+          });
+        else
+          data.forEach(function(d,i) {
+            d.disabled = (i != e.seriesIndex);
+          });
+
+        state.disabled = data.map(function(d) { return !!d.disabled });
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        stacked.style(d.style);
+
+
+        state.style = stacked.style();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          stacked.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          data
+          .filter(function(series, i) {
+            series.seriesIndex = i;
+            return !series.disabled;
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              stacked.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+
+              //If we are in 'expand' mode, use the stacked percent value instead of raw value.
+              var tooltipValue = (stacked.style() == 'expand') ? point.display.y : chart.y()(point,pointIndex);
+              allData.push({
+                  key: series.key,
+                  value: tooltipValue,
+                  color: color(series,series.seriesIndex),
+                  stackedValue: point.display
+              });
+          });
+
+          allData.reverse();
+
+          //Highlight the tooltip entry based on which stack the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var yDistMax = Infinity, indexToHighlight = null;
+            allData.forEach(function(series,i) {
+
+               //To handle situation where the stacked area chart is negative, we need to use absolute values
+               //when checking if the mouse Y value is within the stack area.
+               yValue = Math.abs(yValue);
+               var stackedY0 = Math.abs(series.stackedValue.y0);
+               var stackedY = Math.abs(series.stackedValue.y);
+               if ( yValue >= stackedY0 && yValue <= (stackedY + stackedY0))
+               {
+                  indexToHighlight = i;
+                  return;
+               }
+            });
+            if (indexToHighlight != null)
+               allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex));
+
+          //If we are in 'expand' mode, force the format to be a percentage.
+          var valueFormatter = (stacked.style() == 'expand') ?
+               function(d,i) {return d3.format(".1%")(d);} :
+               function(d,i) {return yAxis.tickFormat()(d); };
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(valueFormatter)
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          stacked.clearHighlights();
+      });
+
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.style !== 'undefined') {
+          stacked.style(e.style);
+        }
+
+        chart.update();
+      });
+
+    });
+
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  stacked.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    /*
+    if (!Math.round(stacked.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+   */
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stacked.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.stacked = stacked;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, stacked, 'x', 'y', 'size', 'xScale', 'yScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'interactive', 'useVoronoi', 'offset', 'order', 'style', 'clipEdge', 'forceX', 'forceY', 'forceSize', 'interpolate');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    stacked.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  chart.controlsData = function(_) {
+    if (!arguments.length) return cData;
+    cData = _;
+    return chart;
+  };
+
+  chart.controlLabels = function(_) {
+    if (!arguments.length) return controlLabels;
+    if (typeof _ !== 'object') return controlLabels;
+    controlLabels = _;
+    return chart;
+  };
+
+  yAxis.setTickFormat = yAxis.tickFormat;
+
+  yAxis.tickFormat = function(_) {
+    if (!arguments.length) return yAxisTickFormat;
+    yAxisTickFormat = _;
+    return yAxis;
+  };
+
+
+  //============================================================
+
+  return chart;
+}
+})();'use strict';
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */
+
+(function (global, factory) {
+  (typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());
+})(undefined, function () {
+  'use strict';
+
+  var entries = Object.entries,
+      setPrototypeOf = Object.setPrototypeOf,
+      isFrozen = Object.isFrozen,
+      getPrototypeOf = Object.getPrototypeOf,
+      getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+  var freeze = Object.freeze,
+      seal = Object.seal,
+      create = Object.create; // eslint-disable-line import/no-mutable-exports
+
+  var _ref = typeof Reflect !== 'undefined' && Reflect,
+      apply = _ref.apply,
+      construct = _ref.construct;
+
+  if (!freeze) {
+    freeze = function freeze(x) {
+      return x;
+    };
+  }
+
+  if (!seal) {
+    seal = function seal(x) {
+      return x;
+    };
+  }
+
+  if (!apply) {
+    apply = function apply(fun, thisValue, args) {
+      return fun.apply(thisValue, args);
+    };
+  }
+
+  if (!construct) {
+    construct = function construct(Func, args) {
+      return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();
+    };
+  }
+
+  var arrayForEach = unapply(Array.prototype.forEach);
+  var arrayPop = unapply(Array.prototype.pop);
+  var arrayPush = unapply(Array.prototype.push);
+  var stringToLowerCase = unapply(String.prototype.toLowerCase);
+  var stringToString = unapply(String.prototype.toString);
+  var stringMatch = unapply(String.prototype.match);
+  var stringReplace = unapply(String.prototype.replace);
+  var stringIndexOf = unapply(String.prototype.indexOf);
+  var stringTrim = unapply(String.prototype.trim);
+  var regExpTest = unapply(RegExp.prototype.test);
+  var typeErrorCreate = unconstruct(TypeError);
+  /**
+   * Creates a new function that calls the given function with a specified thisArg and arguments.
+   *
+   * @param {Function} func - The function to be wrapped and called.
+   * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.
+   */
+
+  function unapply(func) {
+    return function (thisArg) {
+      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        args[_key - 1] = arguments[_key];
+      }
+
+      return apply(func, thisArg, args);
+    };
+  }
+  /**
+   * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
+   *
+   * @param {Function} func - The constructor function to be wrapped and called.
+   * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.
+   */
+
+  function unconstruct(func) {
+    return function () {
+      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+        args[_key2] = arguments[_key2];
+      }
+
+      return construct(func, args);
+    };
+  }
+  /**
+   * Add properties to a lookup table
+   *
+   * @param {Object} set - The set to which elements will be added.
+   * @param {Array} array - The array containing elements to be added to the set.
+   * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.
+   * @returns {Object} The modified set with added elements.
+   */
+
+  function addToSet(set, array) {
+    var transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
+
+    if (setPrototypeOf) {
+      // Make 'in' and truthy checks like Boolean(set.constructor)
+      // independent of any properties defined on Object.prototype.
+      // Prevent prototype setters from intercepting set as a this value.
+      setPrototypeOf(set, null);
+    }
+
+    var l = array.length;
+
+    while (l--) {
+      var element = array[l];
+
+      if (typeof element === 'string') {
+        var lcElement = transformCaseFunc(element);
+
+        if (lcElement !== element) {
+          // Config presets (e.g. tags.js, attrs.js) are immutable.
+          if (!isFrozen(array)) {
+            array[l] = lcElement;
+          }
+
+          element = lcElement;
+        }
+      }
+
+      set[element] = true;
+    }
+
+    return set;
+  }
+  /**
+   * Shallow clone an object
+   *
+   * @param {Object} object - The object to be cloned.
+   * @returns {Object} A new object that copies the original.
+   */
+
+  function clone(object) {
+    var newObject = create(null);
+
+    var _iteratorNormalCompletion = true;
+    var _didIteratorError = false;
+    var _iteratorError = undefined;
+
+    try {
+      for (var _iterator = entries(object)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+        var _ref2 = _step.value;
+
+        var _ref3 = _slicedToArray(_ref2, 2);
+
+        var property = _ref3[0];
+        var value = _ref3[1];
+
+        newObject[property] = value;
+      }
+    } catch (err) {
+      _didIteratorError = true;
+      _iteratorError = err;
+    } finally {
+      try {
+        if (!_iteratorNormalCompletion && _iterator.return) {
+          _iterator.return();
+        }
+      } finally {
+        if (_didIteratorError) {
+          throw _iteratorError;
+        }
+      }
+    }
+
+    return newObject;
+  }
+  /**
+   * This method automatically checks if the prop is function or getter and behaves accordingly.
+   *
+   * @param {Object} object - The object to look up the getter function in its prototype chain.
+   * @param {String} prop - The property name for which to find the getter function.
+   * @returns {Function} The getter function found in the prototype chain or a fallback function.
+   */
+
+  function lookupGetter(object, prop) {
+    while (object !== null) {
+      var desc = getOwnPropertyDescriptor(object, prop);
+
+      if (desc) {
+        if (desc.get) {
+          return unapply(desc.get);
+        }
+
+        if (typeof desc.value === 'function') {
+          return unapply(desc.value);
+        }
+      }
+
+      object = getPrototypeOf(object);
+    }
+
+    function fallbackValue(element) {
+      console.warn('fallback value for', element);
+      return null;
+    }
+
+    return fallbackValue;
+  }
+
+  var html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG
+
+  var svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
+  var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.
+  // We still need to know them so that we can do namespace
+  // checks properly in case one wants to add them to
+  // allow-list.
+
+  var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
+  var mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); // Similarly to SVG, we want to know all MathML elements,
+  // even those that we disallow by default.
+
+  var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
+  var text = freeze(['#text']);
+
+  var html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);
+  var svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
+  var mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
+  var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
+
+  var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
+
+  var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
+  var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
+  var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape
+
+  var ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
+
+  var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
+  );
+  var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
+  var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
+  );
+  var DOCTYPE_NAME = seal(/^html$/i);
+
+  var EXPRESSIONS = /*#__PURE__*/Object.freeze({
+    __proto__: null,
+    MUSTACHE_EXPR: MUSTACHE_EXPR,
+    ERB_EXPR: ERB_EXPR,
+    TMPLIT_EXPR: TMPLIT_EXPR,
+    DATA_ATTR: DATA_ATTR,
+    ARIA_ATTR: ARIA_ATTR,
+    IS_ALLOWED_URI: IS_ALLOWED_URI,
+    IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
+    ATTR_WHITESPACE: ATTR_WHITESPACE,
+    DOCTYPE_NAME: DOCTYPE_NAME
+  });
+
+  var getGlobal = function getGlobal() {
+    return typeof window === 'undefined' ? null : window;
+  };
+  /**
+   * Creates a no-op policy for internal use only.
+   * Don't export this function outside this module!
+   * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.
+   * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
+   * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types
+   * are not supported or creating the policy failed).
+   */
+
+  var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
+    if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
+      return null;
+    } // Allow the callers to control the unique policy name
+    // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
+    // Policy creation with duplicate names throws in Trusted Types.
+
+
+    var suffix = null;
+    var ATTR_NAME = 'data-tt-policy-suffix';
+
+    if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
+      suffix = purifyHostElement.getAttribute(ATTR_NAME);
+    }
+
+    var policyName = 'dompurify' + (suffix ? '#' + suffix : '');
+
+    try {
+      return trustedTypes.createPolicy(policyName, {
+        createHTML: function createHTML(html) {
+          return html;
+        },
+        createScriptURL: function createScriptURL(scriptUrl) {
+          return scriptUrl;
+        }
+      });
+    } catch (_) {
+      // Policy creation failed (most likely another DOMPurify script has
+      // already run). Skip creating the policy, as this will only cause errors
+      // if TT are enforced.
+      console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
+      return null;
+    }
+  };
+
+  function createDOMPurify() {
+    var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
+
+    var DOMPurify = function DOMPurify(root) {
+      return createDOMPurify(root);
+    };
+    /**
+     * Version label, exposed for easier checks
+     * if DOMPurify is up to date or not
+     */
+
+    DOMPurify.version = '3.0.5';
+    /**
+     * Array of elements that DOMPurify removed during sanitation.
+     * Empty if nothing was removed.
+     */
+
+    DOMPurify.removed = [];
+
+    if (!window || !window.document || window.document.nodeType !== 9) {
+      // Not running in a browser, provide a factory function
+      // so that you can pass your own Window
+      DOMPurify.isSupported = false;
+      return DOMPurify;
+    }
+
+    var document = window.document;
+
+    var originalDocument = document;
+    var currentScript = originalDocument.currentScript;
+    var DocumentFragment = window.DocumentFragment,
+        HTMLTemplateElement = window.HTMLTemplateElement,
+        Node = window.Node,
+        Element = window.Element,
+        NodeFilter = window.NodeFilter,
+        _window$NamedNodeMap = window.NamedNodeMap,
+        NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,
+        HTMLFormElement = window.HTMLFormElement,
+        DOMParser = window.DOMParser,
+        trustedTypes = window.trustedTypes;
+
+    var ElementPrototype = Element.prototype;
+    var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
+    var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
+    var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
+    var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a
+    // new document created via createHTMLDocument. As per the spec
+    // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
+    // a new empty registry is used when creating a template contents owner
+    // document, so we use that as our parent document to ensure nothing
+    // is inherited.
+
+    if (typeof HTMLTemplateElement === 'function') {
+      var template = document.createElement('template');
+
+      if (template.content && template.content.ownerDocument) {
+        document = template.content.ownerDocument;
+      }
+    }
+
+    var trustedTypesPolicy = void 0;
+    var emptyHTML = '';
+    var _document = document,
+        implementation = _document.implementation,
+        createNodeIterator = _document.createNodeIterator,
+        createDocumentFragment = _document.createDocumentFragment,
+        getElementsByTagName = _document.getElementsByTagName;
+    var importNode = originalDocument.importNode;
+
+    var hooks = {};
+    /**
+     * Expose whether this browser supports running the full DOMPurify.
+     */
+
+    DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
+    var MUSTACHE_EXPR = EXPRESSIONS.MUSTACHE_EXPR,
+        ERB_EXPR = EXPRESSIONS.ERB_EXPR,
+        TMPLIT_EXPR = EXPRESSIONS.TMPLIT_EXPR,
+        DATA_ATTR = EXPRESSIONS.DATA_ATTR,
+        ARIA_ATTR = EXPRESSIONS.ARIA_ATTR,
+        IS_SCRIPT_OR_DATA = EXPRESSIONS.IS_SCRIPT_OR_DATA,
+        ATTR_WHITESPACE = EXPRESSIONS.ATTR_WHITESPACE;
+    var IS_ALLOWED_URI$1 = EXPRESSIONS.IS_ALLOWED_URI;
+    /**
+     * We consider the elements and attributes below to be safe. Ideally
+     * don't add any new ones but feel free to remove unwanted ones.
+     */
+
+    /* allowed element names */
+
+    var ALLOWED_TAGS = null;
+    var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));
+    /* Allowed attribute names */
+
+    var ALLOWED_ATTR = null;
+    var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));
+    /*
+     * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.
+     * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
+     * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
+     * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
+     */
+
+    var CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
+      tagNameCheck: {
+        writable: true,
+        configurable: false,
+        enumerable: true,
+        value: null
+      },
+      attributeNameCheck: {
+        writable: true,
+        configurable: false,
+        enumerable: true,
+        value: null
+      },
+      allowCustomizedBuiltInElements: {
+        writable: true,
+        configurable: false,
+        enumerable: true,
+        value: false
+      }
+    }));
+    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
+
+    var FORBID_TAGS = null;
+    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
+
+    var FORBID_ATTR = null;
+    /* Decide if ARIA attributes are okay */
+
+    var ALLOW_ARIA_ATTR = true;
+    /* Decide if custom data attributes are okay */
+
+    var ALLOW_DATA_ATTR = true;
+    /* Decide if unknown protocols are okay */
+
+    var ALLOW_UNKNOWN_PROTOCOLS = false;
+    /* Decide if self-closing tags in attributes are allowed.
+     * Usually removed due to a mXSS issue in jQuery 3.0 */
+
+    var ALLOW_SELF_CLOSE_IN_ATTR = true;
+    /* Output should be safe for common template engines.
+     * This means, DOMPurify removes data attributes, mustaches and ERB
+     */
+
+    var SAFE_FOR_TEMPLATES = false;
+    /* Decide if document with <html>... should be returned */
+
+    var WHOLE_DOCUMENT = false;
+    /* Track whether config is already set on this instance of DOMPurify. */
+
+    var SET_CONFIG = false;
+    /* Decide if all elements (e.g. style, script) must be children of
+     * document.body. By default, browsers might move them to document.head */
+
+    var FORCE_BODY = false;
+    /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
+     * string (or a TrustedHTML object if Trusted Types are supported).
+     * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
+     */
+
+    var RETURN_DOM = false;
+    /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
+     * string  (or a TrustedHTML object if Trusted Types are supported) */
+
+    var RETURN_DOM_FRAGMENT = false;
+    /* Try to return a Trusted Type object instead of a string, return a string in
+     * case Trusted Types are not supported  */
+
+    var RETURN_TRUSTED_TYPE = false;
+    /* Output should be free from DOM clobbering attacks?
+     * This sanitizes markups named with colliding, clobberable built-in DOM APIs.
+     */
+
+    var SANITIZE_DOM = true;
+    /* Achieve full DOM Clobbering protection by isolating the namespace of named
+     * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
+     *
+     * HTML/DOM spec rules that enable DOM Clobbering:
+     *   - Named Access on Window (§7.3.3)
+     *   - DOM Tree Accessors (§3.1.5)
+     *   - Form Element Parent-Child Relations (§4.10.3)
+     *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)
+     *   - HTMLCollection (§4.2.10.2)
+     *
+     * Namespace isolation is implemented by prefixing `id` and `name` attributes
+     * with a constant string, i.e., `user-content-`
+     */
+
+    var SANITIZE_NAMED_PROPS = false;
+    var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
+    /* Keep element content when removing element? */
+
+    var KEEP_CONTENT = true;
+    /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
+     * of importing it into a new Document and returning a sanitized copy */
+
+    var IN_PLACE = false;
+    /* Allow usage of profiles like html, svg and mathMl */
+
+    var USE_PROFILES = {};
+    /* Tags to ignore content of when KEEP_CONTENT is true */
+
+    var FORBID_CONTENTS = null;
+    var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
+    /* Tags that are safe for data: URIs */
+
+    var DATA_URI_TAGS = null;
+    var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
+    /* Attributes safe for values like "javascript:" */
+
+    var URI_SAFE_ATTRIBUTES = null;
+    var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
+    var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
+    var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
+    var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
+    /* Document namespace */
+
+    var NAMESPACE = HTML_NAMESPACE;
+    var IS_EMPTY_INPUT = false;
+    /* Allowed XHTML+XML namespaces */
+
+    var ALLOWED_NAMESPACES = null;
+    var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
+    /* Parsing of strict XHTML documents */
+
+    var PARSER_MEDIA_TYPE = null;
+    var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
+    var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
+    var transformCaseFunc = null;
+    /* Keep a reference to config to pass to hooks */
+
+    var CONFIG = null;
+    /* Ideally, do not touch anything below this line */
+
+    /* ______________________________________________ */
+
+    var formElement = document.createElement('form');
+
+    var isRegexOrFunction = function isRegexOrFunction(testValue) {
+      return testValue instanceof RegExp || testValue instanceof Function;
+    };
+    /**
+     * _parseConfig
+     *
+     * @param  {Object} cfg optional config literal
+     */
+    // eslint-disable-next-line complexity
+
+
+    var _parseConfig = function _parseConfig() {
+      var cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+      if (CONFIG && CONFIG === cfg) {
+        return;
+      }
+      /* Shield configuration object from tampering */
+
+      if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {
+        cfg = {};
+      }
+      /* Shield configuration object from prototype pollution */
+
+      cfg = clone(cfg);
+      PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
+      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
+
+      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
+      /* Set configuration parameters */
+
+      ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
+      ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
+      ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
+      URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent
+      cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent
+      transformCaseFunc // eslint-disable-line indent
+      ) // eslint-disable-line indent
+      : DEFAULT_URI_SAFE_ATTRIBUTES;
+      DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent
+      cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent
+      transformCaseFunc // eslint-disable-line indent
+      ) // eslint-disable-line indent
+      : DEFAULT_DATA_URI_TAGS;
+      FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
+      FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
+      FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
+      USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;
+      ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
+
+      ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
+
+      ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
+
+      ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
+
+      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
+
+      WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
+
+      RETURN_DOM = cfg.RETURN_DOM || false; // Default false
+
+      RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
+
+      RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
+
+      FORCE_BODY = cfg.FORCE_BODY || false; // Default false
+
+      SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
+
+      SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
+
+      KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
+
+      IN_PLACE = cfg.IN_PLACE || false; // Default false
+
+      IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
+      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
+      CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
+
+      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
+        CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
+      }
+
+      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
+        CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
+      }
+
+      if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
+        CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
+      }
+
+      if (SAFE_FOR_TEMPLATES) {
+        ALLOW_DATA_ATTR = false;
+      }
+
+      if (RETURN_DOM_FRAGMENT) {
+        RETURN_DOM = true;
+      }
+      /* Parse profile info */
+
+      if (USE_PROFILES) {
+        ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(text)));
+        ALLOWED_ATTR = [];
+
+        if (USE_PROFILES.html === true) {
+          addToSet(ALLOWED_TAGS, html$1);
+          addToSet(ALLOWED_ATTR, html);
+        }
+
+        if (USE_PROFILES.svg === true) {
+          addToSet(ALLOWED_TAGS, svg$1);
+          addToSet(ALLOWED_ATTR, svg);
+          addToSet(ALLOWED_ATTR, xml);
+        }
+
+        if (USE_PROFILES.svgFilters === true) {
+          addToSet(ALLOWED_TAGS, svgFilters);
+          addToSet(ALLOWED_ATTR, svg);
+          addToSet(ALLOWED_ATTR, xml);
+        }
+
+        if (USE_PROFILES.mathMl === true) {
+          addToSet(ALLOWED_TAGS, mathMl$1);
+          addToSet(ALLOWED_ATTR, mathMl);
+          addToSet(ALLOWED_ATTR, xml);
+        }
+      }
+      /* Merge configuration parameters */
+
+      if (cfg.ADD_TAGS) {
+        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
+          ALLOWED_TAGS = clone(ALLOWED_TAGS);
+        }
+
+        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
+      }
+
+      if (cfg.ADD_ATTR) {
+        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
+          ALLOWED_ATTR = clone(ALLOWED_ATTR);
+        }
+
+        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
+      }
+
+      if (cfg.ADD_URI_SAFE_ATTR) {
+        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
+      }
+
+      if (cfg.FORBID_CONTENTS) {
+        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
+          FORBID_CONTENTS = clone(FORBID_CONTENTS);
+        }
+
+        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
+      }
+      /* Add #text in case KEEP_CONTENT is set to true */
+
+      if (KEEP_CONTENT) {
+        ALLOWED_TAGS['#text'] = true;
+      }
+      /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
+
+      if (WHOLE_DOCUMENT) {
+        addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
+      }
+      /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
+
+      if (ALLOWED_TAGS.table) {
+        addToSet(ALLOWED_TAGS, ['tbody']);
+        delete FORBID_TAGS.tbody;
+      }
+
+      if (cfg.TRUSTED_TYPES_POLICY) {
+        if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
+          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
+        }
+
+        if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
+          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
+        } // Overwrite existing TrustedTypes policy.
+
+
+        trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; // Sign local variables required by `sanitize`.
+
+        emptyHTML = trustedTypesPolicy.createHTML('');
+      } else {
+        // Uninitialized policy, attempt to initialize the internal dompurify policy.
+        if (trustedTypesPolicy === undefined) {
+          trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
+        } // If creating the internal policy succeeded sign internal variables.
+
+
+        if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
+          emptyHTML = trustedTypesPolicy.createHTML('');
+        }
+      } // Prevent further manipulation of configuration.
+      // Not available in IE8, Safari 5, etc.
+
+
+      if (freeze) {
+        freeze(cfg);
+      }
+
+      CONFIG = cfg;
+    };
+
+    var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
+    var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML
+    // namespace. We need to specify them explicitly
+    // so that they don't get erroneously deleted from
+    // HTML namespace.
+
+    var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
+    /* Keep track of all possible SVG and MathML tags
+     * so that we can perform the namespace checks
+     * correctly. */
+
+    var ALL_SVG_TAGS = addToSet({}, svg$1);
+    addToSet(ALL_SVG_TAGS, svgFilters);
+    addToSet(ALL_SVG_TAGS, svgDisallowed);
+    var ALL_MATHML_TAGS = addToSet({}, mathMl$1);
+    addToSet(ALL_MATHML_TAGS, mathMlDisallowed);
+    /**
+     * @param  {Element} element a DOM element whose namespace is being checked
+     * @returns {boolean} Return false if the element has a
+     *  namespace that a spec-compliant parser would never
+     *  return. Return true otherwise.
+     */
+
+    var _checkValidNamespace = function _checkValidNamespace(element) {
+      var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode
+      // can be null. We just simulate parent in this case.
+
+      if (!parent || !parent.tagName) {
+        parent = {
+          namespaceURI: NAMESPACE,
+          tagName: 'template'
+        };
+      }
+
+      var tagName = stringToLowerCase(element.tagName);
+      var parentTagName = stringToLowerCase(parent.tagName);
+
+      if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
+        return false;
+      }
+
+      if (element.namespaceURI === SVG_NAMESPACE) {
+        // The only way to switch from HTML namespace to SVG
+        // is via <svg>. If it happens via any other tag, then
+        // it should be killed.
+        if (parent.namespaceURI === HTML_NAMESPACE) {
+          return tagName === 'svg';
+        } // The only way to switch from MathML to SVG is via`
+        // svg if parent is either <annotation-xml> or MathML
+        // text integration points.
+
+
+        if (parent.namespaceURI === MATHML_NAMESPACE) {
+          return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
+        } // We only allow elements that are defined in SVG
+        // spec. All others are disallowed in SVG namespace.
+
+
+        return Boolean(ALL_SVG_TAGS[tagName]);
+      }
+
+      if (element.namespaceURI === MATHML_NAMESPACE) {
+        // The only way to switch from HTML namespace to MathML
+        // is via <math>. If it happens via any other tag, then
+        // it should be killed.
+        if (parent.namespaceURI === HTML_NAMESPACE) {
+          return tagName === 'math';
+        } // The only way to switch from SVG to MathML is via
+        // <math> and HTML integration points
+
+
+        if (parent.namespaceURI === SVG_NAMESPACE) {
+          return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
+        } // We only allow elements that are defined in MathML
+        // spec. All others are disallowed in MathML namespace.
+
+
+        return Boolean(ALL_MATHML_TAGS[tagName]);
+      }
+
+      if (element.namespaceURI === HTML_NAMESPACE) {
+        // The only way to switch from SVG to HTML is via
+        // HTML integration points, and from MathML to HTML
+        // is via MathML text integration points
+        if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
+          return false;
+        }
+
+        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
+          return false;
+        } // We disallow tags that are specific for MathML
+        // or SVG and should never appear in HTML namespace
+
+
+        return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
+      } // For XHTML and XML documents that support custom namespaces
+
+
+      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
+        return true;
+      } // The code should never reach this place (this means
+      // that the element somehow got namespace that is not
+      // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
+      // Return false just in case.
+
+
+      return false;
+    };
+    /**
+     * _forceRemove
+     *
+     * @param  {Node} node a DOM node
+     */
+
+    var _forceRemove = function _forceRemove(node) {
+      arrayPush(DOMPurify.removed, {
+        element: node
+      });
+
+      try {
+        // eslint-disable-next-line unicorn/prefer-dom-node-remove
+        node.parentNode.removeChild(node);
+      } catch (_) {
+        node.remove();
+      }
+    };
+    /**
+     * _removeAttribute
+     *
+     * @param  {String} name an Attribute name
+     * @param  {Node} node a DOM node
+     */
+
+    var _removeAttribute = function _removeAttribute(name, node) {
+      try {
+        arrayPush(DOMPurify.removed, {
+          attribute: node.getAttributeNode(name),
+          from: node
+        });
+      } catch (_) {
+        arrayPush(DOMPurify.removed, {
+          attribute: null,
+          from: node
+        });
+      }
+
+      node.removeAttribute(name); // We void attribute values for unremovable "is"" attributes
+
+      if (name === 'is' && !ALLOWED_ATTR[name]) {
+        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
+          try {
+            _forceRemove(node);
+          } catch (_) {}
+        } else {
+          try {
+            node.setAttribute(name, '');
+          } catch (_) {}
+        }
+      }
+    };
+    /**
+     * _initDocument
+     *
+     * @param  {String} dirty a string of dirty markup
+     * @return {Document} a DOM, filled with the dirty markup
+     */
+
+    var _initDocument = function _initDocument(dirty) {
+      /* Create a HTML document */
+      var doc = null;
+      var leadingWhitespace = null;
+
+      if (FORCE_BODY) {
+        dirty = '<remove></remove>' + dirty;
+      } else {
+        /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
+        var matches = stringMatch(dirty, /^[\r\n\t ]+/);
+        leadingWhitespace = matches && matches[0];
+      }
+
+      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
+        // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
+        dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
+      }
+
+      var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
+      /*
+       * Use the DOMParser API by default, fallback later if needs be
+       * DOMParser not work for svg when has multiple root element.
+       */
+
+      if (NAMESPACE === HTML_NAMESPACE) {
+        try {
+          doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
+        } catch (_) {}
+      }
+      /* Use createHTMLDocument in case DOMParser is not available */
+
+      if (!doc || !doc.documentElement) {
+        doc = implementation.createDocument(NAMESPACE, 'template', null);
+
+        try {
+          doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
+        } catch (_) {// Syntax error if dirtyPayload is invalid xml
+        }
+      }
+
+      var body = doc.body || doc.documentElement;
+
+      if (dirty && leadingWhitespace) {
+        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
+      }
+      /* Work on whole document or just its body */
+
+      if (NAMESPACE === HTML_NAMESPACE) {
+        return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
+      }
+
+      return WHOLE_DOCUMENT ? doc.documentElement : body;
+    };
+    /**
+     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
+     *
+     * @param  {Node} root The root element or node to start traversing on.
+     * @return {NodeIterator} The created NodeIterator
+     */
+
+    var _createNodeIterator = function _createNodeIterator(root) {
+      return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise
+      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null);
+    };
+    /**
+     * _isClobbered
+     *
+     * @param  {Node} elm element to check for clobbering attacks
+     * @return {Boolean} true if clobbered, false if safe
+     */
+
+    var _isClobbered = function _isClobbered(elm) {
+      return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');
+    };
+    /**
+     * Checks whether the given object is a DOM node.
+     *
+     * @param  {Node} object object to check whether it's a DOM node
+     * @return {Boolean} true is object is a DOM node
+     */
+
+    var _isNode = function _isNode(object) {
+      return typeof Node === 'function' && object instanceof Node;
+    };
+    /**
+     * _executeHook
+     * Execute user configurable hooks
+     *
+     * @param  {String} entryPoint  Name of the hook's entry point
+     * @param  {Node} currentNode node to work on with the hook
+     * @param  {Object} data additional hook parameters
+     */
+
+    var _executeHook = function _executeHook(entryPoint, currentNode, data) {
+      if (!hooks[entryPoint]) {
+        return;
+      }
+
+      arrayForEach(hooks[entryPoint], function (hook) {
+        hook.call(DOMPurify, currentNode, data, CONFIG);
+      });
+    };
+    /**
+     * _sanitizeElements
+     *
+     * @protect nodeName
+     * @protect textContent
+     * @protect removeChild
+     *
+     * @param   {Node} currentNode to check for permission to exist
+     * @return  {Boolean} true if node was killed, false if left alive
+     */
+
+    var _sanitizeElements = function _sanitizeElements(currentNode) {
+      var content = null;
+      /* Execute a hook if present */
+
+      _executeHook('beforeSanitizeElements', currentNode, null);
+      /* Check if element is clobbered or can clobber */
+
+      if (_isClobbered(currentNode)) {
+        _forceRemove(currentNode);
+
+        return true;
+      }
+      /* Now let's check the element's type and name */
+
+      var tagName = transformCaseFunc(currentNode.nodeName);
+      /* Execute a hook if present */
+
+      _executeHook('uponSanitizeElement', currentNode, {
+        tagName: tagName,
+        allowedTags: ALLOWED_TAGS
+      });
+      /* Detect mXSS attempts abusing namespace confusion */
+
+      if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
+        _forceRemove(currentNode);
+
+        return true;
+      }
+      /* Remove element if anything forbids its presence */
+
+      if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
+        /* Check if we have a custom element to handle */
+        if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
+          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
+            return false;
+          }
+
+          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
+            return false;
+          }
+        }
+        /* Keep content except for bad-listed elements */
+
+        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
+          var parentNode = getParentNode(currentNode) || currentNode.parentNode;
+          var childNodes = getChildNodes(currentNode) || currentNode.childNodes;
+
+          if (childNodes && parentNode) {
+            var childCount = childNodes.length;
+
+            for (var i = childCount - 1; i >= 0; --i) {
+              parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));
+            }
+          }
+        }
+
+        _forceRemove(currentNode);
+
+        return true;
+      }
+      /* Check whether element has a valid namespace */
+
+      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
+        _forceRemove(currentNode);
+
+        return true;
+      }
+      /* Make sure that older browsers don't get fallback-tag mXSS */
+
+      if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
+        _forceRemove(currentNode);
+
+        return true;
+      }
+      /* Sanitize element content to be template-safe */
+
+      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
+        /* Get the element's text content */
+        content = currentNode.textContent;
+        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], function (expr) {
+          content = stringReplace(content, expr, ' ');
+        });
+
+        if (currentNode.textContent !== content) {
+          arrayPush(DOMPurify.removed, {
+            element: currentNode.cloneNode()
+          });
+          currentNode.textContent = content;
+        }
+      }
+      /* Execute a hook if present */
+
+      _executeHook('afterSanitizeElements', currentNode, null);
+
+      return false;
+    };
+    /**
+     * _isValidAttribute
+     *
+     * @param  {string} lcTag Lowercase tag name of containing element.
+     * @param  {string} lcName Lowercase attribute name.
+     * @param  {string} value Attribute value.
+     * @return {Boolean} Returns true if `value` is valid, otherwise false.
+     */
+    // eslint-disable-next-line complexity
+
+
+    var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
+      /* Make sure attribute cannot clobber */
+      if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
+        return false;
+      }
+      /* Allow valid data-* attributes: At least one character after "-"
+          (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
+          XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
+          We don't need to check the value; it's always URI safe. */
+
+      if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ;else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ;else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
+        if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND
+        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
+        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
+        _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND
+        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
+        lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ;else {
+          return false;
+        }
+        /* Check value is safe. First, is attr inert? If so, is safe */
+      } else if (URI_SAFE_ATTRIBUTES[lcName]) ;else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ;else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if (value) {
+        return false;
+      } else ;
+
+      return true;
+    };
+    /**
+     * _isBasicCustomElement
+     * checks if at least one dash is included in tagName, and it's not the first char
+     * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
+     *
+     * @param {string} tagName name of the tag of the node to sanitize
+     * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
+     */
+
+    var _isBasicCustomElement = function _isBasicCustomElement(tagName) {
+      return tagName.indexOf('-') > 0;
+    };
+    /**
+     * _sanitizeAttributes
+     *
+     * @protect attributes
+     * @protect nodeName
+     * @protect removeAttribute
+     * @protect setAttribute
+     *
+     * @param  {Node} currentNode to sanitize
+     */
+
+    var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
+      /* Execute a hook if present */
+      _executeHook('beforeSanitizeAttributes', currentNode, null);
+
+      var attributes = currentNode.attributes;
+      /* Check if we have attributes; if not we might have a text node */
+
+      if (!attributes) {
+        return;
+      }
+
+      var hookEvent = {
+        attrName: '',
+        attrValue: '',
+        keepAttr: true,
+        allowedAttributes: ALLOWED_ATTR
+      };
+      var l = attributes.length;
+      /* Go backwards over all attributes; safely remove bad ones */
+
+      var _loop = function _loop() {
+        var attr = attributes[l];
+        var name = attr.name,
+            namespaceURI = attr.namespaceURI,
+            attrValue = attr.value;
+
+        var lcName = transformCaseFunc(name);
+        var value = name === 'value' ? attrValue : stringTrim(attrValue);
+        /* Execute a hook if present */
+
+        hookEvent.attrName = lcName;
+        hookEvent.attrValue = value;
+        hookEvent.keepAttr = true;
+        hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
+
+        _executeHook('uponSanitizeAttribute', currentNode, hookEvent);
+
+        value = hookEvent.attrValue;
+        /* Did the hooks approve of the attribute? */
+
+        if (hookEvent.forceKeepAttr) {
+          return 'continue';
+        }
+        /* Remove attribute */
+
+        _removeAttribute(name, currentNode);
+        /* Did the hooks approve of the attribute? */
+
+        if (!hookEvent.keepAttr) {
+          return 'continue';
+        }
+        /* Work around a security issue in jQuery 3.0 */
+
+        if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
+          _removeAttribute(name, currentNode);
+
+          return 'continue';
+        }
+        /* Sanitize attribute content to be template-safe */
+
+        if (SAFE_FOR_TEMPLATES) {
+          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], function (expr) {
+            value = stringReplace(value, expr, ' ');
+          });
+        }
+        /* Is `value` valid for this attribute? */
+
+        var lcTag = transformCaseFunc(currentNode.nodeName);
+
+        if (!_isValidAttribute(lcTag, lcName, value)) {
+          return 'continue';
+        }
+        /* Full DOM Clobbering protection via namespace isolation,
+         * Prefix id and name attributes with `user-content-`
+         */
+
+        if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
+          // Remove the attribute with this value
+          _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value
+
+
+          value = SANITIZE_NAMED_PROPS_PREFIX + value;
+        }
+        /* Handle attributes that require Trusted Types */
+
+        if (trustedTypesPolicy && (typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) === 'object' && typeof trustedTypes.getAttributeType === 'function') {
+          if (namespaceURI) ;else {
+            switch (trustedTypes.getAttributeType(lcTag, lcName)) {
+              case 'TrustedHTML':
+                {
+                  value = trustedTypesPolicy.createHTML(value);
+                  break;
+                }
+
+              case 'TrustedScriptURL':
+                {
+                  value = trustedTypesPolicy.createScriptURL(value);
+                  break;
+                }
+            }
+          }
+        }
+        /* Handle invalid data-* attribute set by try-catching it */
+
+        try {
+          if (namespaceURI) {
+            currentNode.setAttributeNS(namespaceURI, name, value);
+          } else {
+            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
+            currentNode.setAttribute(name, value);
+          }
+
+          arrayPop(DOMPurify.removed);
+        } catch (_) {}
+      };
+
+      while (l--) {
+        var _ret = _loop();
+
+        if (_ret === 'continue') continue;
+      }
+      /* Execute a hook if present */
+
+      _executeHook('afterSanitizeAttributes', currentNode, null);
+    };
+    /**
+     * _sanitizeShadowDOM
+     *
+     * @param  {DocumentFragment} fragment to iterate over recursively
+     */
+
+    var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
+      var shadowNode = null;
+
+      var shadowIterator = _createNodeIterator(fragment);
+      /* Execute a hook if present */
+
+      _executeHook('beforeSanitizeShadowDOM', fragment, null);
+
+      while (shadowNode = shadowIterator.nextNode()) {
+        /* Execute a hook if present */
+        _executeHook('uponSanitizeShadowNode', shadowNode, null);
+        /* Sanitize tags and elements */
+
+        if (_sanitizeElements(shadowNode)) {
+          continue;
+        }
+        /* Deep shadow DOM detected */
+
+        if (shadowNode.content instanceof DocumentFragment) {
+          _sanitizeShadowDOM(shadowNode.content);
+        }
+        /* Check attributes, sanitize if necessary */
+
+        _sanitizeAttributes(shadowNode);
+      }
+      /* Execute a hook if present */
+
+      _executeHook('afterSanitizeShadowDOM', fragment, null);
+    };
+    /**
+     * Sanitize
+     * Public method providing core sanitation functionality
+     *
+     * @param {String|Node} dirty string or DOM node
+     * @param {Object} cfg object
+     */
+    // eslint-disable-next-line complexity
+
+
+    DOMPurify.sanitize = function (dirty) {
+      var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var body = null;
+      var importedNode = null;
+      var currentNode = null;
+      var returnNode = null;
+      /* Make sure we have a string to sanitize.
+        DO NOT return early, as this will return the wrong type if
+        the user has requested a DOM object rather than a string */
+
+      IS_EMPTY_INPUT = !dirty;
+
+      if (IS_EMPTY_INPUT) {
+        dirty = '<!-->';
+      }
+      /* Stringify, in case dirty is an object */
+
+      if (typeof dirty !== 'string' && !_isNode(dirty)) {
+        if (typeof dirty.toString === 'function') {
+          dirty = dirty.toString();
+
+          if (typeof dirty !== 'string') {
+            throw typeErrorCreate('dirty is not a string, aborting');
+          }
+        } else {
+          throw typeErrorCreate('toString is not a function');
+        }
+      }
+      /* Return dirty HTML if DOMPurify cannot run */
+
+      if (!DOMPurify.isSupported) {
+        return dirty;
+      }
+      /* Assign config vars */
+
+      if (!SET_CONFIG) {
+        _parseConfig(cfg);
+      }
+      /* Clean up removed elements */
+
+      DOMPurify.removed = [];
+      /* Check if dirty is correctly typed for IN_PLACE */
+
+      if (typeof dirty === 'string') {
+        IN_PLACE = false;
+      }
+
+      if (IN_PLACE) {
+        /* Do some early pre-sanitization to avoid unsafe root nodes */
+        if (dirty.nodeName) {
+          var tagName = transformCaseFunc(dirty.nodeName);
+
+          if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
+            throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
+          }
+        }
+      } else if (dirty instanceof Node) {
+        /* If dirty is a DOM element, append to an empty document to avoid
+           elements being stripped by the parser */
+        body = _initDocument('<!---->');
+        importedNode = body.ownerDocument.importNode(dirty, true);
+
+        if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {
+          /* Node is already a body, use as is */
+          body = importedNode;
+        } else if (importedNode.nodeName === 'HTML') {
+          body = importedNode;
+        } else {
+          // eslint-disable-next-line unicorn/prefer-dom-node-append
+          body.appendChild(importedNode);
+        }
+      } else {
+        /* Exit directly if we have nothing to do */
+        if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
+        dirty.indexOf('<') === -1) {
+          return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
+        }
+        /* Initialize the document to work on */
+
+        body = _initDocument(dirty);
+        /* Check we have a DOM node from the data */
+
+        if (!body) {
+          return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
+        }
+      }
+      /* Remove first element node (ours) if FORCE_BODY is set */
+
+      if (body && FORCE_BODY) {
+        _forceRemove(body.firstChild);
+      }
+      /* Get node iterator */
+
+      var nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
+      /* Now start iterating over the created document */
+
+      while (currentNode = nodeIterator.nextNode()) {
+        /* Sanitize tags and elements */
+        if (_sanitizeElements(currentNode)) {
+          continue;
+        }
+        /* Shadow DOM detected, sanitize it */
+
+        if (currentNode.content instanceof DocumentFragment) {
+          _sanitizeShadowDOM(currentNode.content);
+        }
+        /* Check attributes, sanitize if necessary */
+
+        _sanitizeAttributes(currentNode);
+      }
+      /* If we sanitized `dirty` in-place, return it. */
+
+      if (IN_PLACE) {
+        return dirty;
+      }
+      /* Return sanitized string or DOM */
+
+      if (RETURN_DOM) {
+        if (RETURN_DOM_FRAGMENT) {
+          returnNode = createDocumentFragment.call(body.ownerDocument);
+
+          while (body.firstChild) {
+            // eslint-disable-next-line unicorn/prefer-dom-node-append
+            returnNode.appendChild(body.firstChild);
+          }
+        } else {
+          returnNode = body;
+        }
+
+        if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
+          /*
+            AdoptNode() is not used because internal state is not reset
+            (e.g. the past names map of a HTMLFormElement), this is safe
+            in theory but we would rather not risk another attack vector.
+            The state that is cloned by importNode() is explicitly defined
+            by the specs.
+          */
+          returnNode = importNode.call(originalDocument, returnNode, true);
+        }
+
+        return returnNode;
+      }
+
+      var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
+      /* Serialize doctype if allowed */
+
+      if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
+        serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
+      }
+      /* Sanitize final string template-safe */
+
+      if (SAFE_FOR_TEMPLATES) {
+        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], function (expr) {
+          serializedHTML = stringReplace(serializedHTML, expr, ' ');
+        });
+      }
+
+      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
+    };
+    /**
+     * Public method to set the configuration once
+     * setConfig
+     *
+     * @param {Object} cfg configuration object
+     */
+
+    DOMPurify.setConfig = function () {
+      var cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+      _parseConfig(cfg);
+
+      SET_CONFIG = true;
+    };
+    /**
+     * Public method to remove the configuration
+     * clearConfig
+     *
+     */
+
+    DOMPurify.clearConfig = function () {
+      CONFIG = null;
+      SET_CONFIG = false;
+    };
+    /**
+     * Public method to check if an attribute value is valid.
+     * Uses last set config, if any. Otherwise, uses config defaults.
+     * isValidAttribute
+     *
+     * @param  {String} tag Tag name of containing element.
+     * @param  {String} attr Attribute name.
+     * @param  {String} value Attribute value.
+     * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.
+     */
+
+    DOMPurify.isValidAttribute = function (tag, attr, value) {
+      /* Initialize shared config vars if necessary. */
+      if (!CONFIG) {
+        _parseConfig({});
+      }
+
+      var lcTag = transformCaseFunc(tag);
+      var lcName = transformCaseFunc(attr);
+      return _isValidAttribute(lcTag, lcName, value);
+    };
+    /**
+     * AddHook
+     * Public method to add DOMPurify hooks
+     *
+     * @param {String} entryPoint entry point for the hook to add
+     * @param {Function} hookFunction function to execute
+     */
+
+    DOMPurify.addHook = function (entryPoint, hookFunction) {
+      if (typeof hookFunction !== 'function') {
+        return;
+      }
+
+      hooks[entryPoint] = hooks[entryPoint] || [];
+      arrayPush(hooks[entryPoint], hookFunction);
+    };
+    /**
+     * RemoveHook
+     * Public method to remove a DOMPurify hook at a given entryPoint
+     * (pops it from the stack of hooks if more are present)
+     *
+     * @param {String} entryPoint entry point for the hook to remove
+     * @return {Function} removed(popped) hook
+     */
+
+    DOMPurify.removeHook = function (entryPoint) {
+      if (hooks[entryPoint]) {
+        return arrayPop(hooks[entryPoint]);
+      }
+    };
+    /**
+     * RemoveHooks
+     * Public method to remove all DOMPurify hooks at a given entryPoint
+     *
+     * @param  {String} entryPoint entry point for the hooks to remove
+     */
+
+    DOMPurify.removeHooks = function (entryPoint) {
+      if (hooks[entryPoint]) {
+        hooks[entryPoint] = [];
+      }
+    };
+    /**
+     * RemoveAllHooks
+     * Public method to remove all DOMPurify hooks
+     */
+
+    DOMPurify.removeAllHooks = function () {
+      hooks = {};
+    };
+
+    return DOMPurify;
+  }
+
+  var purify = createDOMPurify();
+
+  return purify;
+});
+//# sourceMappingURL=purify.js.map
\ No newline at end of file
diff --git a/nv.d3.min.css b/nv.d3.min.css
new file mode 100644
index 0000000..d46f7eb
--- /dev/null
+++ b/nv.d3.min.css
@@ -0,0 +1 @@
+.chartWrap{margin:0;padding:0;overflow:hidden}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 250ms linear;-moz-transition:opacity 250ms linear;-webkit-transition:opacity 250ms linear;transition-delay:250ms;-moz-transition-delay:250ms;-webkit-transition-delay:250ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{position:absolute;pointer-events:none}svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:block;width:100%;height:100%}svg text{font:400 12px Arial}svg .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .disabled circle{fill-opacity:0}.nvd3 .nv-axis{pointer-events:none}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-bars .negative rect{zfill:brown}.nvd3 .nv-bars rect{zfill:#4682b4;fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups path.nv-line{fill:none;stroke-width:1.5px}.nvd3 .nv-groups path.nv-line.nv-thin-line{stroke-width:1px}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3 .nv-line.hover path{stroke-width:6px}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}.nvd3 .nv-distribution{pointer-events:none}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:4px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3.nv-historicalStockChart .nv-axis .nv-axislabel{font-weight:700}.nvd3.nv-historicalStockChart .nv-dragTarget{fill-opacity:0;stroke:none;cursor:move}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-indentedtree .name{margin-left:5px}.nvd3.nv-indentedtree .clickable{color:#08C;cursor:pointer}.nvd3.nv-indentedtree span.clickable:hover{color:#005580;text-decoration:underline}.nvd3.nv-indentedtree .nv-childrenCount{display:inline-block;margin-left:5px}.nvd3.nv-indentedtree .nv-treeicon{cursor:pointer}.nvd3.nv-indentedtree .nv-treeicon.nv-folded{cursor:pointer}.nvd3 .background path{fill:none;stroke:#ccc;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke:#4682b4;stroke-opacity:.7}.nvd3 .brush .extent{fill-opacity:.3;stroke:#fff;shape-rendering:crispEdges}.nvd3 .axis line,.axis path{fill:none;stroke:#000;shape-rendering:crispEdges}.nvd3 .axis text{text-shadow:0 1px 0 #fff}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc}
\ No newline at end of file
diff --git a/nv.d3.min.js b/nv.d3.min.js
new file mode 100644
index 0000000..1f23d22
--- /dev/null
+++ b/nv.d3.min.js
@@ -0,0 +1,7 @@
+/*! nvd3 - v0.0.1 - 2023-08-16 */function _toConsumableArray(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}return Array.from(a)}!function(){function a(a,b){return new Date(b,a+1,0).getDate()}function b(a,b,c){return function(d,e,f){var g=a(d),h=[];if(d>g&&b(g),f>1)for(;e>g;){var i=new Date(+g);c(i)%f===0&&h.push(i),b(g)}else for(;e>g;)h.push(new Date(+g)),b(g);return h}}var c=window.nv||{};c.version="1.1.15b",c.dev=!0,window.nv=c,c.tooltip=c.tooltip||{},c.utils=c.utils||{},c.models=c.models||{},c.charts={},c.graphs=[],c.logs={},c.dispatch=d3.dispatch("render_start","render_end"),c.dev&&(c.dispatch.on("render_start",function(a){c.logs.startTime=+new Date}),c.dispatch.on("render_end",function(a){c.logs.endTime=+new Date,c.logs.totalTime=c.logs.endTime-c.logs.startTime,c.log("total",c.logs.totalTime)})),c.log=function(){if(c.dev&&console.log&&console.log.apply)console.log.apply(console,arguments);else if(c.dev&&"function"==typeof console.log&&Function.prototype.bind){var a=Function.prototype.bind.call(console.log,console);a.apply(console,arguments)}return arguments[arguments.length-1]},c.render=function(a){a=a||1,c.render.active=!0,c.dispatch.render_start(),setTimeout(function(){for(var b,d,e=0;a>e&&(d=c.render.queue[e]);e++)b=d.generate(),typeof d.callback==typeof Function&&d.callback(b),c.graphs.push(b);c.render.queue.splice(0,e),c.render.queue.length?setTimeout(arguments.callee,0):(c.dispatch.render_end(),c.render.active=!1)},0)},c.render.active=!1,c.render.queue=[],c.addGraph=function(a){typeof arguments[0]==typeof Function&&(a={generate:arguments[0],callback:arguments[1]}),c.render.queue.push(a),c.render.active||c.render()},c.identity=function(a){return a},c.strip=function(a){return a.replace(/(\s|&)/g,"")},d3.time.monthEnd=function(a){return new Date(a.getFullYear(),a.getMonth(),0)},d3.time.monthEnds=b(d3.time.monthEnd,function(b){b.setUTCDate(b.getUTCDate()+1),b.setDate(a(b.getMonth()+1,b.getFullYear()))},function(a){return a.getMonth()}),c.interactiveGuideline=function(){"use strict";function a(l){l.each(function(l){function m(){var c=d3.mouse(this),d=c[0],e=c[1],i=!0,j=!1;if(k&&(d=d3.event.offsetX,e=d3.event.offsetY,"svg"!==d3.event.target.tagName&&(i=!1),d3.event.target.className.baseVal.match("nv-legend")&&(j=!0)),i&&(d-=f.left,e-=f.top),0>d||0>e||d>o||e>p||d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement||j){if(k&&d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement&&d3.event.relatedTarget.className.match(b.nvPointerEventsClass))return;return h.elementMouseout({mouseX:d,mouseY:e}),void a.renderGuideLine(null)}var l=g.invert(d);h.elementMousemove({mouseX:d,mouseY:e,pointXValue:l}),"dblclick"===d3.event.type&&h.elementDblclick({mouseX:d,mouseY:e,pointXValue:l})}var n=d3.select(this),o=d||960,p=e||400,q=n.selectAll("g.nv-wrap.nv-interactiveLineLayer").data([l]),r=q.enter().append("g").attr("class"," nv-wrap nv-interactiveLineLayer");r.append("g").attr("class","nv-interactiveGuideLine"),j&&(j.on("mousemove",m,!0).on("mouseout",m,!0).on("dblclick",m),a.renderGuideLine=function(a){if(i){var b=q.select(".nv-interactiveGuideLine").selectAll("line").data(null!=a?[c.utils.NaNtoZero(a)]:[],String);b.enter().append("line").attr("class","nv-guideline").attr("x1",function(a){return a}).attr("x2",function(a){return a}).attr("y1",p).attr("y2",0),b.exit().remove()}})})}var b=c.models.tooltip(),d=null,e=null,f={left:0,top:0},g=d3.scale.linear(),h=(d3.scale.linear(),d3.dispatch("elementMousemove","elementMouseout","elementDblclick")),i=!0,j=null,k=-1!==navigator.userAgent.indexOf("MSIE");return a.dispatch=h,a.tooltip=b,a.margin=function(b){return arguments.length?(f.top="undefined"!=typeof b.top?b.top:f.top,f.left="undefined"!=typeof b.left?b.left:f.left,a):f},a.width=function(b){return arguments.length?(d=b,a):d},a.height=function(b){return arguments.length?(e=b,a):e},a.xScale=function(b){return arguments.length?(g=b,a):g},a.showGuideLine=function(b){return arguments.length?(i=b,a):i},a.svgContainer=function(b){return arguments.length?(j=b,a):j},a},c.interactiveBisect=function(a,b,c){"use strict";if(!a instanceof Array)return null;"function"!=typeof c&&(c=function(a,b){return a.x});var d=d3.bisector(c).left,e=d3.max([0,d(a,b)-1]),f=c(a[e],e);if("undefined"==typeof f&&(f=e),f===b)return e;var g=d3.min([e+1,a.length-1]),h=c(a[g],g);return"undefined"==typeof h&&(h=g),Math.abs(h-b)>=Math.abs(f-b)?e:g},c.nearestValueIndex=function(a,b,c){"use strict";var d=1/0,e=null;return a.forEach(function(a,f){var g=Math.abs(b-a);d>=g&&c>g&&(d=g,e=f)}),e},function(){"use strict";window.nv.tooltip={},window.nv.models.tooltip=function(){function a(){if(l){var a=d3.select(l);"svg"!==a.node().tagName&&(a=a.select("svg"));var b=a.node()?a.attr("viewBox"):null;if(b){b=b.split(" ");var c=parseInt(a.style("width"))/b[2];n.left=n.left*c,n.top=n.top*c}}}function b(a){var b;b=l?d3.select(l):d3.select("body");var c=b.select(".nvtooltip");return null===c.node()&&(c=b.append("div").attr("class","nvtooltip "+(k?k:"xy-tooltip")).attr("id",p)),c.node().innerHTML=a,c.style("top",0).style("left",0).style("opacity",0),c.selectAll("div, table, td, tr").classed(q,!0),c.classed(q,!0),c.node()}function d(){if(o&&u(f)){a();var e=n.left,k=null!=j?j:n.top,p=b(t(f));if(m=p,l){var q=l.getElementsByTagName("svg")[0],r=(q?q.getBoundingClientRect():l.getBoundingClientRect(),{left:0,top:0});if(q){var s=q.getBoundingClientRect(),v=l.getBoundingClientRect(),w=s.top;if(0>w){var x=l.getBoundingClientRect();w=Math.abs(w)>x.height?0:w}r.top=Math.abs(w-v.top),r.left=Math.abs(s.left-v.left)}e+=l.offsetLeft+r.left-2*l.scrollLeft,k+=l.offsetTop+r.top-2*l.scrollTop}return i&&i>0&&(k=Math.floor(k/i)*i),c.tooltip.calcTooltipPosition([e,k],g,h,p),d}}var e=null,f=null,g="w",h=50,i=25,j=null,k=null,l=null,m=null,n={left:null,top:null},o=!0,p="nvtooltip-"+Math.floor(1e5*Math.random()),q="nv-pointer-events-none",r=function(a,b){return a},s=function(a){return a},t=function(a){if(null!=e)return e;if(null==a)return"";var b=d3.select(document.createElement("table")),c=b.selectAll("thead").data([a]).enter().append("thead");c.append("tr").append("td").attr("colspan",3).append("strong").classed("x-value",!0).html(s(a.value));var d=b.selectAll("tbody").data([a]).enter().append("tbody"),f=d.selectAll("tr").data(function(a){return a.series}).enter().append("tr").classed("highlight",function(a){return a.highlight});f.append("td").classed("legend-color-guide",!0).append("div").style("background-color",function(a){return a.color}),f.append("td").classed("key",!0).html(function(a){return a.key}),f.append("td").classed("value",!0).html(function(a,b){return r(a.value,b)}),f.selectAll("td").each(function(a){if(a.highlight){var b=d3.scale.linear().domain([0,1]).range(["#fff",a.color]),c=.6;d3.select(this).style("border-bottom-color",b(c)).style("border-top-color",b(c))}});var g=b.node().outerHTML;return void 0!==a.footer&&(g+="<div class='footer'>"+a.footer+"</div>"),g},u=function(a){return a&&a.series&&a.series.length>0?!0:!1};return d.nvPointerEventsClass=q,d.content=function(a){return arguments.length?(e=a,d):e},d.tooltipElem=function(){return m},d.contentGenerator=function(a){return arguments.length?("function"==typeof a&&(t=a),d):t},d.data=function(a){return arguments.length?(f=a,d):f},d.gravity=function(a){return arguments.length?(g=a,d):g},d.distance=function(a){return arguments.length?(h=a,d):h},d.snapDistance=function(a){return arguments.length?(i=a,d):i},d.classes=function(a){return arguments.length?(k=a,d):k},d.chartContainer=function(a){return arguments.length?(l=a,d):l},d.position=function(a){return arguments.length?(n.left="undefined"!=typeof a.left?a.left:n.left,n.top="undefined"!=typeof a.top?a.top:n.top,d):n},d.fixedTop=function(a){return arguments.length?(j=a,d):j},d.enabled=function(a){return arguments.length?(o=a,d):o},d.valueFormatter=function(a){return arguments.length?("function"==typeof a&&(r=a),d):r},d.headerFormatter=function(a){return arguments.length?("function"==typeof a&&(s=a),d):s},d.id=function(){return p},d},c.tooltip.show=function(a,b,d,e,f,g){var h=document.createElement("div");h.className="nvtooltip "+(g?g:"xy-tooltip");var i=f;(!f||f.tagName.match(/g|svg/i))&&(i=document.getElementsByTagName("body")[0]),h.style.left=0,h.style.top=0,h.style.opacity=0;var j=DOMPurify.sanitize(b,{RETURN_TRUSTED_TYPE:!0});h.innerHTML=j,i.appendChild(h),f&&(a[0]=a[0]-f.scrollLeft,a[1]=a[1]-f.scrollTop),c.tooltip.calcTooltipPosition(a,d,e,h)},c.tooltip.findFirstNonSVGParent=function(a){for(;null!==a.tagName.match(/^g|svg$/i);)a=a.parentNode;return a},c.tooltip.findTotalOffsetTop=function(a,b){var c=b;do isNaN(a.offsetTop)||(c+=a.offsetTop);while(a=a.offsetParent);return c},c.tooltip.findTotalOffsetLeft=function(a,b){var c=b;do isNaN(a.offsetLeft)||(c+=a.offsetLeft);while(a=a.offsetParent);return c},c.tooltip.calcTooltipPosition=function(a,b,d,e){var f,g,h=parseInt(e.offsetHeight),i=parseInt(e.offsetWidth),j=c.utils.windowSize().width,k=c.utils.windowSize().height,l=window.pageYOffset,m=window.pageXOffset;k=window.innerWidth>=document.body.scrollWidth?k:k-16,j=window.innerHeight>=document.body.scrollHeight?j:j-16,b=b||"s",d=d||20;var n=function(a){return c.tooltip.findTotalOffsetTop(a,g)},o=function(a){return c.tooltip.findTotalOffsetLeft(a,f)};switch(b){case"e":f=a[0]-i-d,g=a[1]-h/2;var p=o(e),q=n(e);m>p&&(f=a[0]+d>m?a[0]+d:m-p+f),l>q&&(g=l-q+g),q+h>l+k&&(g=l+k-q+g-h);break;case"w":f=a[0]+d,g=a[1]-h/2;var p=o(e),q=n(e);p+i>j&&(f=a[0]-i-d),l>q&&(g=l+5),q+h>l+k&&(g=l+k-q+g-h);break;case"n":f=a[0]-i/2-5,g=a[1]+d;var p=o(e),q=n(e);m>p&&(f=m+5),p+i>j&&(f=f-i/2+5),q+h>l+k&&(g=l+k-q+g-h);break;case"s":f=a[0]-i/2,g=a[1]-h-d;var p=o(e),q=n(e);m>p&&(f=m+5),p+i>j&&(f=f-i/2+5),l>q&&(g=l);break;case"none":f=a[0],g=a[1]-d;var p=o(e),q=n(e)}return e.style.left=f+"px",e.style.top=g+"px",e.style.opacity=1,e.style.position="absolute",e},c.tooltip.cleanup=function(){for(var a=document.getElementsByClassName("nvtooltip"),b=[];a.length;)b.push(a[0]),a[0].style.transitionDelay="0 !important",a[0].style.opacity=0,a[0].className="nvtooltip-pending-removal";setTimeout(function(){for(;b.length;){var a=b.pop();a.parentNode.removeChild(a)}},500)}}(),c.utils.windowSize=function(){var a={width:640,height:480};return document.body&&document.body.offsetWidth&&(a.width=document.body.offsetWidth,a.height=document.body.offsetHeight),"CSS1Compat"==document.compatMode&&document.documentElement&&document.documentElement.offsetWidth&&(a.width=document.documentElement.offsetWidth,a.height=document.documentElement.offsetHeight),window.innerWidth&&window.innerHeight&&(a.width=window.innerWidth,a.height=window.innerHeight),a},c.utils.windowResize=function(a){if(void 0!==a){var b=window.onresize;window.onresize=function(c){"function"==typeof b&&b(c),a(c)}}},c.utils.getColor=function(a){return arguments.length?"[object Array]"===Object.prototype.toString.call(a)?function(b,c){return b.color||a[c%a.length]}:a:c.utils.defaultColor()},c.utils.defaultColor=function(){var a=d3.scale.category20().range();return function(b,c){return b.color||a[c%a.length]}},c.utils.customTheme=function(a,b,c){b=b||function(a){return a.key},c=c||d3.scale.category20().range();var d=c.length;return function(e,f){var g=b(e);return d||(d=c.length),"undefined"!=typeof a[g]?"function"==typeof a[g]?a[g]():a[g]:c[--d]}},c.utils.pjax=function(a,b){function d(d){d3.html(d,function(d){var e=d3.select(b).node();e.parentNode.replaceChild(d3.select(d).select(b).node(),e),c.utils.pjax(a,b)})}d3.selectAll(a).on("click",function(){history.pushState(this.href,this.textContent,this.href),d(this.href),d3.event.preventDefault()}),d3.select(window).on("popstate",function(){d3.event.state&&d(d3.event.state)})},c.utils.calcApproxTextWidth=function(a){if("function"==typeof a.style&&"function"==typeof a.text){var b=parseInt(a.style("font-size").replace("px","")),c=a.text().length;return c*b*.5}return 0},c.utils.NaNtoZero=function(a){return"number"!=typeof a||isNaN(a)||null===a||a===1/0?0:a},c.utils.optionsFunc=function(a){return a&&d3.map(a).forEach(function(a,b){"function"==typeof this[a]&&this[a](b)}.bind(this)),this},c.models.axis=function(){"use strict";function a(c){return c.each(function(a){var c=d3.select(this),f=c.selectAll("g.nv-wrap.nv-axis").data([a]),r=f.enter().append("g").attr("class","nvd3 nv-wrap nv-axis"),s=(r.append("g"),f.select("g"));null!==o?b.ticks(o):("top"==b.orient()||"bottom"==b.orient())&&b.ticks(Math.abs(g.range()[1]-g.range()[0])/100),s.transition().call(b),q=q||b.scale();var t=b.tickFormat();null==t&&(t=q.tickFormat());var u=s.selectAll("text.nv-axislabel").data([h||null]);switch(u.exit().remove(),b.orient()){case"top":u.enter().append("text").attr("class","nv-axislabel");var v=2==g.range().length?g.range()[1]:g.range()[g.range().length-1]+(g.range()[1]-g.range()[0]);if(u.attr("text-anchor","middle").attr("y",0).attr("x",v/2),i){var w=f.selectAll("g.nv-axisMaxMin").data(g.domain());w.enter().append("g").attr("class","nv-axisMaxMin").append("text"),w.exit().remove(),w.attr("transform",function(a,b){return"translate("+g(a)+",0)"}).select("text").attr("dy","-0.5em").attr("y",-b.tickPadding()).attr("text-anchor","middle").text(function(a,b){var c=t(a);return(""+c).match("NaN")?"":c}),w.transition().attr("transform",function(a,b){return"translate("+g.range()[b]+",0)"})}break;case"bottom":var x=36,y=30,z=s.selectAll("g").select("text");if(k%360){z.each(function(a,b){var c=this.getBBox().width;c>y&&(y=c)});var A=Math.abs(Math.sin(k*Math.PI/180)),x=(A?A*y:y)+30;z.attr("transform",function(a,b,c){return"rotate("+k+" 0,0)"}).style("text-anchor",k%360>0?"start":"end")}u.enter().append("text").attr("class","nv-axislabel");var v=2==g.range().length?g.range()[1]:g.range()[g.range().length-1]+(g.range()[1]-g.range()[0]);if(u.attr("text-anchor","middle").attr("y",x).attr("x",v/2),i){var w=f.selectAll("g.nv-axisMaxMin").data([g.domain()[0],g.domain()[g.domain().length-1]]);w.enter().append("g").attr("class","nv-axisMaxMin").append("text"),w.exit().remove(),w.attr("transform",function(a,b){return"translate("+(g(a)+(n?g.rangeBand()/2:0))+",0)"}).select("text").attr("dy",".71em").attr("y",b.tickPadding()).attr("transform",function(a,b,c){return"rotate("+k+" 0,0)"}).style("text-anchor",k?k%360>0?"start":"end":"middle").text(function(a,b){var c=t(a);return(""+c).match("NaN")?"":c}),w.transition().attr("transform",function(a,b){return"translate("+(g(a)+(n?g.rangeBand()/2:0))+",0)"})}m&&z.attr("transform",function(a,b){return"translate(0,"+(b%2==0?"0":"12")+")"});break;case"right":if(u.enter().append("text").attr("class","nv-axislabel"),u.style("text-anchor",l?"middle":"begin").attr("transform",l?"rotate(90)":"").attr("y",l?-Math.max(d.right,e)+12:-10).attr("x",l?g.range()[0]/2:b.tickPadding()),i){var w=f.selectAll("g.nv-axisMaxMin").data(g.domain());w.enter().append("g").attr("class","nv-axisMaxMin").append("text").style("opacity",0),w.exit().remove(),w.attr("transform",function(a,b){return"translate(0,"+g(a)+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",b.tickPadding()).style("text-anchor","start").text(function(a,b){var c=t(a);return(""+c).match("NaN")?"":c}),w.transition().attr("transform",function(a,b){return"translate(0,"+g.range()[b]+")"}).select("text").style("opacity",1)}break;case"left":if(u.enter().append("text").attr("class","nv-axislabel"),u.style("text-anchor",l?"middle":"end").attr("transform",l?"rotate(-90)":"").attr("y",l?-Math.max(d.left,e)+p:-10).attr("x",l?-g.range()[0]/2:-b.tickPadding()),i){var w=f.selectAll("g.nv-axisMaxMin").data(g.domain());w.enter().append("g").attr("class","nv-axisMaxMin").append("text").style("opacity",0),w.exit().remove(),w.attr("transform",function(a,b){return"translate(0,"+q(a)+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",-b.tickPadding()).attr("text-anchor","end").text(function(a,b){var c=t(a);return(""+c).match("NaN")?"":c}),w.transition().attr("transform",function(a,b){return"translate(0,"+g.range()[b]+")"}).select("text").style("opacity",1)}}if(u.text(function(a){return a}),!i||"left"!==b.orient()&&"right"!==b.orient()||(s.selectAll("g").each(function(a,b){d3.select(this).select("text").attr("opacity",1),(g(a)<g.range()[1]+10||g(a)>g.range()[0]-10)&&((a>1e-10||-1e-10>a)&&d3.select(this).attr("opacity",0),d3.select(this).select("text").attr("opacity",0))}),g.domain()[0]==g.domain()[1]&&0==g.domain()[0]&&f.selectAll("g.nv-axisMaxMin").style("opacity",function(a,b){return b?0:1})),i&&("top"===b.orient()||"bottom"===b.orient())){var B=[];f.selectAll("g.nv-axisMaxMin").each(function(a,b){try{b?B.push(g(a)-this.getBBox().width-4):B.push(g(a)+this.getBBox().width+4)}catch(c){b?B.push(g(a)-4):B.push(g(a)+4)}}),s.selectAll("g").each(function(a,b){(g(a)<B[0]||g(a)>B[1])&&(a>1e-10||-1e-10>a?d3.select(this).remove():d3.select(this).select("text").remove())})}j&&s.selectAll(".tick").filter(function(a){return!parseFloat(Math.round(1e5*a.__data__)/1e6)&&void 0!==a.__data__}).classed("zero",!0),q=g.copy()}),a}var b=d3.svg.axis(),d={top:0,right:0,bottom:0,left:0},e=75,f=60,g=d3.scale.linear(),h=null,i=!0,j=!0,k=0,l=!0,m=!1,n=!1,o=null,p=12;b.scale(g).orient("bottom").tickFormat(function(a){return a});var q;return a.axis=b,d3.rebind(a,b,"orient","tickValues","tickSubdivide","tickSize","tickPadding","tickFormat"),d3.rebind(a,g,"domain","range","rangeBand","rangeBands"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(d.top="undefined"!=typeof b.top?b.top:d.top,d.right="undefined"!=typeof b.right?b.right:d.right,d.bottom="undefined"!=typeof b.bottom?b.bottom:d.bottom,d.left="undefined"!=typeof b.left?b.left:d.left,a):d},a.width=function(b){return arguments.length?(e=b,a):e},a.ticks=function(b){return arguments.length?(o=b,a):o},a.height=function(b){return arguments.length?(f=b,a):f},a.axisLabel=function(b){return arguments.length?(h=b,a):h},a.showMaxMin=function(b){return arguments.length?(i=b,a):i},a.highlightZero=function(b){return arguments.length?(j=b,a):j},a.scale=function(c){return arguments.length?(g=c,b.scale(g),n="function"==typeof g.rangeBands,d3.rebind(a,g,"domain","range","rangeBand","rangeBands"),a):g},a.rotateYLabel=function(b){return arguments.length?(l=b,a):l},a.rotateLabels=function(b){return arguments.length?(k=b,a):k},a.staggerLabels=function(b){return arguments.length?(m=b,a):m},a.axisLabelDistance=function(b){return arguments.length?(p=b,a):p},a},c.models.historicalBar=function(){"use strict";function a(v){return v.each(function(a){var v=h-g.left-g.right,w=i-g.top-g.bottom,x=d3.select(this);k.domain(b||d3.extent(a[0].values.map(m).concat(o))),q?k.range(e||[.5*v/a[0].values.length,v*(a[0].values.length-.5)/a[0].values.length]):k.range(e||[0,v]),l.domain(d||d3.extent(a[0].values.map(n).concat(p))).range(f||[w,0]),k.domain()[0]===k.domain()[1]&&(k.domain()[0]?k.domain([k.domain()[0]-.01*k.domain()[0],k.domain()[1]+.01*k.domain()[1]]):k.domain([-1,1])),l.domain()[0]===l.domain()[1]&&(l.domain()[0]?l.domain([l.domain()[0]+.01*l.domain()[0],l.domain()[1]-.01*l.domain()[1]]):l.domain([-1,1]));var y=x.selectAll("g.nv-wrap.nv-historicalBar-"+j).data([a[0].values]),z=y.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBar-"+j),A=z.append("defs"),B=z.append("g"),C=y.select("g");B.append("g").attr("class","nv-bars"),y.attr("transform","translate("+g.left+","+g.top+")"),x.on("click",function(a,b){t.chartClick({data:a,index:b,pos:d3.event,id:j})}),A.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),y.select("#nv-chart-clip-path-"+j+" rect").attr("width",v).attr("height",w),C.attr("clip-path",r?"url(#nv-chart-clip-path-"+j+")":"");var D=y.select(".nv-bars").selectAll(".nv-bar").data(function(a){return a},function(a,b){return m(a,b)});D.exit().remove();D.enter().append("rect").attr("x",0).attr("y",function(a,b){return c.utils.NaNtoZero(l(Math.max(0,n(a,b))))}).attr("height",function(a,b){return c.utils.NaNtoZero(Math.abs(l(n(a,b))-l(0)))}).attr("transform",function(b,c){return"translate("+(k(m(b,c))-v/a[0].values.length*.45)+",0)"}).on("mouseover",function(b,c){u&&(d3.select(this).classed("hover",!0),t.elementMouseover({point:b,series:a[0],pos:[k(m(b,c)),l(n(b,c))],pointIndex:c,seriesIndex:0,e:d3.event}))}).on("mouseout",function(b,c){u&&(d3.select(this).classed("hover",!1),t.elementMouseout({point:b,series:a[0],pointIndex:c,seriesIndex:0,e:d3.event}))}).on("click",function(a,b){u&&(t.elementClick({value:n(a,b),data:a,index:b,pos:[k(m(a,b)),l(n(a,b))],e:d3.event,id:j}),d3.event.stopPropagation())}).on("dblclick",function(a,b){u&&(t.elementDblClick({value:n(a,b),data:a,index:b,pos:[k(m(a,b)),l(n(a,b))],e:d3.event,id:j}),d3.event.stopPropagation())});D.attr("fill",function(a,b){return s(a,b)}).attr("class",function(a,b,c){return(n(a,b)<0?"nv-bar negative":"nv-bar positive")+" nv-bar-"+c+"-"+b}).transition().attr("transform",function(b,c){return"translate("+(k(m(b,c))-v/a[0].values.length*.45)+",0)"}).attr("width",v/a[0].values.length*.9),D.transition().attr("y",function(a,b){var d=n(a,b)<0?l(0):l(0)-l(n(a,b))<1?l(0)-1:l(n(a,b));return c.utils.NaNtoZero(d)}).attr("height",function(a,b){return c.utils.NaNtoZero(Math.max(Math.abs(l(n(a,b))-l(0)),1))})}),a}var b,d,e,f,g={top:0,right:0,bottom:0,left:0},h=960,i=500,j=Math.floor(1e4*Math.random()),k=d3.scale.linear(),l=d3.scale.linear(),m=function(a){return a.x},n=function(a){return a.y},o=[],p=[0],q=!1,r=!0,s=c.utils.defaultColor(),t=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout"),u=!0;return a.highlightPoint=function(a,b){d3.select(".nv-historicalBar-"+j).select(".nv-bars .nv-bar-0-"+a).classed("hover",b)},a.clearHighlights=function(){d3.select(".nv-historicalBar-"+j).select(".nv-bars .nv-bar.hover").classed("hover",!1)},a.dispatch=t,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(m=b,a):m},a.y=function(b){return arguments.length?(n=b,a):n},a.margin=function(b){return arguments.length?(g.top="undefined"!=typeof b.top?b.top:g.top,g.right="undefined"!=typeof b.right?b.right:g.right,g.bottom="undefined"!=typeof b.bottom?b.bottom:g.bottom,g.left="undefined"!=typeof b.left?b.left:g.left,a):g},a.width=function(b){return arguments.length?(h=b,a):h},a.height=function(b){return arguments.length?(i=b,a):i},a.xScale=function(b){return arguments.length?(k=b,a):k},a.yScale=function(b){return arguments.length?(l=b,a):l},a.xDomain=function(c){return arguments.length?(b=c,a):b},a.yDomain=function(b){return arguments.length?(d=b,a):d},a.xRange=function(b){return arguments.length?(e=b,a):e},a.yRange=function(b){return arguments.length?(f=b,a):f},a.forceX=function(b){return arguments.length?(o=b,a):o},a.forceY=function(b){return arguments.length?(p=b,a):p},a.padData=function(b){return arguments.length?(q=b,a):q},a.clipEdge=function(b){return arguments.length?(r=b,a):r},a.color=function(b){return arguments.length?(s=c.utils.getColor(b),a):s},a.id=function(b){return arguments.length?(j=b,a):j},a.interactive=function(b){return arguments.length?(u=!1,a):u},a},c.models.bullet=function(){"use strict";function a(c){return c.each(function(a,c){var d=m-b.left-b.right,o=n-b.top-b.bottom,r=d3.select(this),s=f.call(this,a,c).slice().sort(d3.descending),t=g.call(this,a,c).slice().sort(d3.descending),u=h.call(this,a,c).slice().sort(d3.descending),v=i.call(this,a,c).slice(),w=j.call(this,a,c).slice(),x=k.call(this,a,c).slice(),y=d3.scale.linear().domain(d3.extent(d3.merge([l,s]))).range(e?[d,0]:[0,d]);this.__chart__||d3.scale.linear().domain([0,1/0]).range(y.range());this.__chart__=y;var z=d3.min(s),A=d3.max(s),B=s[1],C=r.selectAll("g.nv-wrap.nv-bullet").data([a]),D=C.enter().append("g").attr("class","nvd3 nv-wrap nv-bullet"),E=D.append("g"),F=C.select("g");E.append("rect").attr("class","nv-range nv-rangeMax"),E.append("rect").attr("class","nv-range nv-rangeAvg"),E.append("rect").attr("class","nv-range nv-rangeMin"),E.append("rect").attr("class","nv-measure"),E.append("path").attr("class","nv-markerTriangle"),C.attr("transform","translate("+b.left+","+b.top+")");var G=function(a){return Math.abs(y(a)-y(0))},H=function(a){return y(0>a?a:0)};F.select("rect.nv-rangeMax").attr("height",o).attr("width",G(A>0?A:z)).attr("x",H(A>0?A:z)).datum(A>0?A:z),F.select("rect.nv-rangeAvg").attr("height",o).attr("width",G(B)).attr("x",H(B)).datum(B),F.select("rect.nv-rangeMin").attr("height",o).attr("width",G(A)).attr("x",H(A)).attr("width",G(A>0?z:A)).attr("x",H(A>0?z:A)).datum(A>0?z:A),F.select("rect.nv-measure").style("fill",p).attr("height",o/3).attr("y",o/3).attr("width",0>u?y(0)-y(u[0]):y(u[0])-y(0)).attr("x",H(u)).on("mouseover",function(){q.elementMouseover({value:u[0],label:x[0]||"Current",pos:[y(u[0]),o/2]})}).on("mouseout",function(){q.elementMouseout({value:u[0],label:x[0]||"Current"})});var I=o/6;t[0]?F.selectAll("path.nv-markerTriangle").attr("transform",function(a){return"translate("+y(t[0])+","+o/2+")"}).attr("d","M0,"+I+"L"+I+","+-I+" "+-I+","+-I+"Z").on("mouseover",function(){q.elementMouseover({value:t[0],label:w[0]||"Previous",pos:[y(t[0]),o/2]})}).on("mouseout",function(){q.elementMouseout({value:t[0],label:w[0]||"Previous"})}):F.selectAll("path.nv-markerTriangle").remove(),C.selectAll(".nv-range").on("mouseover",function(a,b){var c=v[b]||(b?1==b?"Mean":"Minimum":"Maximum");q.elementMouseover({value:a,label:c,pos:[y(a),o/2]})}).on("mouseout",function(a,b){var c=v[b]||(b?1==b?"Mean":"Minimum":"Maximum");q.elementMouseout({value:a,label:c})})}),a}var b={top:0,right:0,bottom:0,left:0},d="left",e=!1,f=function(a){return a.ranges},g=function(a){return a.markers},h=function(a){return a.measures},i=function(a){return a.rangeLabels?a.rangeLabels:[]},j=function(a){return a.markerLabels?a.markerLabels:[]},k=function(a){return a.measureLabels?a.measureLabels:[]},l=[0],m=380,n=30,o=null,p=c.utils.getColor(["#1f77b4"]),q=d3.dispatch("elementMouseover","elementMouseout");return a.dispatch=q,a.options=c.utils.optionsFunc.bind(a),a.orient=function(b){return arguments.length?(d=b,e="right"==d||"bottom"==d,a):d},a.ranges=function(b){return arguments.length?(f=b,a):f},a.markers=function(b){return arguments.length?(g=b,a):g},a.measures=function(b){return arguments.length?(h=b,a):h},a.forceX=function(b){return arguments.length?(l=b,a):l},a.width=function(b){return arguments.length?(m=b,a):m},a.height=function(b){return arguments.length?(n=b,a):n},a.margin=function(c){return arguments.length?(b.top="undefined"!=typeof c.top?c.top:b.top,b.right="undefined"!=typeof c.right?c.right:b.right,b.bottom="undefined"!=typeof c.bottom?c.bottom:b.bottom,b.left="undefined"!=typeof c.left?c.left:b.left,a):b},a.tickFormat=function(b){return arguments.length?(o=b,a):o},a.color=function(b){return arguments.length?(p=c.utils.getColor(b),a):p},a},c.models.bulletChart=function(){"use strict";function a(c){return c.each(function(d,n){var r=d3.select(this),s=(j||parseInt(r.style("width"))||960)-f.left-f.right,t=k-f.top-f.bottom,u=this;if(a.update=function(){a(c)},a.container=this,!d||!g.call(this,d,n)){var v=r.selectAll(".nv-noData").data([o]);return v.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),v.attr("x",f.left+s/2).attr("y",18+f.top+t/2).text(function(a){return a}),a}r.selectAll(".nv-noData").remove();var w=g.call(this,d,n).slice().sort(d3.descending),x=h.call(this,d,n).slice().sort(d3.descending),y=i.call(this,d,n).slice().sort(d3.descending),z=r.selectAll("g.nv-wrap.nv-bulletChart").data([d]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-bulletChart"),B=A.append("g"),C=z.select("g");B.append("g").attr("class","nv-bulletWrap"),B.append("g").attr("class","nv-titles"),z.attr("transform","translate("+f.left+","+f.top+")");var D=d3.scale.linear().domain([0,Math.max(w[0],x[0],y[0])]).range(e?[s,0]:[0,s]),E=this.__chart__||d3.scale.linear().domain([0,1/0]).range(D.range());this.__chart__=D;var F=B.select(".nv-titles").append("g").attr("text-anchor","end").attr("transform","translate(-6,"+(k-f.top-f.bottom)/2+")");F.append("text").attr("class","nv-title").text(function(a){return a.title}),F.append("text").attr("class","nv-subtitle").attr("dy","1em").text(function(a){return a.subtitle}),b.width(s).height(t);var G=C.select(".nv-bulletWrap");d3.transition(G).call(b);var H=l||D.tickFormat(s/100),I=C.selectAll("g.nv-tick").data(D.ticks(s/50),function(a){return this.textContent||H(a)}),J=I.enter().append("g").attr("class","nv-tick").attr("transform",function(a){return"translate("+E(a)+",0)"}).style("opacity",1e-6);J.append("line").attr("y1",t).attr("y2",7*t/6),J.append("text").attr("text-anchor","middle").attr("dy","1em").attr("y",7*t/6).text(H);var K=d3.transition(I).attr("transform",function(a){return"translate("+D(a)+",0)"}).style("opacity",1);K.select("line").attr("y1",t).attr("y2",7*t/6),K.select("text").attr("y",7*t/6),d3.transition(I.exit()).attr("transform",function(a){return"translate("+D(a)+",0)"}).style("opacity",1e-6).remove(),p.on("tooltipShow",function(a){a.key=d.title,m&&q(a,u.parentNode)})}),d3.timer.flush(),a}var b=c.models.bullet(),d="left",e=!1,f={top:5,right:40,bottom:20,left:120},g=function(a){return a.ranges},h=function(a){return a.markers},i=function(a){return a.measures},j=null,k=55,l=null,m=!0,n=function(a,b,c,d,e){return"<h3>"+b+"</h3><p>"+c+"</p>"},o="No Data Available.",p=d3.dispatch("tooltipShow","tooltipHide"),q=function(b,d){var e=b.pos[0]+(d.offsetLeft||0)+f.left,g=b.pos[1]+(d.offsetTop||0)+f.top,h=n(b.key,b.label,b.value,b,a);c.tooltip.show([e,g],h,b.value<0?"e":"w",null,d)};return b.dispatch.on("elementMouseover.tooltip",function(a){p.tooltipShow(a)}),b.dispatch.on("elementMouseout.tooltip",function(a){p.tooltipHide(a)}),p.on("tooltipHide",function(){m&&c.tooltip.cleanup()}),a.dispatch=p,a.bullet=b,d3.rebind(a,b,"color"),a.options=c.utils.optionsFunc.bind(a),a.orient=function(b){return arguments.length?(d=b,e="right"==d||"bottom"==d,a):d},a.ranges=function(b){return arguments.length?(g=b,a):g},a.markers=function(b){return arguments.length?(h=b,a):h},a.measures=function(b){return arguments.length?(i=b,a):i},a.width=function(b){return arguments.length?(j=b,a):j},a.height=function(b){return arguments.length?(k=b,a):k},a.margin=function(b){return arguments.length?(f.top="undefined"!=typeof b.top?b.top:f.top,f.right="undefined"!=typeof b.right?b.right:f.right,f.bottom="undefined"!=typeof b.bottom?b.bottom:f.bottom,f.left="undefined"!=typeof b.left?b.left:f.left,a):f},a.tickFormat=function(b){return arguments.length?(l=b,a):l},a.tooltips=function(b){return arguments.length?(m=b,a):m},a.tooltipContent=function(b){return arguments.length?(n=b,a):n},a.noData=function(b){return arguments.length?(o=b,a):o},a},c.models.cumulativeLineChart=function(){"use strict";function a(x){return x.each(function(x){function I(b,c){d3.select(a.container).style("cursor","ew-resize")}function J(a,b){G.x=d3.event.x,G.i=Math.round(F.invert(G.x)),L()}function K(b,c){d3.select(a.container).style("cursor","auto"),z.index=G.i,D.stateChange(z)}function L(){da.data([G]);var b=a.transitionDuration();a.transitionDuration(0),a.update(),a.transitionDuration(b)}var M=d3.select(this).classed("nv-chart-"+y,!0),N=this,O=(n||parseInt(M.style("width"))||960)-l.left-l.right,P=(o||parseInt(M.style("height"))||400)-l.top-l.bottom;if(a.update=function(){M.transition().duration(E).call(a)},a.container=this,z.disabled=x.map(function(a){return!!a.disabled}),!A){var Q;A={};for(Q in z)z[Q]instanceof Array?A[Q]=z[Q].slice(0):A[Q]=z[Q]}var R=d3.behavior.drag().on("dragstart",I).on("drag",J).on("dragend",K);if(!(x&&x.length&&x.filter(function(a){return a.values.length}).length)){var S=M.selectAll(".nv-noData").data([B]);return S.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),S.attr("x",l.left+O/2).attr("y",l.top+P/2).text(function(a){return a}),a}if(M.selectAll(".nv-noData").remove(),d=f.xScale(),e=f.yScale(),w)f.yDomain(null);else{var T=x.filter(function(a){return!a.disabled}).map(function(a,b){var c=d3.extent(a.values,f.y());return c[0]<-.95&&(c[0]=-.95),
+[(c[0]-c[1])/(1+c[1]),(c[1]-c[0])/(1+c[0])]}),U=[d3.min(T,function(a){return a[0]}),d3.max(T,function(a){return a[1]})];f.yDomain(U)}F.domain([0,x[0].values.length-1]).range([0,O]).clamp(!0);var x=b(G.i,x),V=v?"none":"all",W=M.selectAll("g.nv-wrap.nv-cumulativeLine").data([x]),X=W.enter().append("g").attr("class","nvd3 nv-wrap nv-cumulativeLine").append("g"),Y=W.select("g");if(X.append("g").attr("class","nv-interactive"),X.append("g").attr("class","nv-x nv-axis").style("pointer-events","none"),X.append("g").attr("class","nv-y nv-axis"),X.append("g").attr("class","nv-background"),X.append("g").attr("class","nv-linesWrap").style("pointer-events",V),X.append("g").attr("class","nv-avgLinesWrap").style("pointer-events","none"),X.append("g").attr("class","nv-legendWrap"),X.append("g").attr("class","nv-controlsWrap"),p&&(i.width(O),Y.select(".nv-legendWrap").datum(x).call(i),l.top!=i.height()&&(l.top=i.height(),P=(o||parseInt(M.style("height"))||400)-l.top-l.bottom),Y.select(".nv-legendWrap").attr("transform","translate(0,"+-l.top+")")),u){var Z=[{key:"Re-scale y-axis",disabled:!w}];j.width(140).color(["#444","#444","#444"]),Y.select(".nv-controlsWrap").datum(Z).attr("transform","translate(0,"+-l.top+")").call(j)}W.attr("transform","translate("+l.left+","+l.top+")"),s&&Y.select(".nv-y.nv-axis").attr("transform","translate("+O+",0)");var $=x.filter(function(a){return a.tempDisabled});W.select(".tempDisabled").remove(),$.length&&W.append("text").attr("class","tempDisabled").attr("x",O/2).attr("y","-.71em").style("text-anchor","end").text($.map(function(a){return a.key}).join(", ")+" values cannot be calculated for this time period."),v&&(k.width(O).height(P).margin({left:l.left,top:l.top}).svgContainer(M).xScale(d),W.select(".nv-interactive").call(k)),X.select(".nv-background").append("rect"),Y.select(".nv-background rect").attr("width",O).attr("height",P),f.y(function(a){return a.display.y}).width(O).height(P).color(x.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!x[b].disabled&&!x[b].tempDisabled}));var _=Y.select(".nv-linesWrap").datum(x.filter(function(a){return!a.disabled&&!a.tempDisabled}));_.call(f),x.forEach(function(a,b){a.seriesIndex=b});var aa=x.filter(function(a){return!a.disabled&&!!C(a)}),ba=Y.select(".nv-avgLinesWrap").selectAll("line").data(aa,function(a){return a.key}),ca=function(a){var b=e(C(a));return 0>b?0:b>P?P:b};ba.enter().append("line").style("stroke-width",2).style("stroke-dasharray","10,10").style("stroke",function(a,b){return f.color()(a,a.seriesIndex)}).attr("x1",0).attr("x2",O).attr("y1",ca).attr("y2",ca),ba.style("stroke-opacity",function(a){var b=e(C(a));return 0>b||b>P?0:1}).attr("x1",0).attr("x2",O).attr("y1",ca).attr("y2",ca),ba.exit().remove();var da=_.selectAll(".nv-indexLine").data([G]);da.enter().append("rect").attr("class","nv-indexLine").attr("width",3).attr("x",-2).attr("fill","red").attr("fill-opacity",.5).style("pointer-events","all").call(R),da.attr("transform",function(a){return"translate("+F(a.i)+",0)"}).attr("height",P),q&&(g.scale(d).ticks(Math.min(x[0].values.length,O/70)).tickSize(-P,0),Y.select(".nv-x.nv-axis").attr("transform","translate(0,"+e.range()[0]+")"),d3.transition(Y.select(".nv-x.nv-axis")).call(g)),r&&(h.scale(e).ticks(P/36).tickSize(-O,0),d3.transition(Y.select(".nv-y.nv-axis")).call(h)),Y.select(".nv-background rect").on("click",function(){G.x=d3.mouse(this)[0],G.i=Math.round(F.invert(G.x)),z.index=G.i,D.stateChange(z),L()}),f.dispatch.on("elementClick",function(a){G.i=a.pointIndex,G.x=F(G.i),z.index=G.i,D.stateChange(z),L()}),j.dispatch.on("legendClick",function(b,c){b.disabled=!b.disabled,w=!b.disabled,z.rescaleY=w,D.stateChange(z),a.update()}),i.dispatch.on("stateChange",function(b){z.disabled=b.disabled,D.stateChange(z),a.update()}),k.dispatch.on("elementMousemove",function(b){f.clearHighlights();var d,e,i,j=[];if(x.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(g,h){e=c.interactiveBisect(g.values,b.pointXValue,a.x()),f.highlightPoint(h,e,!0);var k=g.values[e];"undefined"!=typeof k&&("undefined"==typeof d&&(d=k),"undefined"==typeof i&&(i=a.xScale()(a.x()(k,e))),j.push({key:g.key,value:a.y()(k,e),color:m(g,g.seriesIndex)}))}),j.length>2){var n=a.yScale().invert(b.mouseY),o=Math.abs(a.yScale().domain()[0]-a.yScale().domain()[1]),p=.03*o,q=c.nearestValueIndex(j.map(function(a){return a.value}),n,p);null!==q&&(j[q].highlight=!0)}var r=g.tickFormat()(a.x()(d,e),e);k.tooltip.position({left:i+l.left,top:b.mouseY+l.top}).chartContainer(N.parentNode).enabled(t).valueFormatter(function(a,b){return h.tickFormat()(a)}).data({value:r,series:j})(),k.renderGuideLine(i)}),k.dispatch.on("elementMouseout",function(a){D.tooltipHide(),f.clearHighlights()}),D.on("tooltipShow",function(a){t&&H(a,N.parentNode)}),D.on("changeState",function(b){"undefined"!=typeof b.disabled&&(x.forEach(function(a,c){a.disabled=b.disabled[c]}),z.disabled=b.disabled),"undefined"!=typeof b.index&&(G.i=b.index,G.x=F(G.i),z.index=b.index,da.data([G])),"undefined"!=typeof b.rescaleY&&(w=b.rescaleY),a.update()})}),a}function b(a,b){return b.map(function(b,c){if(!b.values)return b;var d=f.y()(b.values[a],a);return-.95>d?(b.tempDisabled=!0,b):(b.tempDisabled=!1,b.values=b.values.map(function(a,b){return a.display={y:(f.y()(a,b)-d)/(1+d)},a}),b)})}var d,e,f=c.models.line(),g=c.models.axis(),h=c.models.axis(),i=c.models.legend(),j=c.models.legend(),k=c.interactiveGuideline(),l={top:30,right:30,bottom:50,left:60},m=c.utils.defaultColor(),n=null,o=null,p=!0,q=!0,r=!0,s=!1,t=!0,u=!0,v=!1,w=!0,x=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},y=f.id(),z={index:0,rescaleY:w},A=null,B="No Data Available.",C=function(a){return a.average},D=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),E=250;g.orient("bottom").tickPadding(7),h.orient(s?"right":"left"),j.updateState(!1);var F=d3.scale.linear(),G={i:0,x:0},H=function(b,d){var e=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=g.tickFormat()(f.x()(b.point,b.pointIndex)),k=h.tickFormat()(f.y()(b.point,b.pointIndex)),l=x(b.series.key,j,k,b,a);c.tooltip.show([e,i],l,null,null,d)};return f.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+l.left,a.pos[1]+l.top],D.tooltipShow(a)}),f.dispatch.on("elementMouseout.tooltip",function(a){D.tooltipHide(a)}),D.on("tooltipHide",function(){t&&c.tooltip.cleanup()}),a.dispatch=D,a.lines=f,a.legend=i,a.xAxis=g,a.yAxis=h,a.interactiveLayer=k,d3.rebind(a,f,"defined","isArea","x","y","xScale","yScale","size","xDomain","yDomain","xRange","yRange","forceX","forceY","interactive","clipEdge","clipVoronoi","useVoronoi","id"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(l.top="undefined"!=typeof b.top?b.top:l.top,l.right="undefined"!=typeof b.right?b.right:l.right,l.bottom="undefined"!=typeof b.bottom?b.bottom:l.bottom,l.left="undefined"!=typeof b.left?b.left:l.left,a):l},a.width=function(b){return arguments.length?(n=b,a):n},a.height=function(b){return arguments.length?(o=b,a):o},a.color=function(b){return arguments.length?(m=c.utils.getColor(b),i.color(m),a):m},a.rescaleY=function(b){return arguments.length?(w=b,a):w},a.showControls=function(b){return arguments.length?(u=b,a):u},a.useInteractiveGuideline=function(b){return arguments.length?(v=b,b===!0&&(a.interactive(!1),a.useVoronoi(!1)),a):v},a.showLegend=function(b){return arguments.length?(p=b,a):p},a.showXAxis=function(b){return arguments.length?(q=b,a):q},a.showYAxis=function(b){return arguments.length?(r=b,a):r},a.rightAlignYAxis=function(b){return arguments.length?(s=b,h.orient(b?"right":"left"),a):s},a.tooltips=function(b){return arguments.length?(t=b,a):t},a.tooltipContent=function(b){return arguments.length?(x=b,a):x},a.state=function(b){return arguments.length?(z=b,a):z},a.defaultState=function(b){return arguments.length?(A=b,a):A},a.noData=function(b){return arguments.length?(B=b,a):B},a.average=function(b){return arguments.length?(C=b,a):C},a.transitionDuration=function(b){return arguments.length?(E=b,a):E},a},c.models.discreteBar=function(){"use strict";function a(c){return c.each(function(a){var c=j-i.left-i.right,l=k-i.top-i.bottom,w=d3.select(this);a.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var x=b&&d?[]:a.map(function(a){return a.values.map(function(a,b){return{x:o(a,b),y:p(a,b),y0:a.y0}})});m.domain(b||d3.merge(x).map(function(a){return a.x})).rangeBands(e||[0,c],.1),n.domain(d||d3.extent(d3.merge(x).map(function(a){return a.y}).concat(q))),s?n.range(f||[l-(n.domain()[0]<0?12:0),n.domain()[1]>0?12:0]):n.range(f||[l,0]),g=g||m,h=h||n.copy().range([n(0),n(0)]);var y=w.selectAll("g.nv-wrap.nv-discretebar").data([a]),z=y.enter().append("g").attr("class","nvd3 nv-wrap nv-discretebar"),A=z.append("g");y.select("g");A.append("g").attr("class","nv-groups"),y.attr("transform","translate("+i.left+","+i.top+")");var B=y.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});B.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),B.exit().transition().style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),B.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),B.transition().style("stroke-opacity",1).style("fill-opacity",.75);var C=B.selectAll("g.nv-bar").data(function(a){return a.values});C.exit().remove();var D=C.enter().append("g").attr("transform",function(a,b,c){return"translate("+(m(o(a,b))+.05*m.rangeBand())+", "+n(0)+")"}).on("mouseover",function(b,c){d3.select(this).classed("hover",!0),u.elementMouseover({value:p(b,c),point:b,series:a[b.series],pos:[m(o(b,c))+m.rangeBand()*(b.series+.5)/a.length,n(p(b,c))],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("mouseout",function(b,c){d3.select(this).classed("hover",!1),u.elementMouseout({value:p(b,c),point:b,series:a[b.series],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("click",function(b,c){u.elementClick({value:p(b,c),point:b,series:a[b.series],pos:[m(o(b,c))+m.rangeBand()*(b.series+.5)/a.length,n(p(b,c))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()}).on("dblclick",function(b,c){u.elementDblClick({value:p(b,c),point:b,series:a[b.series],pos:[m(o(b,c))+m.rangeBand()*(b.series+.5)/a.length,n(p(b,c))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()});D.append("rect").attr("height",0).attr("width",.9*m.rangeBand()/a.length),s?(D.append("text").attr("text-anchor","middle"),C.select("text").text(function(a,b){return t(p(a,b))}).transition().attr("x",.9*m.rangeBand()/2).attr("y",function(a,b){return p(a,b)<0?n(p(a,b))-n(0)+12:-4})):C.selectAll("text").remove(),C.attr("class",function(a,b){return p(a,b)<0?"nv-bar negative":"nv-bar positive"}).style("fill",function(a,b){return a.color||r(a,b)}).style("stroke",function(a,b){return a.color||r(a,b)}).select("rect").attr("class",v).transition().attr("width",.9*m.rangeBand()/a.length),C.transition().attr("transform",function(a,b){var c=m(o(a,b))+.05*m.rangeBand(),d=p(a,b)<0?n(0):n(0)-n(p(a,b))<1?n(0)-1:n(p(a,b));return"translate("+c+", "+d+")"}).select("rect").attr("height",function(a,b){return Math.max(Math.abs(n(p(a,b))-n(d&&d[0]||0))||1)}),g=m.copy(),h=n.copy()}),a}var b,d,e,f,g,h,i={top:0,right:0,bottom:0,left:0},j=960,k=500,l=Math.floor(1e4*Math.random()),m=d3.scale.ordinal(),n=d3.scale.linear(),o=function(a){return a.x},p=function(a){return a.y},q=[0],r=c.utils.defaultColor(),s=!1,t=d3.format(",.2f"),u=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout"),v="discreteBar";return a.dispatch=u,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(o=b,a):o},a.y=function(b){return arguments.length?(p=b,a):p},a.margin=function(b){return arguments.length?(i.top="undefined"!=typeof b.top?b.top:i.top,i.right="undefined"!=typeof b.right?b.right:i.right,i.bottom="undefined"!=typeof b.bottom?b.bottom:i.bottom,i.left="undefined"!=typeof b.left?b.left:i.left,a):i},a.width=function(b){return arguments.length?(j=b,a):j},a.height=function(b){return arguments.length?(k=b,a):k},a.xScale=function(b){return arguments.length?(m=b,a):m},a.yScale=function(b){return arguments.length?(n=b,a):n},a.xDomain=function(c){return arguments.length?(b=c,a):b},a.yDomain=function(b){return arguments.length?(d=b,a):d},a.xRange=function(b){return arguments.length?(e=b,a):e},a.yRange=function(b){return arguments.length?(f=b,a):f},a.forceY=function(b){return arguments.length?(q=b,a):q},a.color=function(b){return arguments.length?(r=c.utils.getColor(b),a):r},a.id=function(b){return arguments.length?(l=b,a):l},a.showValues=function(b){return arguments.length?(s=b,a):s},a.valueFormat=function(b){return arguments.length?(t=b,a):t},a.rectClass=function(b){return arguments.length?(v=b,a):v},a},c.models.discreteBarChart=function(){"use strict";function a(c){return c.each(function(c){var k=d3.select(this),q=this,v=(i||parseInt(k.style("width"))||960)-h.left-h.right,w=(j||parseInt(k.style("height"))||400)-h.top-h.bottom;if(a.update=function(){s.beforeUpdate(),k.transition().duration(t).call(a)},a.container=this,!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var x=k.selectAll(".nv-noData").data([r]);return x.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),x.attr("x",h.left+v/2).attr("y",h.top+w/2).text(function(a){return a}),a}k.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale().clamp(!0);var y=k.selectAll("g.nv-wrap.nv-discreteBarWithAxes").data([c]),z=y.enter().append("g").attr("class","nvd3 nv-wrap nv-discreteBarWithAxes").append("g"),A=z.append("defs"),B=y.select("g");z.append("g").attr("class","nv-x nv-axis"),z.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),z.append("g").attr("class","nv-barsWrap"),B.attr("transform","translate("+h.left+","+h.top+")"),n&&B.select(".nv-y.nv-axis").attr("transform","translate("+v+",0)"),e.width(v).height(w);var C=B.select(".nv-barsWrap").datum(c.filter(function(a){return!a.disabled}));if(C.transition().call(e),A.append("clipPath").attr("id","nv-x-label-clip-"+e.id()).append("rect"),B.select("#nv-x-label-clip-"+e.id()+" rect").attr("width",b.rangeBand()*(o?2:1)).attr("height",16).attr("x",-b.rangeBand()/(o?1:2)),l){f.scale(b).ticks(v/100).tickSize(-w,0),B.select(".nv-x.nv-axis").attr("transform","translate(0,"+(d.range()[0]+(e.showValues()&&d.domain()[0]<0?16:0))+")"),B.select(".nv-x.nv-axis").transition().call(f);var D=B.select(".nv-x.nv-axis").selectAll("g");o&&D.selectAll("text").attr("transform",function(a,b,c){return"translate(0,"+(c%2==0?"5":"17")+")"})}m&&(g.scale(d).ticks(w/36).tickSize(-v,0),B.select(".nv-y.nv-axis").transition().call(g)),B.select(".nv-zeroLine line").attr("x1",0).attr("x2",v).attr("y1",d(0)).attr("y2",d(0)),s.on("tooltipShow",function(a){p&&u(a,q.parentNode)})}),a}var b,d,e=c.models.discreteBar(),f=c.models.axis(),g=c.models.axis(),h={top:15,right:10,bottom:50,left:60},i=null,j=null,k=c.utils.getColor(),l=!0,m=!0,n=!1,o=!1,p=!0,q=function(a,b,c,d,e){return"<h3>"+b+"</h3><p>"+c+"</p>"},r="No Data Available.",s=d3.dispatch("tooltipShow","tooltipHide","beforeUpdate"),t=250;f.orient("bottom").highlightZero(!1).showMaxMin(!1).tickFormat(function(a){return a}),g.orient(n?"right":"left").tickFormat(d3.format(",.1f"));var u=function(b,d){var h=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=f.tickFormat()(e.x()(b.point,b.pointIndex)),k=g.tickFormat()(e.y()(b.point,b.pointIndex)),l=q(b.series.key,j,k,b,a);c.tooltip.show([h,i],l,b.value<0?"n":"s",null,d)};return e.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+h.left,a.pos[1]+h.top],s.tooltipShow(a)}),e.dispatch.on("elementMouseout.tooltip",function(a){s.tooltipHide(a)}),s.on("tooltipHide",function(){p&&c.tooltip.cleanup()}),a.dispatch=s,a.discretebar=e,a.xAxis=f,a.yAxis=g,d3.rebind(a,e,"x","y","xDomain","yDomain","xRange","yRange","forceX","forceY","id","showValues","valueFormat"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(h.top="undefined"!=typeof b.top?b.top:h.top,h.right="undefined"!=typeof b.right?b.right:h.right,h.bottom="undefined"!=typeof b.bottom?b.bottom:h.bottom,h.left="undefined"!=typeof b.left?b.left:h.left,a):h},a.width=function(b){return arguments.length?(i=b,a):i},a.height=function(b){return arguments.length?(j=b,a):j},a.color=function(b){return arguments.length?(k=c.utils.getColor(b),e.color(k),a):k},a.showXAxis=function(b){return arguments.length?(l=b,a):l},a.showYAxis=function(b){return arguments.length?(m=b,a):m},a.rightAlignYAxis=function(b){return arguments.length?(n=b,g.orient(b?"right":"left"),a):n},a.staggerLabels=function(b){return arguments.length?(o=b,a):o},a.tooltips=function(b){return arguments.length?(p=b,a):p},a.tooltipContent=function(b){return arguments.length?(q=b,a):q},a.noData=function(b){return arguments.length?(r=b,a):r},a.transitionDuration=function(b){return arguments.length?(t=b,a):t},a},c.models.distribution=function(){"use strict";function a(c){return c.each(function(a){var c=(e-("x"===g?d.left+d.right:d.top+d.bottom),"x"==g?"y":"x"),k=d3.select(this);b=b||j;var l=k.selectAll("g.nv-distribution").data([a]),m=l.enter().append("g").attr("class","nvd3 nv-distribution"),n=(m.append("g"),l.select("g"));l.attr("transform","translate("+d.left+","+d.top+")");var o=n.selectAll("g.nv-dist").data(function(a){return a},function(a){return a.key});o.enter().append("g"),o.attr("class",function(a,b){return"nv-dist nv-series-"+b}).style("stroke",function(a,b){return i(a,b)});var p=o.selectAll("line.nv-dist"+g).data(function(a){return a.values});p.enter().append("line").attr(g+"1",function(a,c){return b(h(a,c))}).attr(g+"2",function(a,c){return b(h(a,c))}),o.exit().selectAll("line.nv-dist"+g).transition().attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}).style("stroke-opacity",0).remove(),p.attr("class",function(a,b){return"nv-dist"+g+" nv-dist"+g+"-"+b}).attr(c+"1",0).attr(c+"2",f),p.transition().attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}),b=j.copy()}),a}var b,d={top:0,right:0,bottom:0,left:0},e=400,f=8,g="x",h=function(a){return a[g]},i=c.utils.defaultColor(),j=d3.scale.linear();return a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(d.top="undefined"!=typeof b.top?b.top:d.top,d.right="undefined"!=typeof b.right?b.right:d.right,d.bottom="undefined"!=typeof b.bottom?b.bottom:d.bottom,d.left="undefined"!=typeof b.left?b.left:d.left,a):d},a.width=function(b){return arguments.length?(e=b,a):e},a.axis=function(b){return arguments.length?(g=b,a):g},a.size=function(b){return arguments.length?(f=b,a):f},a.getData=function(b){return arguments.length?(h=d3.functor(b),a):h},a.scale=function(b){return arguments.length?(j=b,a):j},a.color=function(b){return arguments.length?(i=c.utils.getColor(b),a):i},a},c.models.historicalBarChart=function(){"use strict";function a(c){return c.each(function(r){var y=d3.select(this),z=this,A=(k||parseInt(y.style("width"))||960)-i.left-i.right,B=(l||parseInt(y.style("height"))||400)-i.top-i.bottom;if(a.update=function(){y.transition().duration(w).call(a)},a.container=this,s.disabled=r.map(function(a){return!!a.disabled}),!t){var C;t={};for(C in s)s[C]instanceof Array?t[C]=s[C].slice(0):t[C]=s[C]}if(!(r&&r.length&&r.filter(function(a){return a.values.length}).length)){var D=y.selectAll(".nv-noData").data([u]);return D.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),D.attr("x",i.left+A/2).attr("y",i.top+B/2).text(function(a){return a}),a}y.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale();var E=y.selectAll("g.nv-wrap.nv-historicalBarChart").data([r]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBarChart").append("g"),G=E.select("g");F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y nv-axis"),F.append("g").attr("class","nv-barsWrap"),F.append("g").attr("class","nv-legendWrap"),m&&(h.width(A),G.select(".nv-legendWrap").datum(r).call(h),i.top!=h.height()&&(i.top=h.height(),B=(l||parseInt(y.style("height"))||400)-i.top-i.bottom),E.select(".nv-legendWrap").attr("transform","translate(0,"+-i.top+")")),E.attr("transform","translate("+i.left+","+i.top+")"),p&&G.select(".nv-y.nv-axis").attr("transform","translate("+A+",0)"),e.width(A).height(B).color(r.map(function(a,b){return a.color||j(a,b)}).filter(function(a,b){return!r[b].disabled}));var H=G.select(".nv-barsWrap").datum(r.filter(function(a){return!a.disabled}));H.transition().call(e),n&&(f.scale(b).tickSize(-B,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),G.select(".nv-x.nv-axis").transition().call(f)),o&&(g.scale(d).ticks(B/36).tickSize(-A,0),G.select(".nv-y.nv-axis").transition().call(g)),h.dispatch.on("legendClick",function(b,d){b.disabled=!b.disabled,r.filter(function(a){return!a.disabled}).length||r.map(function(a){return a.disabled=!1,E.selectAll(".nv-series").classed("disabled",!1),a}),s.disabled=r.map(function(a){return!!a.disabled}),v.stateChange(s),c.transition().call(a)}),h.dispatch.on("legendDblclick",function(b){r.forEach(function(a){a.disabled=!0}),b.disabled=!1,s.disabled=r.map(function(a){return!!a.disabled}),v.stateChange(s),a.update()}),v.on("tooltipShow",function(a){q&&x(a,z.parentNode)}),v.on("changeState",function(b){"undefined"!=typeof b.disabled&&(r.forEach(function(a,c){a.disabled=b.disabled[c]}),s.disabled=b.disabled),a.update()})}),a}var b,d,e=c.models.historicalBar(),f=c.models.axis(),g=c.models.axis(),h=c.models.legend(),i={top:30,right:90,bottom:50,left:90},j=c.utils.defaultColor(),k=null,l=null,m=!1,n=!0,o=!0,p=!1,q=!0,r=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},s={},t=null,u="No Data Available.",v=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),w=250;f.orient("bottom").tickPadding(7),g.orient(p?"right":"left");var x=function(b,d){if(d){var h=d3.select(d).select("svg"),i=h.node()?h.attr("viewBox"):null;if(i){i=i.split(" ");var j=parseInt(h.style("width"))/i[2];b.pos[0]=b.pos[0]*j,b.pos[1]=b.pos[1]*j}}var k=b.pos[0]+(d.offsetLeft||0),l=b.pos[1]+(d.offsetTop||0),m=f.tickFormat()(e.x()(b.point,b.pointIndex)),n=g.tickFormat()(e.y()(b.point,b.pointIndex)),o=r(b.series.key,m,n,b,a);c.tooltip.show([k,l],o,null,null,d)};return e.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+i.left,a.pos[1]+i.top],v.tooltipShow(a)}),e.dispatch.on("elementMouseout.tooltip",function(a){v.tooltipHide(a)}),v.on("tooltipHide",function(){q&&c.tooltip.cleanup()}),a.dispatch=v,a.bars=e,a.legend=h,a.xAxis=f,a.yAxis=g,d3.rebind(a,e,"defined","isArea","x","y","size","xScale","yScale","xDomain","yDomain","xRange","yRange","forceX","forceY","interactive","clipEdge","clipVoronoi","id","interpolate","highlightPoint","clearHighlights","interactive"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(i.top="undefined"!=typeof b.top?b.top:i.top,i.right="undefined"!=typeof b.right?b.right:i.right,i.bottom="undefined"!=typeof b.bottom?b.bottom:i.bottom,i.left="undefined"!=typeof b.left?b.left:i.left,a):i},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.color=function(b){return arguments.length?(j=c.utils.getColor(b),h.color(j),a):j},a.showLegend=function(b){return arguments.length?(m=b,a):m},a.showXAxis=function(b){return arguments.length?(n=b,a):n},a.showYAxis=function(b){return arguments.length?(o=b,a):o},a.rightAlignYAxis=function(b){return arguments.length?(p=b,g.orient(b?"right":"left"),a):p},a.tooltips=function(b){return arguments.length?(q=b,a):q},a.tooltipContent=function(b){return arguments.length?(r=b,a):r},a.state=function(b){return arguments.length?(s=b,a):s},a.defaultState=function(b){return arguments.length?(t=b,a):t},a.noData=function(b){return arguments.length?(u=b,a):u},a.transitionDuration=function(b){return arguments.length?(w=b,a):w},a},c.models.indentedTree=function(){"use strict";function a(b){return b.each(function(b){function c(b,d,e){return d3.event.stopPropagation(),d3.event.shiftKey&&!e?(d3.event.shiftKey=!1,b.values&&b.values.forEach(function(a){(a.values||a._values)&&c(a,0,!0)}),!0):g(b)?(b.values?(b._values=b.values,b.values=null):(b.values=b._values,b._values=null),void a.update()):!0}function d(a){return a._values&&a._values.length?n:a.values&&a.values.length?o:""}function f(a){return a._values&&a._values.length}function g(a){var b=a.values||a._values;return b&&b.length}var s=1,t=d3.select(this),u=d3.layout.tree().children(function(a){return a.values}).size([e,k]);a.update=function(){t.transition().duration(600).call(a)},b[0]||(b[0]={key:j});var v=u.nodes(b[0]),w=d3.select(this).selectAll("div").data([[v]]),x=w.enter().append("div").attr("class","nvd3 nv-wrap nv-indentedtree"),y=x.append("table"),z=w.select("table").attr("width","100%").attr("class",m);if(h){var A=y.append("thead"),B=A.append("tr");l.forEach(function(a){B.append("th").attr("width",a.width?a.width:"10%").style("text-align","numeric"==a.type?"right":"left").append("span").text(a.label)})}var C=z.selectAll("tbody").data(function(a){return a});C.enter().append("tbody"),s=d3.max(v,function(a){return a.depth}),u.size([e,s*k]);var D=C.selectAll("tr").data(function(a){return a.filter(function(a){return i&&!a.children?i(a):!0})},function(a,b){return a.id||a.id||++r});D.exit().remove(),D.select("img.nv-treeicon").attr("src",d).classed("folded",f);var E=D.enter().append("tr");l.forEach(function(a,b){var e=E.append("td").style("padding-left",function(a){return(b?0:a.depth*k+12+(d(a)?0:16))+"px"},"important").style("text-align","numeric"==a.type?"right":"left");0==b&&e.append("img").classed("nv-treeicon",!0).classed("nv-folded",f).attr("src",d).style("width","14px").style("height","14px").style("padding","0 1px").style("display",function(a){return d(a)?"inline-block":"none"}).on("click",c),e.each(function(c){!b&&q(c)?d3.select(this).append("a").attr("href",q).attr("class",d3.functor(a.classes)).append("span"):d3.select(this).append("span"),d3.select(this).select("span").attr("class",d3.functor(a.classes)).text(function(b){return a.format?a.format(b):b[a.key]||"-"})}),a.showCount&&(e.append("span").attr("class","nv-childrenCount"),D.selectAll("span.nv-childrenCount").text(function(a){return a.values&&a.values.length||a._values&&a._values.length?"("+(a.values&&a.values.filter(function(a){return i?i(a):!0}).length||a._values&&a._values.filter(function(a){return i?i(a):!0}).length||0)+")":""}))}),D.order().on("click",function(a){p.elementClick({row:this,data:a,pos:[a.x,a.y]})}).on("dblclick",function(a){p.elementDblclick({row:this,data:a,pos:[a.x,a.y]})}).on("mouseover",function(a){p.elementMouseover({row:this,data:a,pos:[a.x,a.y]})}).on("mouseout",function(a){p.elementMouseout({row:this,data:a,pos:[a.x,a.y]})})}),a}var b={top:0,right:0,bottom:0,left:0},d=960,e=500,f=c.utils.defaultColor(),g=Math.floor(1e4*Math.random()),h=!0,i=!1,j="No Data Available.",k=20,l=[{key:"key",label:"Name",type:"text"}],m=null,n="images/grey-plus.png",o="images/grey-minus.png",p=d3.dispatch("elementClick","elementDblclick","elementMouseover","elementMouseout"),q=function(a){return a.url},r=0;return a.options=c.utils.optionsFunc.bind(a),a.margin=function(c){return arguments.length?(b.top="undefined"!=typeof c.top?c.top:b.top,b.right="undefined"!=typeof c.right?c.right:b.right,b.bottom="undefined"!=typeof c.bottom?c.bottom:b.bottom,b.left="undefined"!=typeof c.left?c.left:b.left,a):b},a.width=function(b){return arguments.length?(d=b,a):d},a.height=function(b){return arguments.length?(e=b,a):e},a.color=function(b){return arguments.length?(f=c.utils.getColor(b),scatter.color(f),a):f},a.id=function(b){return arguments.length?(g=b,a):g},a.header=function(b){return arguments.length?(h=b,a):h},a.noData=function(b){return arguments.length?(j=b,a):j},a.filterZero=function(b){return arguments.length?(i=b,a):i},a.columns=function(b){return arguments.length?(l=b,a):l},a.tableClass=function(b){return arguments.length?(m=b,a):m},a.iconOpen=function(b){return arguments.length?(n=b,a):n},a.iconClose=function(b){return arguments.length?(o=b,a):o},a.getUrl=function(b){return arguments.length?(q=b,a):q},a},c.models.legend=function(){"use strict";function a(m){return m.each(function(a){var m=d-b.left-b.right,n=d3.select(this),o=n.selectAll("g.nv-legend").data([a]),p=(o.enter().append("g").attr("class","nvd3 nv-legend").append("g"),o.select("g"));o.attr("transform","translate("+b.left+","+b.top+")");var q=p.selectAll(".nv-series").data(function(a){return a}),r=q.enter().append("g").attr("class","nv-series").on("mouseover",function(a,b){l.legendMouseover(a,b)}).on("mouseout",function(a,b){l.legendMouseout(a,b)}).on("click",function(b,c){l.legendClick(b,c),j&&(k?(a.forEach(function(a){a.disabled=!0}),b.disabled=!1):(b.disabled=!b.disabled,a.every(function(a){return a.disabled})&&a.forEach(function(a){a.disabled=!1})),l.stateChange({disabled:a.map(function(a){return!!a.disabled})}))}).on("dblclick",function(b,c){l.legendDblclick(b,c),j&&(a.forEach(function(a){a.disabled=!0}),b.disabled=!1,l.stateChange({disabled:a.map(function(a){return!!a.disabled})}))});if(r.append("circle").style("stroke-width",2).attr("class","nv-legend-symbol").attr("r",5),r.append("text").attr("text-anchor","start").attr("class","nv-legend-text").attr("dy",".32em").attr("dx","8"),q.classed("disabled",function(a){return a.disabled}),q.exit().remove(),q.select("circle").style("fill",function(a,b){return a.color||g(a,b)}).style("stroke",function(a,b){return a.color||g(a,b)}),q.select("text").text(f),h){var s=[];q.each(function(a,b){var d,e=d3.select(this).select("text");try{d=e.node().getComputedTextLength()}catch(f){d=c.utils.calcApproxTextWidth(e)}s.push(d+28)});for(var t=0,u=0,v=[];m>u&&t<s.length;)v[t]=s[t],u+=s[t++];for(0===t&&(t=1);u>m&&t>1;){v=[],t--;for(var w=0;w<s.length;w++)s[w]>(v[w%t]||0)&&(v[w%t]=s[w]);u=v.reduce(function(a,b,c,d){return a+b})}for(var x=[],y=0,z=0;t>y;y++)x[y]=z,z+=v[y];q.attr("transform",function(a,b){return"translate("+x[b%t]+","+(5+20*Math.floor(b/t))+")"}),i?p.attr("transform","translate("+(d-b.right-u)+","+b.top+")"):p.attr("transform","translate(0,"+b.top+")"),e=b.top+b.bottom+20*Math.ceil(s.length/t)}else{var A,B=5,C=5,D=0;q.attr("transform",function(a,c){var e=d3.select(this).select("text").node().getComputedTextLength()+28;return A=C,d<b.left+b.right+A+e&&(C=A=5,B+=20),C+=e,C>D&&(D=C),"translate("+A+","+B+")"}),p.attr("transform","translate("+(d-b.right-D)+","+b.top+")"),e=b.top+b.bottom+B+15}}),a}var b={top:5,right:0,bottom:5,left:0},d=400,e=20,f=function(a){return a.key},g=c.utils.defaultColor(),h=!0,i=!0,j=!0,k=!1,l=d3.dispatch("legendClick","legendDblclick","legendMouseover","legendMouseout","stateChange");return a.dispatch=l,a.options=c.utils.optionsFunc.bind(a),a.margin=function(c){return arguments.length?(b.top="undefined"!=typeof c.top?c.top:b.top,b.right="undefined"!=typeof c.right?c.right:b.right,b.bottom="undefined"!=typeof c.bottom?c.bottom:b.bottom,b.left="undefined"!=typeof c.left?c.left:b.left,a):b},a.width=function(b){return arguments.length?(d=b,a):d},a.height=function(b){return arguments.length?(e=b,a):e},a.key=function(b){return arguments.length?(f=b,a):f},a.color=function(b){return arguments.length?(g=c.utils.getColor(b),a):g},a.align=function(b){return arguments.length?(h=b,a):h},a.rightAlign=function(b){return arguments.length?(i=b,a):i},a.updateState=function(b){return arguments.length?(j=b,a):j},a.radioButtonMode=function(b){return arguments.length?(k=b,a):k},a},c.models.line=function(){"use strict";function a(r){return r.each(function(a){var r=g-f.left-f.right,s=h-f.top-f.bottom,t=d3.select(this);b=e.xScale(),d=e.yScale(),p=p||b,q=q||d;var u=t.selectAll("g.nv-wrap.nv-line").data([a]),v=u.enter().append("g").attr("class","nvd3 nv-wrap nv-line"),w=v.append("defs"),x=v.append("g"),y=u.select("g");
+x.append("g").attr("class","nv-groups"),x.append("g").attr("class","nv-scatterWrap"),u.attr("transform","translate("+f.left+","+f.top+")"),e.width(r).height(s);var z=u.select(".nv-scatterWrap");z.transition().call(e),w.append("clipPath").attr("id","nv-edge-clip-"+e.id()).append("rect"),u.select("#nv-edge-clip-"+e.id()+" rect").attr("width",r).attr("height",s),y.attr("clip-path",n?"url(#nv-edge-clip-"+e.id()+")":""),z.attr("clip-path",n?"url(#nv-edge-clip-"+e.id()+")":"");var A=u.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});A.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),A.exit().remove(),A.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return i(a,b)}).style("stroke",function(a,b){return i(a,b)}),A.transition().style("stroke-opacity",1).style("fill-opacity",.5);var B=A.selectAll("path.nv-area").data(function(a){return m(a)?[a]:[]});B.enter().append("path").attr("class","nv-area").attr("d",function(a){return d3.svg.area().interpolate(o).defined(l).x(function(a,b){return c.utils.NaNtoZero(p(j(a,b)))}).y0(function(a,b){return c.utils.NaNtoZero(q(k(a,b)))}).y1(function(a,b){return q(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[a.values])}),A.exit().selectAll("path.nv-area").remove(),B.transition().attr("d",function(a){return d3.svg.area().interpolate(o).defined(l).x(function(a,d){return c.utils.NaNtoZero(b(j(a,d)))}).y0(function(a,b){return c.utils.NaNtoZero(d(k(a,b)))}).y1(function(a,b){return d(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[a.values])});var C=A.selectAll("path.nv-line").data(function(a){return[a.values]});C.enter().append("path").attr("class","nv-line").attr("d",d3.svg.line().interpolate(o).defined(l).x(function(a,b){return c.utils.NaNtoZero(p(j(a,b)))}).y(function(a,b){return c.utils.NaNtoZero(q(k(a,b)))})),C.transition().attr("d",d3.svg.line().interpolate(o).defined(l).x(function(a,d){return c.utils.NaNtoZero(b(j(a,d)))}).y(function(a,b){return c.utils.NaNtoZero(d(k(a,b)))})),p=b.copy(),q=d.copy()}),a}var b,d,e=c.models.scatter(),f={top:0,right:0,bottom:0,left:0},g=960,h=500,i=c.utils.defaultColor(),j=function(a){return a.x},k=function(a){return a.y},l=function(a,b){return!isNaN(k(a,b))&&null!==k(a,b)},m=function(a){return a.area},n=!1,o="linear";e.size(16).sizeDomain([16,256]);var p,q;return a.dispatch=e.dispatch,a.scatter=e,d3.rebind(a,e,"id","interactive","size","xScale","yScale","zScale","xDomain","yDomain","xRange","yRange","sizeDomain","forceX","forceY","forceSize","clipVoronoi","useVoronoi","clipRadius","padData","highlightPoint","clearHighlights"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(f.top="undefined"!=typeof b.top?b.top:f.top,f.right="undefined"!=typeof b.right?b.right:f.right,f.bottom="undefined"!=typeof b.bottom?b.bottom:f.bottom,f.left="undefined"!=typeof b.left?b.left:f.left,a):f},a.width=function(b){return arguments.length?(g=b,a):g},a.height=function(b){return arguments.length?(h=b,a):h},a.x=function(b){return arguments.length?(j=b,e.x(b),a):j},a.y=function(b){return arguments.length?(k=b,e.y(b),a):k},a.clipEdge=function(b){return arguments.length?(n=b,a):n},a.color=function(b){return arguments.length?(i=c.utils.getColor(b),e.color(i),a):i},a.interpolate=function(b){return arguments.length?(o=b,a):o},a.defined=function(b){return arguments.length?(l=b,a):l},a.isArea=function(b){return arguments.length?(m=d3.functor(b),a):m},a},c.models.lineChart=function(){"use strict";function a(t){return t.each(function(t){var A=d3.select(this),B=this,C=(l||parseInt(A.style("width"))||960)-j.left-j.right,D=(m||parseInt(A.style("height"))||400)-j.top-j.bottom;if(a.update=function(){A.transition().duration(y).call(a)},a.container=this,u.disabled=t.map(function(a){return!!a.disabled}),!v){var E;v={};for(E in u)u[E]instanceof Array?v[E]=u[E].slice(0):v[E]=u[E]}if(!(t&&t.length&&t.filter(function(a){return a.values.length}).length)){var F=A.selectAll(".nv-noData").data([w]);return F.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),F.attr("x",j.left+C/2).attr("y",j.top+D/2).text(function(a){return a}),a}A.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale();var G=A.selectAll("g.nv-wrap.nv-lineChart").data([t]),H=G.enter().append("g").attr("class","nvd3 nv-wrap nv-lineChart").append("g"),I=G.select("g");H.append("rect").style("opacity",0),H.append("g").attr("class","nv-x nv-axis"),H.append("g").attr("class","nv-y nv-axis"),H.append("g").attr("class","nv-linesWrap"),H.append("g").attr("class","nv-legendWrap"),H.append("g").attr("class","nv-interactive"),I.select("rect").attr("width",C).attr("height",D),n&&(h.width(C),I.select(".nv-legendWrap").datum(t).call(h),j.top!=h.height()&&(j.top=h.height(),D=(m||parseInt(A.style("height"))||400)-j.top-j.bottom),G.select(".nv-legendWrap").attr("transform","translate(0,"+-j.top+")")),G.attr("transform","translate("+j.left+","+j.top+")"),q&&I.select(".nv-y.nv-axis").attr("transform","translate("+C+",0)"),r&&(i.width(C).height(D).margin({left:j.left,top:j.top}).svgContainer(A).xScale(b),G.select(".nv-interactive").call(i)),e.width(C).height(D).color(t.map(function(a,b){return a.color||k(a,b)}).filter(function(a,b){return!t[b].disabled}));var J=I.select(".nv-linesWrap").datum(t.filter(function(a){return!a.disabled}));J.transition().call(e),o&&(f.scale(b).ticks(C/100).tickSize(-D,0),I.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),I.select(".nv-x.nv-axis").transition().call(f)),p&&(g.scale(d).ticks(D/36).tickSize(-C,0),I.select(".nv-y.nv-axis").transition().call(g)),h.dispatch.on("stateChange",function(b){u=b,x.stateChange(u),a.update()}),i.dispatch.on("elementMousemove",function(b){e.clearHighlights();var d,h,l,m=[];if(t.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,g){h=c.interactiveBisect(f.values,b.pointXValue,a.x()),e.highlightPoint(g,h,!0);var i=f.values[h];"undefined"!=typeof i&&("undefined"==typeof d&&(d=i),"undefined"==typeof l&&(l=a.xScale()(a.x()(i,h))),m.push({key:f.key,value:a.y()(i,h),color:k(f,f.seriesIndex)}))}),m.length>2){var n=a.yScale().invert(b.mouseY),o=Math.abs(a.yScale().domain()[0]-a.yScale().domain()[1]),p=.03*o,q=c.nearestValueIndex(m.map(function(a){return a.value}),n,p);null!==q&&(m[q].highlight=!0)}var r=f.tickFormat()(a.x()(d,h));i.tooltip.position({left:l+j.left,top:b.mouseY+j.top}).chartContainer(B.parentNode).enabled(s).valueFormatter(function(a,b){return g.tickFormat()(a)}).data({value:r,series:m})(),i.renderGuideLine(l)}),i.dispatch.on("elementMouseout",function(a){x.tooltipHide(),e.clearHighlights()}),x.on("tooltipShow",function(a){s&&z(a,B.parentNode)}),x.on("changeState",function(b){"undefined"!=typeof b.disabled&&(t.forEach(function(a,c){a.disabled=b.disabled[c]}),u.disabled=b.disabled),a.update()})}),a}var b,d,e=c.models.line(),f=c.models.axis(),g=c.models.axis(),h=c.models.legend(),i=c.interactiveGuideline(),j={top:30,right:20,bottom:50,left:60},k=c.utils.defaultColor(),l=null,m=null,n=!0,o=!0,p=!0,q=!1,r=!1,s=!0,t=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},u={},v=null,w="No Data Available.",x=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),y=250;f.orient("bottom").tickPadding(7),g.orient(q?"right":"left");var z=function(b,d){var h=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=f.tickFormat()(e.x()(b.point,b.pointIndex)),k=g.tickFormat()(e.y()(b.point,b.pointIndex)),l=t(b.series.key,j,k,b,a);c.tooltip.show([h,i],l,null,null,d)};return e.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+j.left,a.pos[1]+j.top],x.tooltipShow(a)}),e.dispatch.on("elementMouseout.tooltip",function(a){x.tooltipHide(a)}),x.on("tooltipHide",function(){s&&c.tooltip.cleanup()}),a.dispatch=x,a.lines=e,a.legend=h,a.xAxis=f,a.yAxis=g,a.interactiveLayer=i,d3.rebind(a,e,"defined","isArea","x","y","size","xScale","yScale","xDomain","yDomain","xRange","yRange","forceX","forceY","interactive","clipEdge","clipVoronoi","useVoronoi","id","interpolate"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(l=b,a):l},a.height=function(b){return arguments.length?(m=b,a):m},a.color=function(b){return arguments.length?(k=c.utils.getColor(b),h.color(k),a):k},a.showLegend=function(b){return arguments.length?(n=b,a):n},a.showXAxis=function(b){return arguments.length?(o=b,a):o},a.showYAxis=function(b){return arguments.length?(p=b,a):p},a.rightAlignYAxis=function(b){return arguments.length?(q=b,g.orient(b?"right":"left"),a):q},a.useInteractiveGuideline=function(b){return arguments.length?(r=b,b===!0&&(a.interactive(!1),a.useVoronoi(!1)),a):r},a.tooltips=function(b){return arguments.length?(s=b,a):s},a.tooltipContent=function(b){return arguments.length?(t=b,a):t},a.state=function(b){return arguments.length?(u=b,a):u},a.defaultState=function(b){return arguments.length?(v=b,a):v},a.noData=function(b){return arguments.length?(w=b,a):w},a.transitionDuration=function(b){return arguments.length?(y=b,a):y},a},c.models.linePlusBarChart=function(){"use strict";function a(c){return c.each(function(c){var o=d3.select(this),p=this,t=(m||parseInt(o.style("width"))||960)-l.left-l.right,z=(n||parseInt(o.style("height"))||400)-l.top-l.bottom;if(a.update=function(){o.transition().call(a)},u.disabled=c.map(function(a){return!!a.disabled}),!v){var A;v={};for(A in u)u[A]instanceof Array?v[A]=u[A].slice(0):v[A]=u[A]}if(!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var B=o.selectAll(".nv-noData").data([w]);return B.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),B.attr("x",l.left+t/2).attr("y",l.top+z/2).text(function(a){return a}),a}o.selectAll(".nv-noData").remove();var C=c.filter(function(a){return!a.disabled&&a.bar}),D=c.filter(function(a){return!a.bar});b=D.filter(function(a){return!a.disabled}).length&&D.filter(function(a){return!a.disabled})[0].values.length?f.xScale():g.xScale(),d=g.yScale(),e=f.yScale();var E=d3.select(this).selectAll("g.nv-wrap.nv-linePlusBar").data([c]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-linePlusBar").append("g"),G=E.select("g");F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y1 nv-axis"),F.append("g").attr("class","nv-y2 nv-axis"),F.append("g").attr("class","nv-barsWrap"),F.append("g").attr("class","nv-linesWrap"),F.append("g").attr("class","nv-legendWrap"),r&&(k.width(t/2),G.select(".nv-legendWrap").datum(c.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(a.bar?" (left axis)":" (right axis)"),a})).call(k),l.top!=k.height()&&(l.top=k.height(),z=(n||parseInt(o.style("height"))||400)-l.top-l.bottom),G.select(".nv-legendWrap").attr("transform","translate("+t/2+","+-l.top+")")),E.attr("transform","translate("+l.left+","+l.top+")"),f.width(t).height(z).color(c.map(function(a,b){return a.color||q(a,b)}).filter(function(a,b){return!c[b].disabled&&!c[b].bar})),g.width(t).height(z).color(c.map(function(a,b){return a.color||q(a,b)}).filter(function(a,b){return!c[b].disabled&&c[b].bar}));var H=G.select(".nv-barsWrap").datum(C.length?C:[{values:[]}]),I=G.select(".nv-linesWrap").datum(D[0]&&!D[0].disabled?D:[{values:[]}]);d3.transition(H).call(g),d3.transition(I).call(f),h.scale(b).ticks(t/100).tickSize(-z,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),d3.transition(G.select(".nv-x.nv-axis")).call(h),i.scale(d).ticks(z/36).tickSize(-t,0),d3.transition(G.select(".nv-y1.nv-axis")).style("opacity",C.length?1:0).call(i),j.scale(e).ticks(z/36).tickSize(C.length?0:-t,0),G.select(".nv-y2.nv-axis").style("opacity",D.length?1:0).attr("transform","translate("+t+",0)"),d3.transition(G.select(".nv-y2.nv-axis")).call(j),k.dispatch.on("stateChange",function(b){u=b,x.stateChange(u),a.update()}),x.on("tooltipShow",function(a){s&&y(a,p.parentNode)}),x.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),u.disabled=b.disabled),a.update()})}),a}var b,d,e,f=c.models.line(),g=c.models.historicalBar(),h=c.models.axis(),i=c.models.axis(),j=c.models.axis(),k=c.models.legend(),l={top:30,right:60,bottom:50,left:60},m=null,n=null,o=function(a){return a.x},p=function(a){return a.y},q=c.utils.defaultColor(),r=!0,s=!0,t=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},u={},v=null,w="No Data Available.",x=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState");g.padData(!0),f.clipEdge(!1).padData(!0),h.orient("bottom").tickPadding(7).highlightZero(!1),i.orient("left"),j.orient("right");var y=function(b,d){var e=b.pos[0]+(d.offsetLeft||0),g=b.pos[1]+(d.offsetTop||0),k=h.tickFormat()(f.x()(b.point,b.pointIndex)),l=(b.series.bar?i:j).tickFormat()(f.y()(b.point,b.pointIndex)),m=t(b.series.key,k,l,b,a);c.tooltip.show([e,g],m,b.value<0?"n":"s",null,d)};return f.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+l.left,a.pos[1]+l.top],x.tooltipShow(a)}),f.dispatch.on("elementMouseout.tooltip",function(a){x.tooltipHide(a)}),g.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+l.left,a.pos[1]+l.top],x.tooltipShow(a)}),g.dispatch.on("elementMouseout.tooltip",function(a){x.tooltipHide(a)}),x.on("tooltipHide",function(){s&&c.tooltip.cleanup()}),a.dispatch=x,a.legend=k,a.lines=f,a.bars=g,a.xAxis=h,a.y1Axis=i,a.y2Axis=j,d3.rebind(a,f,"defined","size","clipVoronoi","interpolate"),a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(o=b,f.x(b),g.x(b),a):o},a.y=function(b){return arguments.length?(p=b,f.y(b),g.y(b),a):p},a.margin=function(b){return arguments.length?(l.top="undefined"!=typeof b.top?b.top:l.top,l.right="undefined"!=typeof b.right?b.right:l.right,l.bottom="undefined"!=typeof b.bottom?b.bottom:l.bottom,l.left="undefined"!=typeof b.left?b.left:l.left,a):l},a.width=function(b){return arguments.length?(m=b,a):m},a.height=function(b){return arguments.length?(n=b,a):n},a.color=function(b){return arguments.length?(q=c.utils.getColor(b),k.color(q),a):q},a.showLegend=function(b){return arguments.length?(r=b,a):r},a.tooltips=function(b){return arguments.length?(s=b,a):s},a.tooltipContent=function(b){return arguments.length?(t=b,a):t},a.state=function(b){return arguments.length?(u=b,a):u},a.defaultState=function(b){return arguments.length?(v=b,a):v},a.noData=function(b){return arguments.length?(w=b,a):w},a},c.models.lineWithFocusChart=function(){"use strict";function a(c){return c.each(function(c){function x(a){var b=+("e"==a),c=b?1:-1,d=I/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function C(){n.empty()||n.extent(v),Q.data([n.empty()?e.domain():v]).each(function(a,c){var d=e(a[0])-b.range()[0],f=b.range()[1]-e(a[1]);d3.select(this).select(".left").attr("width",0>d?0:d),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>f?0:f)})}function D(){v=n.empty()?null:n.extent();var a=n.empty()?e.domain():n.extent();if(!(Math.abs(a[0]-a[1])<=1)){z.brush({extent:a,brush:n}),C();var b=M.select(".nv-focus .nv-linesWrap").datum(c.filter(function(a){return!a.disabled}).map(function(b,c){return{key:b.key,values:b.values.filter(function(b,c){return g.x()(b,c)>=a[0]&&g.x()(b,c)<=a[1]})}}));b.transition().duration(A).call(g),M.select(".nv-focus .nv-x.nv-axis").transition().duration(A).call(i),M.select(".nv-focus .nv-y.nv-axis").transition().duration(A).call(j)}}var E=d3.select(this),F=this,G=(r||parseInt(E.style("width"))||960)-o.left-o.right,H=(s||parseInt(E.style("height"))||400)-o.top-o.bottom-t,I=t-p.top-p.bottom;if(a.update=function(){E.transition().duration(A).call(a)},a.container=this,!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var J=E.selectAll(".nv-noData").data([y]);return J.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),J.attr("x",o.left+G/2).attr("y",o.top+H/2).text(function(a){return a}),a}E.selectAll(".nv-noData").remove(),b=g.xScale(),d=g.yScale(),e=h.xScale(),f=h.yScale();var K=E.selectAll("g.nv-wrap.nv-lineWithFocusChart").data([c]),L=K.enter().append("g").attr("class","nvd3 nv-wrap nv-lineWithFocusChart").append("g"),M=K.select("g");L.append("g").attr("class","nv-legendWrap");var N=L.append("g").attr("class","nv-focus");N.append("g").attr("class","nv-x nv-axis"),N.append("g").attr("class","nv-y nv-axis"),N.append("g").attr("class","nv-linesWrap");var O=L.append("g").attr("class","nv-context");O.append("g").attr("class","nv-x nv-axis"),O.append("g").attr("class","nv-y nv-axis"),O.append("g").attr("class","nv-linesWrap"),O.append("g").attr("class","nv-brushBackground"),O.append("g").attr("class","nv-x nv-brush"),u&&(m.width(G),M.select(".nv-legendWrap").datum(c).call(m),o.top!=m.height()&&(o.top=m.height(),H=(s||parseInt(E.style("height"))||400)-o.top-o.bottom-t),M.select(".nv-legendWrap").attr("transform","translate(0,"+-o.top+")")),K.attr("transform","translate("+o.left+","+o.top+")"),g.width(G).height(H).color(c.map(function(a,b){return a.color||q(a,b)}).filter(function(a,b){return!c[b].disabled})),h.defined(g.defined()).width(G).height(I).color(c.map(function(a,b){return a.color||q(a,b)}).filter(function(a,b){return!c[b].disabled})),M.select(".nv-context").attr("transform","translate(0,"+(H+o.bottom+p.top)+")");var P=M.select(".nv-context .nv-linesWrap").datum(c.filter(function(a){return!a.disabled}));d3.transition(P).call(h),i.scale(b).ticks(G/100).tickSize(-H,0),j.scale(d).ticks(H/36).tickSize(-G,0),M.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+H+")"),n.x(e).on("brush",function(){var b=a.transitionDuration();a.transitionDuration(0),D(),a.transitionDuration(b)}),v&&n.extent(v);var Q=M.select(".nv-brushBackground").selectAll("g").data([v||n.extent()]),R=Q.enter().append("g");R.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",I),R.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",I);var S=M.select(".nv-x.nv-brush").call(n);S.selectAll("rect").attr("height",I),S.selectAll(".resize").append("path").attr("d",x),D(),k.scale(e).ticks(G/100).tickSize(-I,0),M.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),d3.transition(M.select(".nv-context .nv-x.nv-axis")).call(k),l.scale(f).ticks(I/36).tickSize(-G,0),d3.transition(M.select(".nv-context .nv-y.nv-axis")).call(l),M.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),m.dispatch.on("stateChange",function(b){a.update()}),z.on("tooltipShow",function(a){w&&B(a,F.parentNode)})}),a}var b,d,e,f,g=c.models.line(),h=c.models.line(),i=c.models.axis(),j=c.models.axis(),k=c.models.axis(),l=c.models.axis(),m=c.models.legend(),n=d3.svg.brush(),o={top:30,right:30,bottom:30,left:60},p={top:0,right:30,bottom:20,left:60},q=c.utils.defaultColor(),r=null,s=null,t=100,u=!0,v=null,w=!0,x=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},y="No Data Available.",z=d3.dispatch("tooltipShow","tooltipHide","brush"),A=250;g.clipEdge(!0),h.interactive(!1),i.orient("bottom").tickPadding(5),j.orient("left"),k.orient("bottom").tickPadding(5),l.orient("left");var B=function(b,d){var e=b.pos[0]+(d.offsetLeft||0),f=b.pos[1]+(d.offsetTop||0),h=i.tickFormat()(g.x()(b.point,b.pointIndex)),k=j.tickFormat()(g.y()(b.point,b.pointIndex)),l=x(b.series.key,h,k,b,a);c.tooltip.show([e,f],l,null,null,d)};return g.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+o.left,a.pos[1]+o.top],z.tooltipShow(a)}),g.dispatch.on("elementMouseout.tooltip",function(a){z.tooltipHide(a)}),z.on("tooltipHide",function(){w&&c.tooltip.cleanup()}),a.dispatch=z,a.legend=m,a.lines=g,a.lines2=h,a.xAxis=i,a.yAxis=j,a.x2Axis=k,a.y2Axis=l,d3.rebind(a,g,"defined","isArea","size","xDomain","yDomain","xRange","yRange","forceX","forceY","interactive","clipEdge","clipVoronoi","id"),a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(g.x(b),h.x(b),a):g.x},a.y=function(b){return arguments.length?(g.y(b),h.y(b),a):g.y},a.margin=function(b){return arguments.length?(o.top="undefined"!=typeof b.top?b.top:o.top,o.right="undefined"!=typeof b.right?b.right:o.right,o.bottom="undefined"!=typeof b.bottom?b.bottom:o.bottom,o.left="undefined"!=typeof b.left?b.left:o.left,a):o},a.margin2=function(b){return arguments.length?(p=b,a):p},a.width=function(b){return arguments.length?(r=b,a):r},a.height=function(b){return arguments.length?(s=b,a):s},a.height2=function(b){return arguments.length?(t=b,a):t},a.color=function(b){return arguments.length?(q=c.utils.getColor(b),m.color(q),a):q},a.showLegend=function(b){return arguments.length?(u=b,a):u},a.tooltips=function(b){return arguments.length?(w=b,a):w},a.tooltipContent=function(b){return arguments.length?(x=b,a):x},a.interpolate=function(b){return arguments.length?(g.interpolate(b),h.interpolate(b),a):g.interpolate()},a.noData=function(b){return arguments.length?(y=b,a):y},a.xTickFormat=function(b){return arguments.length?(i.tickFormat(b),k.tickFormat(b),a):i.tickFormat()},a.yTickFormat=function(b){return arguments.length?(j.tickFormat(b),l.tickFormat(b),a):j.tickFormat()},a.brushExtent=function(b){return arguments.length?(v=b,a):v},a.transitionDuration=function(b){return arguments.length?(A=b,a):A},a},c.models.linePlusBarWithFocusChart=function(){"use strict";function a(c){return c.each(function(c){function G(a){var b=+("e"==a),c=b?1:-1,d=R/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function L(){u.empty()||u.extent(E),ca.data([u.empty()?e.domain():E]).each(function(a,b){var c=e(a[0])-e.range()[0],d=e.range()[1]-e(a[1]);d3.select(this).select(".left").attr("width",0>c?0:c),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>d?0:d)})}function M(){E=u.empty()?null:u.extent(),b=u.empty()?e.domain():u.extent(),I.brush({extent:b,brush:u}),L(),l.width(P).height(Q).color(c.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!c[b].disabled&&c[b].bar})),j.width(P).height(Q).color(c.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!c[b].disabled&&!c[b].bar}));var a=Z.select(".nv-focus .nv-barsWrap").datum(T.length?T.map(function(a,c){return{key:a.key,values:a.values.filter(function(a,c){return l.x()(a,c)>=b[0]&&l.x()(a,c)<=b[1]})}}):[{values:[]}]),h=Z.select(".nv-focus .nv-linesWrap").datum(U[0].disabled?[{values:[]}]:U.map(function(a,c){return{key:a.key,values:a.values.filter(function(a,c){return j.x()(a,c)>=b[0]&&j.x()(a,c)<=b[1]})}}));d=T.length?l.xScale():j.xScale(),n.scale(d).ticks(P/100).tickSize(-Q,0),n.domain([Math.ceil(b[0]),Math.floor(b[1])]),Z.select(".nv-x.nv-axis").transition().duration(J).call(n),a.transition().duration(J).call(l),h.transition().duration(J).call(j),Z.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),p.scale(f).ticks(Q/36).tickSize(-P,0),Z.select(".nv-focus .nv-y1.nv-axis").style("opacity",T.length?1:0),q.scale(g).ticks(Q/36).tickSize(T.length?0:-P,0),Z.select(".nv-focus .nv-y2.nv-axis").style("opacity",U.length?1:0).attr("transform","translate("+d.range()[1]+",0)"),Z.select(".nv-focus .nv-y1.nv-axis").transition().duration(J).call(p),Z.select(".nv-focus .nv-y2.nv-axis").transition().duration(J).call(q)}var N=d3.select(this),O=this,P=(x||parseInt(N.style("width"))||960)-v.left-v.right,Q=(y||parseInt(N.style("height"))||400)-v.top-v.bottom-z,R=z-w.top-w.bottom;if(a.update=function(){N.transition().duration(J).call(a)},a.container=this,!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var S=N.selectAll(".nv-noData").data([H]);return S.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),S.attr("x",v.left+P/2).attr("y",v.top+Q/2).text(function(a){return a}),a}N.selectAll(".nv-noData").remove();var T=c.filter(function(a){return!a.disabled&&a.bar}),U=c.filter(function(a){return!a.bar});d=l.xScale(),e=o.scale(),f=l.yScale(),g=j.yScale(),h=m.yScale(),i=k.yScale();var V=c.filter(function(a){return!a.disabled&&a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})}),W=c.filter(function(a){return!a.disabled&&!a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})});d.range([0,P]),e.domain(d3.extent(d3.merge(V.concat(W)),function(a){return a.x})).range([0,P]);var X=N.selectAll("g.nv-wrap.nv-linePlusBar").data([c]),Y=X.enter().append("g").attr("class","nvd3 nv-wrap nv-linePlusBar").append("g"),Z=X.select("g");Y.append("g").attr("class","nv-legendWrap");var $=Y.append("g").attr("class","nv-focus");$.append("g").attr("class","nv-x nv-axis"),$.append("g").attr("class","nv-y1 nv-axis"),$.append("g").attr("class","nv-y2 nv-axis"),$.append("g").attr("class","nv-barsWrap"),$.append("g").attr("class","nv-linesWrap");var _=Y.append("g").attr("class","nv-context");_.append("g").attr("class","nv-x nv-axis"),_.append("g").attr("class","nv-y1 nv-axis"),_.append("g").attr("class","nv-y2 nv-axis"),_.append("g").attr("class","nv-barsWrap"),_.append("g").attr("class","nv-linesWrap"),_.append("g").attr("class","nv-brushBackground"),_.append("g").attr("class","nv-x nv-brush"),D&&(t.width(P/2),Z.select(".nv-legendWrap").datum(c.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(a.bar?" (left axis)":" (right axis)"),a})).call(t),v.top!=t.height()&&(v.top=t.height(),Q=(y||parseInt(N.style("height"))||400)-v.top-v.bottom-z),Z.select(".nv-legendWrap").attr("transform","translate("+P/2+","+-v.top+")")),X.attr("transform","translate("+v.left+","+v.top+")"),m.width(P).height(R).color(c.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!c[b].disabled&&c[b].bar})),k.width(P).height(R).color(c.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!c[b].disabled&&!c[b].bar}));var aa=Z.select(".nv-context .nv-barsWrap").datum(T.length?T:[{values:[]}]),ba=Z.select(".nv-context .nv-linesWrap").datum(U[0].disabled?[{values:[]}]:U);Z.select(".nv-context").attr("transform","translate(0,"+(Q+v.bottom+w.top)+")"),aa.transition().call(m),ba.transition().call(k),u.x(e).on("brush",M),E&&u.extent(E);var ca=Z.select(".nv-brushBackground").selectAll("g").data([E||u.extent()]),da=ca.enter().append("g");da.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",R),da.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",R);var ea=Z.select(".nv-x.nv-brush").call(u);ea.selectAll("rect").attr("height",R),ea.selectAll(".resize").append("path").attr("d",G),o.ticks(P/100).tickSize(-R,0),Z.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+h.range()[0]+")"),Z.select(".nv-context .nv-x.nv-axis").transition().call(o),r.scale(h).ticks(R/36).tickSize(-P,0),Z.select(".nv-context .nv-y1.nv-axis").style("opacity",T.length?1:0).attr("transform","translate(0,"+e.range()[0]+")"),Z.select(".nv-context .nv-y1.nv-axis").transition().call(r),s.scale(i).ticks(R/36).tickSize(T.length?0:-P,0),Z.select(".nv-context .nv-y2.nv-axis").style("opacity",U.length?1:0).attr("transform","translate("+e.range()[1]+",0)"),Z.select(".nv-context .nv-y2.nv-axis").transition().call(s),t.dispatch.on("stateChange",function(b){a.update()}),I.on("tooltipShow",function(a){F&&K(a,O.parentNode)}),M()}),a}var b,d,e,f,g,h,i,j=c.models.line(),k=c.models.line(),l=c.models.historicalBar(),m=c.models.historicalBar(),n=c.models.axis(),o=c.models.axis(),p=c.models.axis(),q=c.models.axis(),r=c.models.axis(),s=c.models.axis(),t=c.models.legend(),u=d3.svg.brush(),v={top:30,right:30,bottom:30,left:60},w={top:0,right:30,bottom:20,left:60},x=null,y=null,z=100,A=function(a){return a.x},B=function(a){return a.y},C=c.utils.defaultColor(),D=!0,E=null,F=!0,G=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},H="No Data Available.",I=d3.dispatch("tooltipShow","tooltipHide","brush"),J=0;j.clipEdge(!0),k.interactive(!1),n.orient("bottom").tickPadding(5),p.orient("left"),q.orient("right"),o.orient("bottom").tickPadding(5),r.orient("left"),s.orient("right");var K=function(d,e){b&&(d.pointIndex+=Math.ceil(b[0]));var f=d.pos[0]+(e.offsetLeft||0),g=d.pos[1]+(e.offsetTop||0),h=n.tickFormat()(j.x()(d.point,d.pointIndex)),i=(d.series.bar?p:q).tickFormat()(j.y()(d.point,d.pointIndex)),k=G(d.series.key,h,i,d,a);c.tooltip.show([f,g],k,d.value<0?"n":"s",null,e)};return j.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+v.left,a.pos[1]+v.top],I.tooltipShow(a)}),j.dispatch.on("elementMouseout.tooltip",function(a){I.tooltipHide(a)}),l.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+v.left,a.pos[1]+v.top],I.tooltipShow(a)}),l.dispatch.on("elementMouseout.tooltip",function(a){I.tooltipHide(a)}),I.on("tooltipHide",function(){F&&c.tooltip.cleanup()}),a.dispatch=I,a.legend=t,a.lines=j,a.lines2=k,a.bars=l,a.bars2=m,a.xAxis=n,a.x2Axis=o,a.y1Axis=p,a.y2Axis=q,a.y3Axis=r,a.y4Axis=s,d3.rebind(a,j,"defined","size","clipVoronoi","interpolate"),a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(A=b,j.x(b),l.x(b),a):A},a.y=function(b){return arguments.length?(B=b,j.y(b),l.y(b),a):B},a.margin=function(b){return arguments.length?(v.top="undefined"!=typeof b.top?b.top:v.top,v.right="undefined"!=typeof b.right?b.right:v.right,v.bottom="undefined"!=typeof b.bottom?b.bottom:v.bottom,v.left="undefined"!=typeof b.left?b.left:v.left,a):v},a.width=function(b){return arguments.length?(x=b,a):x},a.height=function(b){return arguments.length?(y=b,a):y},a.color=function(b){return arguments.length?(C=c.utils.getColor(b),t.color(C),a):C},a.showLegend=function(b){return arguments.length?(D=b,a):D},a.tooltips=function(b){return arguments.length?(F=b,a):F},a.tooltipContent=function(b){return arguments.length?(G=b,a):G},a.noData=function(b){return arguments.length?(H=b,a):H},a.brushExtent=function(b){return arguments.length?(E=b,a):E},a},c.models.multiBar=function(){"use strict";function a(c){return c.each(function(a){var c=k-j.left-j.right,B=l-j.top-j.bottom,C=d3.select(this);w&&a.length&&(w=[{values:a[0].values.map(function(a){return{x:a.x,y:0,series:a.series,size:.01}})}]),t&&(a=d3.layout.stack().offset(u).values(function(a){return a.values}).y(q)(!a.length&&w?w:a)),a.forEach(function(a,b){a.values.forEach(function(a){a.series=b})}),t&&a[0].values.map(function(b,c){var d=0,e=0;a.map(function(a){var b=a.values[c];b.size=Math.abs(b.y),b.y<0?(b.y1=e,e-=b.size):(b.y1=b.size+d,d+=b.size)})});var D=d&&e?[]:a.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),y0:a.y0,y1:a.y1}})});m.domain(d||d3.merge(D).map(function(a){return a.x})).rangeBands(f||[0,c],z),n.domain(e||d3.extent(d3.merge(D).map(function(a){return t?a.y>0?a.y1:a.y1+a.y:a.y}).concat(r))).range(g||[B,0]),m.domain()[0]===m.domain()[1]&&(m.domain()[0]?m.domain([m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]):m.domain([-1,1])),n.domain()[0]===n.domain()[1]&&(n.domain()[0]?n.domain([n.domain()[0]+.01*n.domain()[0],n.domain()[1]-.01*n.domain()[1]]):n.domain([-1,1])),h=h||m,i=i||n;var E=C.selectAll("g.nv-wrap.nv-multibar").data([a]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-multibar"),G=F.append("defs"),H=F.append("g"),I=E.select("g");H.append("g").attr("class","nv-groups"),E.attr("transform","translate("+j.left+","+j.top+")"),G.append("clipPath").attr("id","nv-edge-clip-"+o).append("rect"),E.select("#nv-edge-clip-"+o+" rect").attr("width",c).attr("height",B),
+I.attr("clip-path",s?"url(#nv-edge-clip-"+o+")":"");var J=E.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});J.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),J.exit().transition().selectAll("rect.nv-bar").delay(function(b,c){return c*y/a[0].values.length}).attr("y",function(a){return i(t?a.y0:0)}).attr("height",0).remove(),J.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return v(a,b)}).style("stroke",function(a,b){return v(a,b)}),J.transition().style("stroke-opacity",1).style("fill-opacity",.75);var K=J.selectAll("rect.nv-bar").data(function(b){return w&&!a.length?w.values:b.values});K.exit().remove();K.enter().append("rect").attr("class",function(a,b){return q(a,b)<0?"nv-bar negative":"nv-bar positive"}).attr("x",function(b,c,d){return t?0:d*m.rangeBand()/a.length}).attr("y",function(a){return i(t?a.y0:0)}).attr("height",0).attr("width",m.rangeBand()/(t?1:a.length)).attr("transform",function(a,b){return"translate("+m(p(a,b))+",0)"});K.style("fill",function(a,b,c){return v(a,c,b)}).style("stroke",function(a,b,c){return v(a,c,b)}).on("mouseover",function(b,c){d3.select(this).classed("hover",!0),A.elementMouseover({value:q(b,c),point:b,series:a[b.series],pos:[m(p(b,c))+m.rangeBand()*(t?a.length/2:b.series+.5)/a.length,n(q(b,c)+(t?b.y0:0))],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("mouseout",function(b,c){d3.select(this).classed("hover",!1),A.elementMouseout({value:q(b,c),point:b,series:a[b.series],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("click",function(b,c){A.elementClick({value:q(b,c),point:b,series:a[b.series],pos:[m(p(b,c))+m.rangeBand()*(t?a.length/2:b.series+.5)/a.length,n(q(b,c)+(t?b.y0:0))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()}).on("dblclick",function(b,c){A.elementDblClick({value:q(b,c),point:b,series:a[b.series],pos:[m(p(b,c))+m.rangeBand()*(t?a.length/2:b.series+.5)/a.length,n(q(b,c)+(t?b.y0:0))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()}),K.attr("class",function(a,b){return q(a,b)<0?"nv-bar negative":"nv-bar positive"}).transition().attr("transform",function(a,b){return"translate("+m(p(a,b))+",0)"}),x&&(b||(b=a.map(function(){return!0})),K.style("fill",function(a,c,d){return d3.rgb(x(a,c)).darker(b.map(function(a,b){return b}).filter(function(a,c){return!b[c]})[d]).toString()}).style("stroke",function(a,c,d){return d3.rgb(x(a,c)).darker(b.map(function(a,b){return b}).filter(function(a,c){return!b[c]})[d]).toString()})),t?K.transition().delay(function(b,c){return c*y/a[0].values.length}).attr("y",function(a,b){return n(t?a.y1:0)}).attr("height",function(a,b){return Math.max(Math.abs(n(a.y+(t?a.y0:0))-n(t?a.y0:0)),1)}).attr("x",function(b,c){return t?0:b.series*m.rangeBand()/a.length}).attr("width",m.rangeBand()/(t?1:a.length)):K.transition().delay(function(b,c){return c*y/a[0].values.length}).attr("x",function(b,c){return b.series*m.rangeBand()/a.length}).attr("width",m.rangeBand()/a.length).attr("y",function(a,b){return q(a,b)<0?n(0):n(0)-n(q(a,b))<1?n(0)-1:n(q(a,b))||0}).attr("height",function(a,b){return Math.max(Math.abs(n(q(a,b))-n(0)),1)||0}),h=m.copy(),i=n.copy()}),a}var b,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=d3.scale.ordinal(),n=d3.scale.linear(),o=Math.floor(1e4*Math.random()),p=function(a){return a.x},q=function(a){return a.y},r=[0],s=!0,t=!1,u="zero",v=c.utils.defaultColor(),w=!1,x=null,y=1200,z=.1,A=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout");return a.dispatch=A,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(p=b,a):p},a.y=function(b){return arguments.length?(q=b,a):q},a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.xScale=function(b){return arguments.length?(m=b,a):m},a.yScale=function(b){return arguments.length?(n=b,a):n},a.xDomain=function(b){return arguments.length?(d=b,a):d},a.yDomain=function(b){return arguments.length?(e=b,a):e},a.xRange=function(b){return arguments.length?(f=b,a):f},a.yRange=function(b){return arguments.length?(g=b,a):g},a.forceY=function(b){return arguments.length?(r=b,a):r},a.stacked=function(b){return arguments.length?(t=b,a):t},a.stackOffset=function(b){return arguments.length?(u=b,a):u},a.clipEdge=function(b){return arguments.length?(s=b,a):s},a.color=function(b){return arguments.length?(v=c.utils.getColor(b),a):v},a.barColor=function(b){return arguments.length?(x=c.utils.getColor(b),a):x},a.disabled=function(c){return arguments.length?(b=c,a):b},a.id=function(b){return arguments.length?(o=b,a):o},a.hideable=function(b){return arguments.length?(w=b,a):w},a.delay=function(b){return arguments.length?(y=b,a):y},a.groupSpacing=function(b){return arguments.length?(z=b,a):z},a},c.models.multiBarChart=function(){"use strict";function a(c){return c.each(function(c){var w=d3.select(this),E=this,F=(k||parseInt(w.style("width"))||960)-j.left-j.right,G=(l||parseInt(w.style("height"))||400)-j.top-j.bottom;if(a.update=function(){w.transition().duration(C).call(a)},a.container=this,x.disabled=c.map(function(a){return!!a.disabled}),!y){var H;y={};for(H in x)x[H]instanceof Array?y[H]=x[H].slice(0):y[H]=x[H]}if(!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var I=w.selectAll(".nv-noData").data([z]);return I.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),I.attr("x",j.left+F/2).attr("y",j.top+G/2).text(function(a){return a}),a}w.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale();var J=w.selectAll("g.nv-wrap.nv-multiBarWithLegend").data([c]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarWithLegend").append("g"),L=J.select("g");if(K.append("g").attr("class","nv-x nv-axis"),K.append("g").attr("class","nv-y nv-axis"),K.append("g").attr("class","nv-barsWrap"),K.append("g").attr("class","nv-legendWrap"),K.append("g").attr("class","nv-controlsWrap"),o&&(h.width(F-B()),e.barColor()&&c.forEach(function(a,b){a.color=d3.rgb("#ccc").darker(1.5*b).toString()}),L.select(".nv-legendWrap").datum(c).call(h),j.top!=h.height()&&(j.top=h.height(),G=(l||parseInt(w.style("height"))||400)-j.top-j.bottom),L.select(".nv-legendWrap").attr("transform","translate("+B()+","+-j.top+")")),n){var M=[{key:"Grouped",disabled:e.stacked()},{key:"Stacked",disabled:!e.stacked()}];i.width(B()).color(["#444","#444","#444"]),L.select(".nv-controlsWrap").datum(M).attr("transform","translate(0,"+-j.top+")").call(i)}J.attr("transform","translate("+j.left+","+j.top+")"),r&&L.select(".nv-y.nv-axis").attr("transform","translate("+F+",0)"),e.disabled(c.map(function(a){return a.disabled})).width(F).height(G).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled}));var N=L.select(".nv-barsWrap").datum(c.filter(function(a){return!a.disabled}));if(N.transition().call(e),p){f.scale(b).ticks(F/100).tickSize(-G,0),L.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),L.select(".nv-x.nv-axis").transition().call(f);var O=L.select(".nv-x.nv-axis > g").selectAll("g");if(O.selectAll("line, text").style("opacity",1),t){var P=function(a,b){return"translate("+a+","+b+")"},Q=5,R=17;O.selectAll("text").attr("transform",function(a,b,c){return P(0,c%2==0?Q:R)});var S=d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;L.selectAll(".nv-x.nv-axis .nv-axisMaxMin text").attr("transform",function(a,b){return P(0,0===b||S%2!==0?R:Q)})}s&&O.filter(function(a,b){return b%Math.ceil(c[0].values.length/(F/100))!==0}).selectAll("text, line").style("opacity",0),u&&O.selectAll(".tick text").attr("transform","rotate("+u+" 0,0)").style("text-anchor",u>0?"start":"end"),L.select(".nv-x.nv-axis").selectAll("g.nv-axisMaxMin text").style("opacity",1)}q&&(g.scale(d).ticks(G/36).tickSize(-F,0),L.select(".nv-y.nv-axis").transition().call(g)),h.dispatch.on("stateChange",function(b){x=b,A.stateChange(x),a.update()}),i.dispatch.on("legendClick",function(b,c){if(b.disabled){switch(M=M.map(function(a){return a.disabled=!0,a}),b.disabled=!1,b.key){case"Grouped":e.stacked(!1);break;case"Stacked":e.stacked(!0)}x.stacked=e.stacked(),A.stateChange(x),a.update()}}),A.on("tooltipShow",function(a){v&&D(a,E.parentNode)}),A.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),x.disabled=b.disabled),"undefined"!=typeof b.stacked&&(e.stacked(b.stacked),x.stacked=b.stacked),a.update()})}),a}var b,d,e=c.models.multiBar(),f=c.models.axis(),g=c.models.axis(),h=c.models.legend(),i=c.models.legend(),j={top:30,right:20,bottom:50,left:60},k=null,l=null,m=c.utils.defaultColor(),n=!0,o=!0,p=!0,q=!0,r=!1,s=!0,t=!1,u=0,v=!0,w=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" on "+b+"</p>"},x={stacked:!1},y=null,z="No Data Available.",A=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),B=function(){return n?180:0},C=250;e.stacked(!1),f.orient("bottom").tickPadding(7).highlightZero(!0).showMaxMin(!1).tickFormat(function(a){return a}),g.orient(r?"right":"left").tickFormat(d3.format(",.1f")),i.updateState(!1);var D=function(b,d){var h=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=f.tickFormat()(e.x()(b.point,b.pointIndex)),k=g.tickFormat()(e.y()(b.point,b.pointIndex)),l=w(b.series.key,j,k,b,a);c.tooltip.show([h,i],l,b.value<0?"n":"s",null,d)};return e.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+j.left,a.pos[1]+j.top],A.tooltipShow(a)}),e.dispatch.on("elementMouseout.tooltip",function(a){A.tooltipHide(a)}),A.on("tooltipHide",function(){v&&c.tooltip.cleanup()}),a.dispatch=A,a.multibar=e,a.legend=h,a.xAxis=f,a.yAxis=g,d3.rebind(a,e,"x","y","xDomain","yDomain","xRange","yRange","forceX","forceY","clipEdge","id","stacked","stackOffset","delay","barColor","groupSpacing"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.color=function(b){return arguments.length?(m=c.utils.getColor(b),h.color(m),a):m},a.showControls=function(b){return arguments.length?(n=b,a):n},a.showLegend=function(b){return arguments.length?(o=b,a):o},a.showXAxis=function(b){return arguments.length?(p=b,a):p},a.showYAxis=function(b){return arguments.length?(q=b,a):q},a.rightAlignYAxis=function(b){return arguments.length?(r=b,g.orient(b?"right":"left"),a):r},a.reduceXTicks=function(b){return arguments.length?(s=b,a):s},a.rotateLabels=function(b){return arguments.length?(u=b,a):u},a.staggerLabels=function(b){return arguments.length?(t=b,a):t},a.tooltip=function(b){return arguments.length?(w=b,a):w},a.tooltips=function(b){return arguments.length?(v=b,a):v},a.tooltipContent=function(b){return arguments.length?(w=b,a):w},a.state=function(b){return arguments.length?(x=b,a):x},a.defaultState=function(b){return arguments.length?(y=b,a):y},a.noData=function(b){return arguments.length?(z=b,a):z},a.transitionDuration=function(b){return arguments.length?(C=b,a):C},a},c.models.multiBarHorizontal=function(){"use strict";function a(c){return c.each(function(a){var c=k-j.left-j.right,m=l-j.top-j.bottom;d3.select(this);u&&(a=d3.layout.stack().offset("zero").values(function(a){return a.values}).y(q)(a)),a.forEach(function(a,b){a.values.forEach(function(a){a.series=b})}),u&&a[0].values.map(function(b,c){var d=0,e=0;a.map(function(a){var b=a.values[c];b.size=Math.abs(b.y),b.y<0?(b.y1=e-b.size,e-=b.size):(b.y1=d,d+=b.size)})});var z=d&&e?[]:a.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),y0:a.y0,y1:a.y1}})});n.domain(d||d3.merge(z).map(function(a){return a.x})).rangeBands(f||[0,m],.1),o.domain(e||d3.extent(d3.merge(z).map(function(a){return u?a.y>0?a.y1+a.y:a.y1:a.y}).concat(r))),v&&!u?o.range(g||[o.domain()[0]<0?x:0,c-(o.domain()[1]>0?x:0)]):o.range(g||[0,c]),h=h||n,i=i||d3.scale.linear().domain(o.domain()).range([o(0),o(0)]);var B=d3.select(this).selectAll("g.nv-wrap.nv-multibarHorizontal").data([a]),C=B.enter().append("g").attr("class","nvd3 nv-wrap nv-multibarHorizontal"),D=(C.append("defs"),C.append("g"));B.select("g");D.append("g").attr("class","nv-groups"),B.attr("transform","translate("+j.left+","+j.top+")");var E=B.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});E.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),E.exit().transition().style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),E.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return s(a,b)}).style("stroke",function(a,b){return s(a,b)}),E.transition().style("stroke-opacity",1).style("fill-opacity",.75);var F=E.selectAll("g.nv-bar").data(function(a){return a.values});F.exit().remove();var G=F.enter().append("g").attr("transform",function(b,c,d){return"translate("+i(u?b.y0:0)+","+(u?0:d*n.rangeBand()/a.length+n(p(b,c)))+")"});G.append("rect").attr("width",0).attr("height",n.rangeBand()/(u?1:a.length)),F.on("mouseover",function(b,c){d3.select(this).classed("hover",!0),A.elementMouseover({value:q(b,c),point:b,series:a[b.series],pos:[o(q(b,c)+(u?b.y0:0)),n(p(b,c))+n.rangeBand()*(u?a.length/2:b.series+.5)/a.length],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("mouseout",function(b,c){d3.select(this).classed("hover",!1),A.elementMouseout({value:q(b,c),point:b,series:a[b.series],pointIndex:c,seriesIndex:b.series,e:d3.event})}).on("click",function(b,c){A.elementClick({value:q(b,c),point:b,series:a[b.series],pos:[n(p(b,c))+n.rangeBand()*(u?a.length/2:b.series+.5)/a.length,o(q(b,c)+(u?b.y0:0))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()}).on("dblclick",function(b,c){A.elementDblClick({value:q(b,c),point:b,series:a[b.series],pos:[n(p(b,c))+n.rangeBand()*(u?a.length/2:b.series+.5)/a.length,o(q(b,c)+(u?b.y0:0))],pointIndex:c,seriesIndex:b.series,e:d3.event}),d3.event.stopPropagation()}),G.append("text"),v&&!u?(F.select("text").attr("text-anchor",function(a,b){return q(a,b)<0?"end":"start"}).attr("y",n.rangeBand()/(2*a.length)).attr("dy",".32em").text(function(a,b){return y(q(a,b))}),F.transition().select("text").attr("x",function(a,b){return q(a,b)<0?-4:o(q(a,b))-o(0)+4})):F.selectAll("text").text(""),w&&!u?(G.append("text").classed("nv-bar-label",!0),F.select("text.nv-bar-label").attr("text-anchor",function(a,b){return q(a,b)<0?"start":"end"}).attr("y",n.rangeBand()/(2*a.length)).attr("dy",".32em").text(function(a,b){return p(a,b)}),F.transition().select("text.nv-bar-label").attr("x",function(a,b){return q(a,b)<0?o(0)-o(q(a,b))+4:-4})):F.selectAll("text.nv-bar-label").text(""),F.attr("class",function(a,b){return q(a,b)<0?"nv-bar negative":"nv-bar positive"}),t&&(b||(b=a.map(function(){return!0})),F.style("fill",function(a,c,d){return d3.rgb(t(a,c)).darker(b.map(function(a,b){return b}).filter(function(a,c){return!b[c]})[d]).toString()}).style("stroke",function(a,c,d){return d3.rgb(t(a,c)).darker(b.map(function(a,b){return b}).filter(function(a,c){return!b[c]})[d]).toString()})),u?F.transition().attr("transform",function(a,b){return"translate("+o(a.y1)+","+n(p(a,b))+")"}).select("rect").attr("width",function(a,b){return Math.abs(o(q(a,b)+a.y0)-o(a.y0))}).attr("height",n.rangeBand()):F.transition().attr("transform",function(b,c){return"translate("+o(q(b,c)<0?q(b,c):0)+","+(b.series*n.rangeBand()/a.length+n(p(b,c)))+")"}).select("rect").attr("height",n.rangeBand()/a.length).attr("width",function(a,b){return Math.max(Math.abs(o(q(a,b))-o(0)),1)}),h=n.copy(),i=o.copy()}),a}var b,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=Math.floor(1e4*Math.random()),n=d3.scale.ordinal(),o=d3.scale.linear(),p=function(a){return a.x},q=function(a){return a.y},r=[0],s=c.utils.defaultColor(),t=null,u=!1,v=!1,w=!1,x=60,y=d3.format(",.2f"),z=1200,A=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout");return a.dispatch=A,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(p=b,a):p},a.y=function(b){return arguments.length?(q=b,a):q},a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.xScale=function(b){return arguments.length?(n=b,a):n},a.yScale=function(b){return arguments.length?(o=b,a):o},a.xDomain=function(b){return arguments.length?(d=b,a):d},a.yDomain=function(b){return arguments.length?(e=b,a):e},a.xRange=function(b){return arguments.length?(f=b,a):f},a.yRange=function(b){return arguments.length?(g=b,a):g},a.forceY=function(b){return arguments.length?(r=b,a):r},a.stacked=function(b){return arguments.length?(u=b,a):u},a.color=function(b){return arguments.length?(s=c.utils.getColor(b),a):s},a.barColor=function(b){return arguments.length?(t=c.utils.getColor(b),a):t},a.disabled=function(c){return arguments.length?(b=c,a):b},a.id=function(b){return arguments.length?(m=b,a):m},a.delay=function(b){return arguments.length?(z=b,a):z},a.showValues=function(b){return arguments.length?(v=b,a):v},a.showBarLabels=function(b){return arguments.length?(w=b,a):w},a.valueFormat=function(b){return arguments.length?(y=b,a):y},a.valuePadding=function(b){return arguments.length?(x=b,a):x},a},c.models.multiBarHorizontalChart=function(){"use strict";function a(c){return c.each(function(c){var r=d3.select(this),t=this,B=(k||parseInt(r.style("width"))||960)-j.left-j.right,C=(l||parseInt(r.style("height"))||400)-j.top-j.bottom;if(a.update=function(){r.transition().duration(z).call(a)},a.container=this,u.disabled=c.map(function(a){return!!a.disabled}),!v){var D;v={};for(D in u)u[D]instanceof Array?v[D]=u[D].slice(0):v[D]=u[D]}if(!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var E=r.selectAll(".nv-noData").data([w]);return E.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),E.attr("x",j.left+B/2).attr("y",j.top+C/2).text(function(a){return a}),a}r.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale();var F=r.selectAll("g.nv-wrap.nv-multiBarHorizontalChart").data([c]),G=F.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarHorizontalChart").append("g"),H=F.select("g");if(G.append("g").attr("class","nv-x nv-axis"),G.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),G.append("g").attr("class","nv-barsWrap"),G.append("g").attr("class","nv-legendWrap"),G.append("g").attr("class","nv-controlsWrap"),o&&(h.width(B-y()),e.barColor()&&c.forEach(function(a,b){a.color=d3.rgb("#ccc").darker(1.5*b).toString()}),H.select(".nv-legendWrap").datum(c).call(h),j.top!=h.height()&&(j.top=h.height(),C=(l||parseInt(r.style("height"))||400)-j.top-j.bottom),H.select(".nv-legendWrap").attr("transform","translate("+y()+","+-j.top+")")),n){var I=[{key:"Grouped",disabled:e.stacked()},{key:"Stacked",disabled:!e.stacked()}];i.width(y()).color(["#444","#444","#444"]),H.select(".nv-controlsWrap").datum(I).attr("transform","translate(0,"+-j.top+")").call(i)}F.attr("transform","translate("+j.left+","+j.top+")"),e.disabled(c.map(function(a){return a.disabled})).width(B).height(C).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled}));var J=H.select(".nv-barsWrap").datum(c.filter(function(a){return!a.disabled}));if(J.transition().call(e),p){f.scale(b).ticks(C/24).tickSize(-B,0),H.select(".nv-x.nv-axis").transition().call(f);var K=H.select(".nv-x.nv-axis").selectAll("g");K.selectAll("line, text")}q&&(g.scale(d).ticks(B/100).tickSize(-C,0),H.select(".nv-y.nv-axis").attr("transform","translate(0,"+C+")"),H.select(".nv-y.nv-axis").transition().call(g)),H.select(".nv-zeroLine line").attr("x1",d(0)).attr("x2",d(0)).attr("y1",0).attr("y2",-C),h.dispatch.on("stateChange",function(b){u=b,x.stateChange(u),a.update()}),i.dispatch.on("legendClick",function(b,c){if(b.disabled){switch(I=I.map(function(a){return a.disabled=!0,a}),b.disabled=!1,b.key){case"Grouped":e.stacked(!1);break;case"Stacked":e.stacked(!0)}u.stacked=e.stacked(),x.stateChange(u),a.update()}}),x.on("tooltipShow",function(a){s&&A(a,t.parentNode)}),x.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),u.disabled=b.disabled),"undefined"!=typeof b.stacked&&(e.stacked(b.stacked),u.stacked=b.stacked),a.update()})}),a}var b,d,e=c.models.multiBarHorizontal(),f=c.models.axis(),g=c.models.axis(),h=c.models.legend().height(30),i=c.models.legend().height(30),j={top:30,right:20,bottom:50,left:60},k=null,l=null,m=c.utils.defaultColor(),n=!0,o=!0,p=!0,q=!0,r=!1,s=!0,t=function(a,b,c,d,e){return"<h3>"+a+" - "+b+"</h3><p>"+c+"</p>"},u={stacked:r},v=null,w="No Data Available.",x=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),y=function(){return n?180:0},z=250;e.stacked(r),f.orient("left").tickPadding(5).highlightZero(!1).showMaxMin(!1).tickFormat(function(a){return a}),g.orient("bottom").tickFormat(d3.format(",.1f")),i.updateState(!1);var A=function(b,d){var h=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=f.tickFormat()(e.x()(b.point,b.pointIndex)),k=g.tickFormat()(e.y()(b.point,b.pointIndex)),l=t(b.series.key,j,k,b,a);c.tooltip.show([h,i],l,b.value<0?"e":"w",null,d)};return e.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+j.left,a.pos[1]+j.top],x.tooltipShow(a)}),e.dispatch.on("elementMouseout.tooltip",function(a){x.tooltipHide(a)}),x.on("tooltipHide",function(){s&&c.tooltip.cleanup()}),a.dispatch=x,a.multibar=e,a.legend=h,a.xAxis=f,a.yAxis=g,d3.rebind(a,e,"x","y","xDomain","yDomain","xRange","yRange","forceX","forceY","clipEdge","id","delay","showValues","showBarLabels","valueFormat","stacked","barColor"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.color=function(b){return arguments.length?(m=c.utils.getColor(b),h.color(m),a):m},a.showControls=function(b){return arguments.length?(n=b,a):n},a.showLegend=function(b){return arguments.length?(o=b,a):o},a.showXAxis=function(b){return arguments.length?(p=b,a):p},a.showYAxis=function(b){return arguments.length?(q=b,a):q},a.tooltip=function(b){return arguments.length?(t=b,a):t},a.tooltips=function(b){return arguments.length?(s=b,a):s},a.tooltipContent=function(b){return arguments.length?(t=b,a):t},a.state=function(b){return arguments.length?(u=b,a):u},a.defaultState=function(b){return arguments.length?(v=b,a):v},a.noData=function(b){return arguments.length?(w=b,a):w},a.transitionDuration=function(b){return arguments.length?(z=b,a):z},a},c.models.multiChart=function(){"use strict";function a(c){return c.each(function(c){var l=d3.select(this),A=this;a.update=function(){l.transition().call(a)},a.container=this;var B=(h||parseInt(l.style("width"))||960)-f.left-f.right,C=(i||parseInt(l.style("height"))||400)-f.top-f.bottom,D=c.filter(function(a){return!a.disabled&&"line"==a.type&&1==a.yAxis}),E=c.filter(function(a){return!a.disabled&&"line"==a.type&&2==a.yAxis}),F=c.filter(function(a){return!a.disabled&&"bar"==a.type&&1==a.yAxis}),G=c.filter(function(a){return!a.disabled&&"bar"==a.type&&2==a.yAxis}),H=c.filter(function(a){return!a.disabled&&"area"==a.type&&1==a.yAxis}),I=c.filter(function(a){return!a.disabled&&"area"==a.type&&2==a.yAxis}),J=c.filter(function(a){return!a.disabled&&1==a.yAxis}).map(function(a){return a.values.map(function(a,b){return{x:a.x,y:a.y}})}),K=c.filter(function(a){return!a.disabled&&2==a.yAxis}).map(function(a){return a.values.map(function(a,b){return{x:a.x,y:a.y}})});b.domain(d3.extent(d3.merge(J.concat(K)),function(a){return a.x})).range([0,B]);var L=l.selectAll("g.wrap.multiChart").data([c]),M=L.enter().append("g").attr("class","wrap nvd3 multiChart").append("g");M.append("g").attr("class","x axis"),M.append("g").attr("class","y1 axis"),M.append("g").attr("class","y2 axis"),M.append("g").attr("class","lines1Wrap"),M.append("g").attr("class","lines2Wrap"),M.append("g").attr("class","bars1Wrap"),M.append("g").attr("class","bars2Wrap"),M.append("g").attr("class","stack1Wrap"),M.append("g").attr("class","stack2Wrap"),M.append("g").attr("class","legendWrap");var N=L.select("g");j&&(x.width(B/2),N.select(".legendWrap").datum(c.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(1==a.yAxis?"":" (right axis)"),a})).call(x),f.top!=x.height()&&(f.top=x.height(),C=(i||parseInt(l.style("height"))||400)-f.top-f.bottom),N.select(".legendWrap").attr("transform","translate("+B/2+","+-f.top+")")),o.width(B).height(C).interpolate("monotone").color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&1==c[b].yAxis&&"line"==c[b].type})),p.width(B).height(C).interpolate("monotone").color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&2==c[b].yAxis&&"line"==c[b].type})),q.width(B).height(C).color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&1==c[b].yAxis&&"bar"==c[b].type})),r.width(B).height(C).color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&2==c[b].yAxis&&"bar"==c[b].type})),s.width(B).height(C).color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&1==c[b].yAxis&&"area"==c[b].type})),t.width(B).height(C).color(c.map(function(a,b){return a.color||g[b%g.length]}).filter(function(a,b){return!c[b].disabled&&2==c[b].yAxis&&"area"==c[b].type})),N.attr("transform","translate("+f.left+","+f.top+")");var O=N.select(".lines1Wrap").datum(D),P=N.select(".bars1Wrap").datum(F),Q=N.select(".stack1Wrap").datum(H),R=N.select(".lines2Wrap").datum(E),S=N.select(".bars2Wrap").datum(G),T=N.select(".stack2Wrap").datum(I),U=H.length?H.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[],V=I.length?I.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[];m.domain(d||d3.extent(d3.merge(J).concat(U),function(a){return a.y})).range([0,C]),n.domain(e||d3.extent(d3.merge(K).concat(V),function(a){return a.y})).range([0,C]),o.yDomain(m.domain()),q.yDomain(m.domain()),s.yDomain(m.domain()),p.yDomain(n.domain()),r.yDomain(n.domain()),t.yDomain(n.domain()),H.length&&d3.transition(Q).call(s),I.length&&d3.transition(T).call(t),F.length&&d3.transition(P).call(q),G.length&&d3.transition(S).call(r),D.length&&d3.transition(O).call(o),E.length&&d3.transition(R).call(p),u.ticks(B/100).tickSize(-C,0),N.select(".x.axis").attr("transform","translate(0,"+C+")"),d3.transition(N.select(".x.axis")).call(u),v.ticks(C/36).tickSize(-B,0),d3.transition(N.select(".y1.axis")).call(v),w.ticks(C/36).tickSize(-B,0),d3.transition(N.select(".y2.axis")).call(w),N.select(".y2.axis").style("opacity",K.length?1:0).attr("transform","translate("+b.range()[1]+",0)"),x.dispatch.on("stateChange",function(b){a.update()}),y.on("tooltipShow",function(a){k&&z(a,A.parentNode)})}),a}var b,d,e,f={top:30,right:20,bottom:50,left:60},g=d3.scale.category20().range(),h=null,i=null,j=!0,k=!0,l=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" at "+b+"</p>"},b=d3.scale.linear(),m=d3.scale.linear(),n=d3.scale.linear(),o=c.models.line().yScale(m),p=c.models.line().yScale(n),q=c.models.multiBar().stacked(!1).yScale(m),r=c.models.multiBar().stacked(!1).yScale(n),s=c.models.stackedArea().yScale(m),t=c.models.stackedArea().yScale(n),u=c.models.axis().scale(b).orient("bottom").tickPadding(5),v=c.models.axis().scale(m).orient("left"),w=c.models.axis().scale(n).orient("right"),x=c.models.legend().height(30),y=d3.dispatch("tooltipShow","tooltipHide"),z=function(b,d){var e=b.pos[0]+(d.offsetLeft||0),f=b.pos[1]+(d.offsetTop||0),g=u.tickFormat()(o.x()(b.point,b.pointIndex)),h=(2==b.series.yAxis?w:v).tickFormat()(o.y()(b.point,b.pointIndex)),i=l(b.series.key,g,h,b,a);c.tooltip.show([e,f],i,void 0,void 0,d.offsetParent)};return o.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),o.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),p.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),p.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),q.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),q.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),r.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),r.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),s.dispatch.on("tooltipShow",function(a){return Math.round(100*s.y()(a.point))?(a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],void y.tooltipShow(a)):(setTimeout(function(){d3.selectAll(".point.hover").classed("hover",!1)},0),!1)}),s.dispatch.on("tooltipHide",function(a){y.tooltipHide(a)}),t.dispatch.on("tooltipShow",function(a){return Math.round(100*t.y()(a.point))?(a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],void y.tooltipShow(a)):(setTimeout(function(){d3.selectAll(".point.hover").classed("hover",!1)},0),!1)}),t.dispatch.on("tooltipHide",function(a){y.tooltipHide(a)}),o.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),o.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),p.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+f.left,a.pos[1]+f.top],y.tooltipShow(a)}),p.dispatch.on("elementMouseout.tooltip",function(a){y.tooltipHide(a)}),y.on("tooltipHide",function(){k&&c.tooltip.cleanup()}),a.dispatch=y,a.lines1=o,a.lines2=p,a.bars1=q,a.bars2=r,a.stack1=s,a.stack2=t,a.xAxis=u,a.yAxis1=v,a.yAxis2=w,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(getX=b,o.x(b),q.x(b),a):getX},a.y=function(b){return arguments.length?(getY=b,o.y(b),q.y(b),a):getY},a.yDomain1=function(b){return arguments.length?(d=b,a):d},a.yDomain2=function(b){return arguments.length?(e=b,a):e},a.margin=function(b){return arguments.length?(f=b,a):f},a.width=function(b){return arguments.length?(h=b,a):h},a.height=function(b){return arguments.length?(i=b,a):i},a.color=function(b){return arguments.length?(g=b,x.color(b),a):g},a.showLegend=function(b){return arguments.length?(j=b,a):j},a.tooltips=function(b){return arguments.length?(k=b,a):k},a.tooltipContent=function(b){return arguments.length?(l=b,a):l},a},c.models.ohlcBar=function(){"use strict";function a(c){return c.each(function(a){var c=h-g.left-g.right,w=i-g.top-g.bottom,y=d3.select(this);k.domain(b||d3.extent(a[0].values.map(m).concat(s))),u?k.range(e||[.5*c/a[0].values.length,c*(a[0].values.length-.5)/a[0].values.length]):k.range(e||[0,c]),
+l.domain(d||[d3.min(a[0].values.map(r).concat(t)),d3.max(a[0].values.map(q).concat(t))]).range(f||[w,0]),k.domain()[0]===k.domain()[1]&&(k.domain()[0]?k.domain([k.domain()[0]-.01*k.domain()[0],k.domain()[1]+.01*k.domain()[1]]):k.domain([-1,1])),l.domain()[0]===l.domain()[1]&&(l.domain()[0]?l.domain([l.domain()[0]+.01*l.domain()[0],l.domain()[1]-.01*l.domain()[1]]):l.domain([-1,1]));var z=d3.select(this).selectAll("g.nv-wrap.nv-ohlcBar").data([a[0].values]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-ohlcBar"),B=A.append("defs"),C=A.append("g"),D=z.select("g");C.append("g").attr("class","nv-ticks"),z.attr("transform","translate("+g.left+","+g.top+")"),y.on("click",function(a,b){x.chartClick({data:a,index:b,pos:d3.event,id:j})}),B.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),z.select("#nv-chart-clip-path-"+j+" rect").attr("width",c).attr("height",w),D.attr("clip-path",v?"url(#nv-chart-clip-path-"+j+")":"");var E=z.select(".nv-ticks").selectAll(".nv-tick").data(function(a){return a});E.exit().remove();E.enter().append("path").attr("class",function(a,b,c){return(o(a,b)>p(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b}).attr("d",function(b,d){var e=c/a[0].values.length*.9;return"m0,0l0,"+(l(o(b,d))-l(q(b,d)))+"l"+-e/2+",0l"+e/2+",0l0,"+(l(r(b,d))-l(o(b,d)))+"l0,"+(l(p(b,d))-l(r(b,d)))+"l"+e/2+",0l"+-e/2+",0z"}).attr("transform",function(a,b){return"translate("+k(m(a,b))+","+l(q(a,b))+")"}).on("mouseover",function(b,c){d3.select(this).classed("hover",!0),x.elementMouseover({point:b,series:a[0],pos:[k(m(b,c)),l(n(b,c))],pointIndex:c,seriesIndex:0,e:d3.event})}).on("mouseout",function(b,c){d3.select(this).classed("hover",!1),x.elementMouseout({point:b,series:a[0],pointIndex:c,seriesIndex:0,e:d3.event})}).on("click",function(a,b){x.elementClick({value:n(a,b),data:a,index:b,pos:[k(m(a,b)),l(n(a,b))],e:d3.event,id:j}),d3.event.stopPropagation()}).on("dblclick",function(a,b){x.elementDblClick({value:n(a,b),data:a,index:b,pos:[k(m(a,b)),l(n(a,b))],e:d3.event,id:j}),d3.event.stopPropagation()});E.attr("class",function(a,b,c){return(o(a,b)>p(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b}),d3.transition(E).attr("transform",function(a,b){return"translate("+k(m(a,b))+","+l(q(a,b))+")"}).attr("d",function(b,d){var e=c/a[0].values.length*.9;return"m0,0l0,"+(l(o(b,d))-l(q(b,d)))+"l"+-e/2+",0l"+e/2+",0l0,"+(l(r(b,d))-l(o(b,d)))+"l0,"+(l(p(b,d))-l(r(b,d)))+"l"+e/2+",0l"+-e/2+",0z"})}),a}var b,d,e,f,g={top:0,right:0,bottom:0,left:0},h=960,i=500,j=Math.floor(1e4*Math.random()),k=d3.scale.linear(),l=d3.scale.linear(),m=function(a){return a.x},n=function(a){return a.y},o=function(a){return a.open},p=function(a){return a.close},q=function(a){return a.high},r=function(a){return a.low},s=[],t=[],u=!1,v=!0,w=c.utils.defaultColor(),x=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout");return a.dispatch=x,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(m=b,a):m},a.y=function(b){return arguments.length?(n=b,a):n},a.open=function(b){return arguments.length?(o=b,a):o},a.close=function(b){return arguments.length?(p=b,a):p},a.high=function(b){return arguments.length?(q=b,a):q},a.low=function(b){return arguments.length?(r=b,a):r},a.margin=function(b){return arguments.length?(g.top="undefined"!=typeof b.top?b.top:g.top,g.right="undefined"!=typeof b.right?b.right:g.right,g.bottom="undefined"!=typeof b.bottom?b.bottom:g.bottom,g.left="undefined"!=typeof b.left?b.left:g.left,a):g},a.width=function(b){return arguments.length?(h=b,a):h},a.height=function(b){return arguments.length?(i=b,a):i},a.xScale=function(b){return arguments.length?(k=b,a):k},a.yScale=function(b){return arguments.length?(l=b,a):l},a.xDomain=function(c){return arguments.length?(b=c,a):b},a.yDomain=function(b){return arguments.length?(d=b,a):d},a.xRange=function(b){return arguments.length?(e=b,a):e},a.yRange=function(b){return arguments.length?(f=b,a):f},a.forceX=function(b){return arguments.length?(s=b,a):s},a.forceY=function(b){return arguments.length?(t=b,a):t},a.padData=function(b){return arguments.length?(u=b,a):u},a.clipEdge=function(b){return arguments.length?(v=b,a):v},a.color=function(b){return arguments.length?(w=c.utils.getColor(b),a):w},a.id=function(b){return arguments.length?(j=b,a):j},a},c.models.pie=function(){"use strict";function a(c){return c.each(function(a){function c(a){a.endAngle=isNaN(a.endAngle)?0:a.endAngle,a.startAngle=isNaN(a.startAngle)?0:a.startAngle,r||(a.innerRadius=0);var b=d3.interpolate(this._current,a);return this._current=b(0),function(a){return E(b(a))}}var i=e-b.left-b.right,l=f-b.top-b.bottom,x=Math.min(i,l)/2,y=x-x/5,z=d3.select(this),A=z.selectAll(".nv-wrap.nv-pie").data(a),B=A.enter().append("g").attr("class","nvd3 nv-wrap nv-pie nv-chart-"+j),C=B.append("g"),D=A.select("g");C.append("g").attr("class","nv-pie"),C.append("g").attr("class","nv-pieLabels"),A.attr("transform","translate("+b.left+","+b.top+")"),D.select(".nv-pie").attr("transform","translate("+i/2+","+l/2+")"),D.select(".nv-pieLabels").attr("transform","translate("+i/2+","+l/2+")"),z.on("click",function(a,b){w.chartClick({data:a,index:b,pos:d3.event,id:j})});var E=d3.svg.arc().outerRadius(y);t&&E.startAngle(t),u&&E.endAngle(u),r&&E.innerRadius(x*v);var F=d3.layout.pie().sort(null).value(function(a){return a.disabled?0:h(a)}),G=A.select(".nv-pie").selectAll(".nv-slice").data(F),H=A.select(".nv-pieLabels").selectAll(".nv-label").data(F);G.exit().remove(),H.exit().remove();var I=G.enter().append("g").attr("class","nv-slice").on("mouseover",function(a,b){d3.select(this).classed("hover",!0),w.elementMouseover({label:g(a.data),value:h(a.data),point:a.data,pointIndex:b,pos:[d3.event.pageX,d3.event.pageY],id:j})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),w.elementMouseout({label:g(a.data),value:h(a.data),point:a.data,index:b,id:j})}).on("click",function(a,b){w.elementClick({label:g(a.data),value:h(a.data),point:a.data,index:b,pos:d3.event,id:j}),d3.event.stopPropagation()}).on("dblclick",function(a,b){w.elementDblClick({label:g(a.data),value:h(a.data),point:a.data,index:b,pos:d3.event,id:j}),d3.event.stopPropagation()});G.attr("fill",function(a,b){return k(a,b)}).attr("stroke",function(a,b){return k(a,b)});I.append("path").each(function(a){this._current=a});if(G.select("path").transition().attr("d",E).attrTween("d",c),m){var J=d3.svg.arc().innerRadius(0);n&&(J=E),o&&(J=d3.svg.arc().outerRadius(E.outerRadius())),H.enter().append("g").classed("nv-label",!0).each(function(a,b){var c=d3.select(this);c.attr("transform",function(a){if(s){a.outerRadius=y+10,a.innerRadius=y+15;var b=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?b-=90:b+=90,"translate("+J.centroid(a)+") rotate("+b+")"}return a.outerRadius=x+10,a.innerRadius=x+15,"translate("+J.centroid(a)+")"}),c.append("rect").style("stroke","#fff").style("fill","#fff").attr("rx",3).attr("ry",3),c.append("text").style("text-anchor",s?(a.startAngle+a.endAngle)/2<Math.PI?"start":"end":"middle").style("fill","#000")});var K={},L=14,M=140,N=function(a){return Math.floor(a[0]/M)*M+","+Math.floor(a[1]/L)*L};H.transition().attr("transform",function(a){if(s){a.outerRadius=y+10,a.innerRadius=y+15;var b=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?b-=90:b+=90,"translate("+J.centroid(a)+") rotate("+b+")"}a.outerRadius=x+10,a.innerRadius=x+15;var c=J.centroid(a),d=N(c);return K[d]&&(c[1]-=L),K[N(c)]=!0,"translate("+c+")"}),H.select(".nv-label text").style("text-anchor",s?(d.startAngle+d.endAngle)/2<Math.PI?"start":"end":"middle").text(function(a,b){var c=(a.endAngle-a.startAngle)/(2*Math.PI),d={key:g(a.data),value:h(a.data),percent:d3.format("%")(c)};return a.value&&c>q?d[p]:""})}}),a}var b={top:0,right:0,bottom:0,left:0},e=500,f=500,g=function(a){return a.x},h=function(a){return a.y},i=function(a){return a.description},j=Math.floor(1e4*Math.random()),k=c.utils.defaultColor(),l=d3.format(",.2f"),m=!0,n=!0,o=!1,p="key",q=.02,r=!1,s=!1,t=!1,u=!1,v=.5,w=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout");return a.dispatch=w,a.options=c.utils.optionsFunc.bind(a),a.margin=function(c){return arguments.length?(b.top="undefined"!=typeof c.top?c.top:b.top,b.right="undefined"!=typeof c.right?c.right:b.right,b.bottom="undefined"!=typeof c.bottom?c.bottom:b.bottom,b.left="undefined"!=typeof c.left?c.left:b.left,a):b},a.width=function(b){return arguments.length?(e=b,a):e},a.height=function(b){return arguments.length?(f=b,a):f},a.values=function(b){return c.log("pie.values() is no longer supported."),a},a.x=function(b){return arguments.length?(g=b,a):g},a.y=function(b){return arguments.length?(h=d3.functor(b),a):h},a.description=function(b){return arguments.length?(i=b,a):i},a.showLabels=function(b){return arguments.length?(m=b,a):m},a.labelSunbeamLayout=function(b){return arguments.length?(s=b,a):s},a.donutLabelsOutside=function(b){return arguments.length?(o=b,a):o},a.pieLabelsOutside=function(b){return arguments.length?(n=b,a):n},a.labelType=function(b){return arguments.length?(p=b,p=p||"key",a):p},a.donut=function(b){return arguments.length?(r=b,a):r},a.donutRatio=function(b){return arguments.length?(v=b,a):v},a.startAngle=function(b){return arguments.length?(t=b,a):t},a.endAngle=function(b){return arguments.length?(u=b,a):u},a.id=function(b){return arguments.length?(j=b,a):j},a.color=function(b){return arguments.length?(k=c.utils.getColor(b),a):k},a.valueFormat=function(b){return arguments.length?(l=b,a):l},a.labelThreshold=function(b){return arguments.length?(q=b,a):q},a},c.models.pieChart=function(){"use strict";function a(c){return c.each(function(c){var i=d3.select(this),j=(f||parseInt(i.style("width"))||960)-e.left-e.right,k=(g||parseInt(i.style("height"))||400)-e.top-e.bottom;if(a.update=function(){i.transition().call(a)},a.container=this,l.disabled=c.map(function(a){return!!a.disabled}),!m){var p;m={};for(p in l)l[p]instanceof Array?m[p]=l[p].slice(0):m[p]=l[p]}if(!c||!c.length){var q=i.selectAll(".nv-noData").data([n]);return q.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),q.attr("x",e.left+j/2).attr("y",e.top+k/2).text(function(a){return a}),a}i.selectAll(".nv-noData").remove();var r=i.selectAll("g.nv-wrap.nv-pieChart").data([c]),s=r.enter().append("g").attr("class","nvd3 nv-wrap nv-pieChart").append("g"),t=r.select("g");s.append("g").attr("class","nv-pieWrap"),s.append("g").attr("class","nv-legendWrap"),h&&(d.width(j).key(b.x()),r.select(".nv-legendWrap").datum(c).call(d),e.top!=d.height()&&(e.top=d.height(),k=(g||parseInt(i.style("height"))||400)-e.top-e.bottom),r.select(".nv-legendWrap").attr("transform","translate(0,"+-e.top+")")),r.attr("transform","translate("+e.left+","+e.top+")"),b.width(j).height(k);var u=t.select(".nv-pieWrap").datum([c]);d3.transition(u).call(b),d.dispatch.on("stateChange",function(b){l=b,o.stateChange(l),a.update()}),b.dispatch.on("elementMouseout.tooltip",function(a){o.tooltipHide(a)}),o.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),l.disabled=b.disabled),a.update()})}),a}var b=c.models.pie(),d=c.models.legend(),e={top:30,right:20,bottom:20,left:20},f=null,g=null,h=!0,i=c.utils.defaultColor(),j=!0,k=function(a,b,c,d){return"<h3>"+a+"</h3><p>"+b+"</p>"},l={},m=null,n="No Data Available.",o=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),p=function(d,e){var f=b.description()(d.point)||b.x()(d.point),g=d.pos[0]+(e&&e.offsetLeft||0),h=d.pos[1]+(e&&e.offsetTop||0),i=b.valueFormat()(b.y()(d.point)),j=k(f,i,d,a);c.tooltip.show([g,h],j,d.value<0?"n":"s",null,e)};return b.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+e.left,a.pos[1]+e.top],o.tooltipShow(a)}),o.on("tooltipShow",function(a){j&&p(a)}),o.on("tooltipHide",function(){j&&c.tooltip.cleanup()}),a.legend=d,a.dispatch=o,a.pie=b,d3.rebind(a,b,"valueFormat","values","x","y","description","id","showLabels","donutLabelsOutside","pieLabelsOutside","labelType","donut","donutRatio","labelThreshold"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(e.top="undefined"!=typeof b.top?b.top:e.top,e.right="undefined"!=typeof b.right?b.right:e.right,e.bottom="undefined"!=typeof b.bottom?b.bottom:e.bottom,e.left="undefined"!=typeof b.left?b.left:e.left,a):e},a.width=function(b){return arguments.length?(f=b,a):f},a.height=function(b){return arguments.length?(g=b,a):g},a.color=function(e){return arguments.length?(i=c.utils.getColor(e),d.color(i),b.color(i),a):i},a.showLegend=function(b){return arguments.length?(h=b,a):h},a.tooltips=function(b){return arguments.length?(j=b,a):j},a.tooltipContent=function(b){return arguments.length?(k=b,a):k},a.state=function(b){return arguments.length?(l=b,a):l},a.defaultState=function(b){return arguments.length?(m=b,a):m},a.noData=function(b){return arguments.length?(n=b,a):n},a},c.models.scatter=function(){"use strict";function a(O){return O.each(function(a){function O(){if(!w)return!1;var b=d3.merge(a.map(function(a,b){return a.values.map(function(a,c){var d=o(a,c),e=p(a,c);return[l(d)+1e-7*Math.random(),m(e)+1e-7*Math.random(),b,c,a]}).filter(function(a,b){return y(a[4],b)})}));if(M===!0){if(C){var c=T.select("defs").selectAll(".nv-point-clips").data([k]).enter();c.append("clipPath").attr("class","nv-point-clips").attr("id","nv-points-clip-"+k);var d=T.select("#nv-points-clip-"+k).selectAll("circle").data(b);d.enter().append("circle").attr("r",D),d.exit().remove(),d.attr("cx",function(a){return a[0]}).attr("cy",function(a){return a[1]}),T.select(".nv-point-paths").attr("clip-path","url(#nv-points-clip-"+k+")")}b.length&&(b.push([l.range()[0]-20,m.range()[0]-20,null,null]),b.push([l.range()[1]+20,m.range()[1]+20,null,null]),b.push([l.range()[0]-20,m.range()[0]+20,null,null]),b.push([l.range()[1]+20,m.range()[1]-20,null,null]));var e=d3.geom.polygon([[-10,-10],[-10,i+10],[h+10,i+10],[h+10,-10]]),f=d3.geom.voronoi(b).map(function(a,c){return{data:e.clip(a),series:b[c][2],point:b[c][3]}}),j=T.select(".nv-point-paths").selectAll("path").data(f);j.enter().append("path").attr("class",function(a,b){return"nv-path-"+b}),j.exit().remove(),j.attr("d",function(a){return 0===a.data.length?"M 0 0":"M"+a.data.join("L")+"Z"});var n=function(b,c){if(N)return 0;var d=a[b.series];if("undefined"!=typeof d){var e=d.values[b.point];c({point:e,series:d,pos:[l(o(e,b.point))+g.left,m(p(e,b.point))+g.top],seriesIndex:b.series,pointIndex:b.point})}};j.on("click",function(a){n(a,L.elementClick)}).on("mouseover",function(a){n(a,L.elementMouseover)}).on("mouseout",function(a,b){n(a,L.elementMouseout)})}else T.select(".nv-groups").selectAll(".nv-group").selectAll(".nv-point").on("click",function(b,c){if(N||!a[b.series])return 0;var d=a[b.series],e=d.values[c];L.elementClick({point:e,series:d,pos:[l(o(e,c))+g.left,m(p(e,c))+g.top],seriesIndex:b.series,pointIndex:c})}).on("mouseover",function(b,c){if(N||!a[b.series])return 0;var d=a[b.series],e=d.values[c];L.elementMouseover({point:e,series:d,pos:[l(o(e,c))+g.left,m(p(e,c))+g.top],seriesIndex:b.series,pointIndex:c})}).on("mouseout",function(b,c){if(N||!a[b.series])return 0;var d=a[b.series],e=d.values[c];L.elementMouseout({point:e,series:d,seriesIndex:b.series,pointIndex:c})});N=!1}var P=h-g.left-g.right,Q=i-g.top-g.bottom,R=d3.select(this);a.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var S=E&&F&&I?[]:d3.merge(a.map(function(a){return a.values.map(function(a,b){return{x:o(a,b),y:p(a,b),size:q(a,b)}})}));l.domain(E||d3.extent(S.map(function(a){return a.x}).concat(t))),z&&a[0]?l.range(G||[(P*A+P)/(2*a[0].values.length),P-P*(1+A)/(2*a[0].values.length)]):l.range(G||[0,P]),m.domain(F||d3.extent(S.map(function(a){return a.y}).concat(u))).range(H||[Q,0]),n.domain(I||d3.extent(S.map(function(a){return a.size}).concat(v))).range(J||[16,256]),(l.domain()[0]===l.domain()[1]||m.domain()[0]===m.domain()[1])&&(K=!0),l.domain()[0]===l.domain()[1]&&(l.domain()[0]?l.domain([l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]):l.domain([-1,1])),m.domain()[0]===m.domain()[1]&&(m.domain()[0]?m.domain([m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]):m.domain([-1,1])),isNaN(l.domain()[0])&&l.domain([-1,1]),isNaN(m.domain()[0])&&m.domain([-1,1]),b=b||l,d=d||m,e=e||n;var T=R.selectAll("g.nv-wrap.nv-scatter").data([a]),U=T.enter().append("g").attr("class","nvd3 nv-wrap nv-scatter nv-chart-"+k+(K?" nv-single-point":"")),V=U.append("defs"),W=U.append("g"),X=T.select("g");W.append("g").attr("class","nv-groups"),W.append("g").attr("class","nv-point-paths"),T.attr("transform","translate("+g.left+","+g.top+")"),V.append("clipPath").attr("id","nv-edge-clip-"+k).append("rect"),T.select("#nv-edge-clip-"+k+" rect").attr("width",P).attr("height",Q),X.attr("clip-path",B?"url(#nv-edge-clip-"+k+")":""),N=!0;var Y=T.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});if(Y.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),Y.exit().remove(),Y.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),Y.transition().style("fill",function(a,b){return j(a,b)}).style("stroke",function(a,b){return j(a,b)}).style("stroke-opacity",1).style("fill-opacity",.5),s){var Z=Y.selectAll("circle.nv-point").data(function(a){return a.values},x);Z.enter().append("circle").style("fill",function(a,b){return a.color}).style("stroke",function(a,b){return a.color}).attr("cx",function(a,d){return c.utils.NaNtoZero(b(o(a,d)))}).attr("cy",function(a,b){return c.utils.NaNtoZero(d(p(a,b)))}).attr("r",function(a,b){return Math.sqrt(n(q(a,b))/Math.PI)}),Z.exit().remove(),Y.exit().selectAll("path.nv-point").transition().attr("cx",function(a,b){return c.utils.NaNtoZero(l(o(a,b)))}).attr("cy",function(a,b){return c.utils.NaNtoZero(m(p(a,b)))}).remove(),Z.each(function(a,b){d3.select(this).classed("nv-point",!0).classed("nv-point-"+b,!0).classed("hover",!1)}),Z.transition().attr("cx",function(a,b){return c.utils.NaNtoZero(l(o(a,b)))}).attr("cy",function(a,b){return c.utils.NaNtoZero(m(p(a,b)))}).attr("r",function(a,b){return Math.sqrt(n(q(a,b))/Math.PI)})}else{var Z=Y.selectAll("path.nv-point").data(function(a){return a.values});Z.enter().append("path").style("fill",function(a,b){return a.color}).style("stroke",function(a,b){return a.color}).attr("transform",function(a,c){return"translate("+b(o(a,c))+","+d(p(a,c))+")"}).attr("d",d3.svg.symbol().type(r).size(function(a,b){return n(q(a,b))})),Z.exit().remove(),Y.exit().selectAll("path.nv-point").transition().attr("transform",function(a,b){return"translate("+l(o(a,b))+","+m(p(a,b))+")"}).remove(),Z.each(function(a,b){d3.select(this).classed("nv-point",!0).classed("nv-point-"+b,!0).classed("hover",!1)}),Z.transition().attr("transform",function(a,b){return"translate("+l(o(a,b))+","+m(p(a,b))+")"}).attr("d",d3.svg.symbol().type(r).size(function(a,b){return n(q(a,b))}))}clearTimeout(f),f=setTimeout(O,300),b=l.copy(),d=m.copy(),e=n.copy()}),a}var b,d,e,f,g={top:0,right:0,bottom:0,left:0},h=960,i=500,j=c.utils.defaultColor(),k=Math.floor(1e5*Math.random()),l=d3.scale.linear(),m=d3.scale.linear(),n=d3.scale.linear(),o=function(a){return a.x},p=function(a){return a.y},q=function(a){return a.size||1},r=function(a){return a.shape||"circle"},s=!0,t=[],u=[],v=[],w=!0,x=null,y=function(a){return!a.notActive},z=!1,A=.1,B=!1,C=!0,D=function(){return 25},E=null,F=null,G=null,H=null,I=null,J=null,K=!1,L=d3.dispatch("elementClick","elementMouseover","elementMouseout"),M=!0,N=!1;return a.clearHighlights=function(){d3.selectAll(".nv-chart-"+k+" .nv-point.hover").classed("hover",!1)},a.highlightPoint=function(a,b,c){d3.select(".nv-chart-"+k+" .nv-series-"+a+" .nv-point-"+b).classed("hover",c)},L.on("elementMouseover.point",function(b){w&&a.highlightPoint(b.seriesIndex,b.pointIndex,!0)}),L.on("elementMouseout.point",function(b){w&&a.highlightPoint(b.seriesIndex,b.pointIndex,!1)}),a.dispatch=L,a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(o=d3.functor(b),a):o},a.y=function(b){return arguments.length?(p=d3.functor(b),a):p},a.size=function(b){return arguments.length?(q=d3.functor(b),a):q},a.margin=function(b){return arguments.length?(g.top="undefined"!=typeof b.top?b.top:g.top,g.right="undefined"!=typeof b.right?b.right:g.right,g.bottom="undefined"!=typeof b.bottom?b.bottom:g.bottom,g.left="undefined"!=typeof b.left?b.left:g.left,a):g},a.width=function(b){return arguments.length?(h=b,a):h},a.height=function(b){return arguments.length?(i=b,a):i},a.xScale=function(b){return arguments.length?(l=b,a):l},a.yScale=function(b){return arguments.length?(m=b,a):m},a.zScale=function(b){return arguments.length?(n=b,a):n},a.xDomain=function(b){return arguments.length?(E=b,a):E},a.yDomain=function(b){return arguments.length?(F=b,a):F},a.sizeDomain=function(b){return arguments.length?(I=b,a):I},a.xRange=function(b){return arguments.length?(G=b,a):G},a.yRange=function(b){return arguments.length?(H=b,a):H},a.sizeRange=function(b){return arguments.length?(J=b,a):J},a.forceX=function(b){return arguments.length?(t=b,a):t},a.forceY=function(b){return arguments.length?(u=b,a):u},a.forceSize=function(b){return arguments.length?(v=b,a):v},a.interactive=function(b){return arguments.length?(w=b,a):w},a.pointKey=function(b){return arguments.length?(x=b,a):x},a.pointActive=function(b){return arguments.length?(y=b,a):y},a.padData=function(b){return arguments.length?(z=b,a):z},a.padDataOuter=function(b){return arguments.length?(A=b,a):A},a.clipEdge=function(b){return arguments.length?(B=b,a):B},a.clipVoronoi=function(b){return arguments.length?(C=b,a):C},a.useVoronoi=function(b){return arguments.length?(M=b,M===!1&&(C=!1),a):M},a.clipRadius=function(b){return arguments.length?(D=b,a):D},a.color=function(b){return arguments.length?(j=c.utils.getColor(b),a):j},a.shape=function(b){return arguments.length?(r=b,a):r},a.onlyCircles=function(b){return arguments.length?(s=b,a):s},a.id=function(b){return arguments.length?(k=b,a):k},a.singlePoint=function(b){return arguments.length?(K=b,a):K},a},c.models.scatterChart=function(){"use strict";function a(c){return c.each(function(c){function B(){if(z)return U.select(".nv-point-paths").style("pointer-events","all"),!1;U.select(".nv-point-paths").style("pointer-events","none");var a=d3.mouse(this);n.distortion(y).focus(a[0]),o.distortion(y).focus(a[1]),U.select(".nv-scatterWrap").call(b),u&&U.select(".nv-x.nv-axis").call(d),v&&U.select(".nv-y.nv-axis").call(e),U.select(".nv-distributionX").datum(c.filter(function(a){return!a.disabled})).call(h),U.select(".nv-distributionY").datum(c.filter(function(a){return!a.disabled})).call(i)}var C=d3.select(this),D=this,N=(k||parseInt(C.style("width"))||960)-j.left-j.right,O=(l||parseInt(C.style("height"))||400)-j.top-j.bottom;if(a.update=function(){C.transition().duration(I).call(a)},a.container=this,E.disabled=c.map(function(a){return!!a.disabled}),!F){var P;F={};for(P in E)E[P]instanceof Array?F[P]=E[P].slice(0):F[P]=E[P]}if(!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var Q=C.selectAll(".nv-noData").data([H]);return Q.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),Q.attr("x",j.left+N/2).attr("y",j.top+O/2).text(function(a){return a}),a}C.selectAll(".nv-noData").remove(),J=J||n,K=K||o;var R=C.selectAll("g.nv-wrap.nv-scatterChart").data([c]),S=R.enter().append("g").attr("class","nvd3 nv-wrap nv-scatterChart nv-chart-"+b.id()),T=S.append("g"),U=R.select("g");if(T.append("rect").attr("class","nvd3 nv-background"),T.append("g").attr("class","nv-x nv-axis"),T.append("g").attr("class","nv-y nv-axis"),T.append("g").attr("class","nv-scatterWrap"),T.append("g").attr("class","nv-distWrap"),T.append("g").attr("class","nv-legendWrap"),T.append("g").attr("class","nv-controlsWrap"),t){var V=x?N/2:N;f.width(V),R.select(".nv-legendWrap").datum(c).call(f),j.top!=f.height()&&(j.top=f.height(),O=(l||parseInt(C.style("height"))||400)-j.top-j.bottom),R.select(".nv-legendWrap").attr("transform","translate("+(N-V)+","+-j.top+")")}if(x&&(g.width(180).color(["#444"]),U.select(".nv-controlsWrap").datum(M).attr("transform","translate(0,"+-j.top+")").call(g)),R.attr("transform","translate("+j.left+","+j.top+")"),w&&U.select(".nv-y.nv-axis").attr("transform","translate("+N+",0)"),b.width(N).height(O).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),0!==p&&b.xDomain(null),0!==q&&b.yDomain(null),R.select(".nv-scatterWrap").datum(c.filter(function(a){return!a.disabled})).call(b),0!==p){var W=n.domain()[1]-n.domain()[0];b.xDomain([n.domain()[0]-p*W,n.domain()[1]+p*W])}if(0!==q){var X=o.domain()[1]-o.domain()[0];b.yDomain([o.domain()[0]-q*X,o.domain()[1]+q*X])}(0!==q||0!==p)&&R.select(".nv-scatterWrap").datum(c.filter(function(a){return!a.disabled})).call(b),u&&(d.scale(n).ticks(d.ticks()&&d.ticks().length?d.ticks():N/100).tickSize(-O,0),U.select(".nv-x.nv-axis").attr("transform","translate(0,"+o.range()[0]+")").call(d)),v&&(e.scale(o).ticks(e.ticks()&&e.ticks().length?e.ticks():O/36).tickSize(-N,0),U.select(".nv-y.nv-axis").call(e)),r&&(h.getData(b.x()).scale(n).width(N).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),T.select(".nv-distWrap").append("g").attr("class","nv-distributionX"),U.select(".nv-distributionX").attr("transform","translate(0,"+o.range()[0]+")").datum(c.filter(function(a){return!a.disabled})).call(h)),s&&(i.getData(b.y()).scale(o).width(O).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),T.select(".nv-distWrap").append("g").attr("class","nv-distributionY"),U.select(".nv-distributionY").attr("transform","translate("+(w?N:-i.size())+",0)").datum(c.filter(function(a){return!a.disabled})).call(i)),d3.fisheye&&(U.select(".nv-background").attr("width",N).attr("height",O),U.select(".nv-background").on("mousemove",B),U.select(".nv-background").on("click",function(){z=!z}),b.dispatch.on("elementClick.freezeFisheye",function(){z=!z})),g.dispatch.on("legendClick",function(c,f){c.disabled=!c.disabled,y=c.disabled?0:2.5,U.select(".nv-background").style("pointer-events",c.disabled?"none":"all"),U.select(".nv-point-paths").style("pointer-events",c.disabled?"all":"none"),c.disabled?(n.distortion(y).focus(0),o.distortion(y).focus(0),U.select(".nv-scatterWrap").call(b),U.select(".nv-x.nv-axis").call(d),U.select(".nv-y.nv-axis").call(e)):z=!1,a.update()}),f.dispatch.on("stateChange",function(b){E.disabled=b.disabled,G.stateChange(E),a.update()}),b.dispatch.on("elementMouseover.tooltip",function(a){d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",function(b,c){return a.pos[1]-O}),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",a.pos[0]+h.size()),a.pos=[a.pos[0]+j.left,a.pos[1]+j.top],G.tooltipShow(a)}),G.on("tooltipShow",function(a){A&&L(a,D.parentNode)}),G.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),E.disabled=b.disabled),a.update()}),J=n.copy(),K=o.copy()}),a}var b=c.models.scatter(),d=c.models.axis(),e=c.models.axis(),f=c.models.legend(),g=c.models.legend(),h=c.models.distribution(),i=c.models.distribution(),j={top:30,right:20,bottom:50,left:75},k=null,l=null,m=c.utils.defaultColor(),n=d3.fisheye?d3.fisheye.scale(d3.scale.linear).distortion(0):b.xScale(),o=d3.fisheye?d3.fisheye.scale(d3.scale.linear).distortion(0):b.yScale(),p=0,q=0,r=!1,s=!1,t=!0,u=!0,v=!0,w=!1,x=!!d3.fisheye,y=0,z=!1,A=!0,B=function(a,b,c){return"<strong>"+b+"</strong>"},C=function(a,b,c){return"<strong>"+c+"</strong>"},D=null,E={},F=null,G=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),H="No Data Available.",I=250;b.xScale(n).yScale(o),d.orient("bottom").tickPadding(10),e.orient(w?"right":"left").tickPadding(10),h.axis("x"),i.axis("y"),g.updateState(!1);var J,K,L=function(f,g){var h=f.pos[0]+(g.offsetLeft||0),i=f.pos[1]+(g.offsetTop||0),k=f.pos[0]+(g.offsetLeft||0),l=o.range()[0]+j.top+(g.offsetTop||0),m=n.range()[0]+j.left+(g.offsetLeft||0),p=f.pos[1]+(g.offsetTop||0),q=d.tickFormat()(b.x()(f.point,f.pointIndex)),r=e.tickFormat()(b.y()(f.point,f.pointIndex));null!=B&&c.tooltip.show([k,l],B(f.series.key,q,r,f,a),"n",1,g,"x-nvtooltip"),null!=C&&c.tooltip.show([m,p],C(f.series.key,q,r,f,a),"e",1,g,"y-nvtooltip"),null!=D&&c.tooltip.show([h,i],D(f.series.key,q,r,f,a),f.value<0?"n":"s",null,g)},M=[{key:"Magnify",disabled:!0}];return b.dispatch.on("elementMouseout.tooltip",function(a){G.tooltipHide(a),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",0),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",i.size())}),G.on("tooltipHide",function(){A&&c.tooltip.cleanup()}),a.dispatch=G,a.scatter=b,a.legend=f,a.controls=g,a.xAxis=d,a.yAxis=e,a.distX=h,a.distY=i,d3.rebind(a,b,"id","interactive","pointActive","x","y","shape","size","xScale","yScale","zScale","xDomain","yDomain","xRange","yRange","sizeDomain","sizeRange","forceX","forceY","forceSize","clipVoronoi","clipRadius","useVoronoi"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.color=function(b){return arguments.length?(m=c.utils.getColor(b),f.color(m),h.color(m),i.color(m),a):m},a.showDistX=function(b){return arguments.length?(r=b,a):r},a.showDistY=function(b){return arguments.length?(s=b,a):s},a.showControls=function(b){return arguments.length?(x=b,a):x},a.showLegend=function(b){return arguments.length?(t=b,a):t},a.showXAxis=function(b){return arguments.length?(u=b,a):u},a.showYAxis=function(b){return arguments.length?(v=b,a):v},a.rightAlignYAxis=function(b){return arguments.length?(w=b,e.orient(b?"right":"left"),a):w},a.fisheye=function(b){return arguments.length?(y=b,a):y},a.xPadding=function(b){return arguments.length?(p=b,a):p},a.yPadding=function(b){return arguments.length?(q=b,a):q},a.tooltips=function(b){return arguments.length?(A=b,a):A},a.tooltipContent=function(b){return arguments.length?(D=b,a):D},a.tooltipXContent=function(b){return arguments.length?(B=b,a):B},a.tooltipYContent=function(b){return arguments.length?(C=b,a):C},a.state=function(b){return arguments.length?(E=b,a):E},a.defaultState=function(b){return arguments.length?(F=b,a):F},a.noData=function(b){return arguments.length?(H=b,a):H},a.transitionDuration=function(b){return arguments.length?(I=b,a):I},a},c.models.scatterPlusLineChart=function(){"use strict";function a(c){return c.each(function(c){function z(){if(x)return S.select(".nv-point-paths").style("pointer-events","all"),!1;S.select(".nv-point-paths").style("pointer-events","none");var a=d3.mouse(this);n.distortion(w).focus(a[0]),o.distortion(w).focus(a[1]),S.select(".nv-scatterWrap").datum(c.filter(function(a){return!a.disabled})).call(b),s&&S.select(".nv-x.nv-axis").call(d),t&&S.select(".nv-y.nv-axis").call(e),S.select(".nv-distributionX").datum(c.filter(function(a){return!a.disabled})).call(h),S.select(".nv-distributionY").datum(c.filter(function(a){return!a.disabled})).call(i)}var A=d3.select(this),B=this,L=(k||parseInt(A.style("width"))||960)-j.left-j.right,M=(l||parseInt(A.style("height"))||400)-j.top-j.bottom;if(a.update=function(){A.transition().duration(G).call(a)},a.container=this,C.disabled=c.map(function(a){return!!a.disabled}),!D){var N;D={};for(N in C)C[N]instanceof Array?D[N]=C[N].slice(0):D[N]=C[N];
+}if(!(c&&c.length&&c.filter(function(a){return a.values.length}).length)){var O=A.selectAll(".nv-noData").data([F]);return O.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),O.attr("x",j.left+L/2).attr("y",j.top+M/2).text(function(a){return a}),a}A.selectAll(".nv-noData").remove(),n=b.xScale(),o=b.yScale(),H=H||n,I=I||o;var P=A.selectAll("g.nv-wrap.nv-scatterChart").data([c]),Q=P.enter().append("g").attr("class","nvd3 nv-wrap nv-scatterChart nv-chart-"+b.id()),R=Q.append("g"),S=P.select("g");R.append("rect").attr("class","nvd3 nv-background").style("pointer-events","none"),R.append("g").attr("class","nv-x nv-axis"),R.append("g").attr("class","nv-y nv-axis"),R.append("g").attr("class","nv-scatterWrap"),R.append("g").attr("class","nv-regressionLinesWrap"),R.append("g").attr("class","nv-distWrap"),R.append("g").attr("class","nv-legendWrap"),R.append("g").attr("class","nv-controlsWrap"),P.attr("transform","translate("+j.left+","+j.top+")"),u&&S.select(".nv-y.nv-axis").attr("transform","translate("+L+",0)"),r&&(f.width(L/2),P.select(".nv-legendWrap").datum(c).call(f),j.top!=f.height()&&(j.top=f.height(),M=(l||parseInt(A.style("height"))||400)-j.top-j.bottom),P.select(".nv-legendWrap").attr("transform","translate("+L/2+","+-j.top+")")),v&&(g.width(180).color(["#444"]),S.select(".nv-controlsWrap").datum(K).attr("transform","translate(0,"+-j.top+")").call(g)),b.width(L).height(M).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),P.select(".nv-scatterWrap").datum(c.filter(function(a){return!a.disabled})).call(b),P.select(".nv-regressionLinesWrap").attr("clip-path","url(#nv-edge-clip-"+b.id()+")");var T=P.select(".nv-regressionLinesWrap").selectAll(".nv-regLines").data(function(a){return a});T.enter().append("g").attr("class","nv-regLines");var U=T.selectAll(".nv-regLine").data(function(a){return[a]});U.enter().append("line").attr("class","nv-regLine").style("stroke-opacity",0);U.transition().attr("x1",n.range()[0]).attr("x2",n.range()[1]).attr("y1",function(a,b){return o(n.domain()[0]*a.slope+a.intercept)}).attr("y2",function(a,b){return o(n.domain()[1]*a.slope+a.intercept)}).style("stroke",function(a,b,c){return m(a,c)}).style("stroke-opacity",function(a,b){return a.disabled||"undefined"==typeof a.slope||"undefined"==typeof a.intercept?0:1}),s&&(d.scale(n).ticks(d.ticks()?d.ticks():L/100).tickSize(-M,0),S.select(".nv-x.nv-axis").attr("transform","translate(0,"+o.range()[0]+")").call(d)),t&&(e.scale(o).ticks(e.ticks()?e.ticks():M/36).tickSize(-L,0),S.select(".nv-y.nv-axis").call(e)),p&&(h.getData(b.x()).scale(n).width(L).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),R.select(".nv-distWrap").append("g").attr("class","nv-distributionX"),S.select(".nv-distributionX").attr("transform","translate(0,"+o.range()[0]+")").datum(c.filter(function(a){return!a.disabled})).call(h)),q&&(i.getData(b.y()).scale(o).width(M).color(c.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!c[b].disabled})),R.select(".nv-distWrap").append("g").attr("class","nv-distributionY"),S.select(".nv-distributionY").attr("transform","translate("+(u?L:-i.size())+",0)").datum(c.filter(function(a){return!a.disabled})).call(i)),d3.fisheye&&(S.select(".nv-background").attr("width",L).attr("height",M),S.select(".nv-background").on("mousemove",z),S.select(".nv-background").on("click",function(){x=!x}),b.dispatch.on("elementClick.freezeFisheye",function(){x=!x})),g.dispatch.on("legendClick",function(c,f){c.disabled=!c.disabled,w=c.disabled?0:2.5,S.select(".nv-background").style("pointer-events",c.disabled?"none":"all"),S.select(".nv-point-paths").style("pointer-events",c.disabled?"all":"none"),c.disabled?(n.distortion(w).focus(0),o.distortion(w).focus(0),S.select(".nv-scatterWrap").call(b),S.select(".nv-x.nv-axis").call(d),S.select(".nv-y.nv-axis").call(e)):x=!1,a.update()}),f.dispatch.on("stateChange",function(b){C=b,E.stateChange(C),a.update()}),b.dispatch.on("elementMouseover.tooltip",function(a){d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",a.pos[1]-M),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",a.pos[0]+h.size()),a.pos=[a.pos[0]+j.left,a.pos[1]+j.top],E.tooltipShow(a)}),E.on("tooltipShow",function(a){y&&J(a,B.parentNode)}),E.on("changeState",function(b){"undefined"!=typeof b.disabled&&(c.forEach(function(a,c){a.disabled=b.disabled[c]}),C.disabled=b.disabled),a.update()}),H=n.copy(),I=o.copy()}),a}var b=c.models.scatter(),d=c.models.axis(),e=c.models.axis(),f=c.models.legend(),g=c.models.legend(),h=c.models.distribution(),i=c.models.distribution(),j={top:30,right:20,bottom:50,left:75},k=null,l=null,m=c.utils.defaultColor(),n=d3.fisheye?d3.fisheye.scale(d3.scale.linear).distortion(0):b.xScale(),o=d3.fisheye?d3.fisheye.scale(d3.scale.linear).distortion(0):b.yScale(),p=!1,q=!1,r=!0,s=!0,t=!0,u=!1,v=!!d3.fisheye,w=0,x=!1,y=!0,z=function(a,b,c){return"<strong>"+b+"</strong>"},A=function(a,b,c){return"<strong>"+c+"</strong>"},B=function(a,b,c,d){return"<h3>"+a+"</h3><p>"+d+"</p>"},C={},D=null,E=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),F="No Data Available.",G=250;b.xScale(n).yScale(o),d.orient("bottom").tickPadding(10),e.orient(u?"right":"left").tickPadding(10),h.axis("x"),i.axis("y"),g.updateState(!1);var H,I,J=function(f,g){var h=f.pos[0]+(g.offsetLeft||0),i=f.pos[1]+(g.offsetTop||0),k=f.pos[0]+(g.offsetLeft||0),l=o.range()[0]+j.top+(g.offsetTop||0),m=n.range()[0]+j.left+(g.offsetLeft||0),p=f.pos[1]+(g.offsetTop||0),q=d.tickFormat()(b.x()(f.point,f.pointIndex)),r=e.tickFormat()(b.y()(f.point,f.pointIndex));null!=z&&c.tooltip.show([k,l],z(f.series.key,q,r,f,a),"n",1,g,"x-nvtooltip"),null!=A&&c.tooltip.show([m,p],A(f.series.key,q,r,f,a),"e",1,g,"y-nvtooltip"),null!=B&&c.tooltip.show([h,i],B(f.series.key,q,r,f.point.tooltip,f,a),f.value<0?"n":"s",null,g)},K=[{key:"Magnify",disabled:!0}];return b.dispatch.on("elementMouseout.tooltip",function(a){E.tooltipHide(a),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",0),d3.select(".nv-chart-"+b.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",i.size())}),E.on("tooltipHide",function(){y&&c.tooltip.cleanup()}),a.dispatch=E,a.scatter=b,a.legend=f,a.controls=g,a.xAxis=d,a.yAxis=e,a.distX=h,a.distY=i,d3.rebind(a,b,"id","interactive","pointActive","x","y","shape","size","xScale","yScale","zScale","xDomain","yDomain","xRange","yRange","sizeDomain","sizeRange","forceX","forceY","forceSize","clipVoronoi","clipRadius","useVoronoi"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(j.top="undefined"!=typeof b.top?b.top:j.top,j.right="undefined"!=typeof b.right?b.right:j.right,j.bottom="undefined"!=typeof b.bottom?b.bottom:j.bottom,j.left="undefined"!=typeof b.left?b.left:j.left,a):j},a.width=function(b){return arguments.length?(k=b,a):k},a.height=function(b){return arguments.length?(l=b,a):l},a.color=function(b){return arguments.length?(m=c.utils.getColor(b),f.color(m),h.color(m),i.color(m),a):m},a.showDistX=function(b){return arguments.length?(p=b,a):p},a.showDistY=function(b){return arguments.length?(q=b,a):q},a.showControls=function(b){return arguments.length?(v=b,a):v},a.showLegend=function(b){return arguments.length?(r=b,a):r},a.showXAxis=function(b){return arguments.length?(s=b,a):s},a.showYAxis=function(b){return arguments.length?(t=b,a):t},a.rightAlignYAxis=function(b){return arguments.length?(u=b,e.orient(b?"right":"left"),a):u},a.fisheye=function(b){return arguments.length?(w=b,a):w},a.tooltips=function(b){return arguments.length?(y=b,a):y},a.tooltipContent=function(b){return arguments.length?(B=b,a):B},a.tooltipXContent=function(b){return arguments.length?(z=b,a):z},a.tooltipYContent=function(b){return arguments.length?(A=b,a):A},a.state=function(b){return arguments.length?(C=b,a):C},a.defaultState=function(b){return arguments.length?(D=b,a):D},a.noData=function(b){return arguments.length?(F=b,a):F},a.transitionDuration=function(b){return arguments.length?(G=b,a):G},a},c.models.sparkline=function(){"use strict";function a(c){return c.each(function(a){var c=h-g.left-g.right,j=i-g.top-g.bottom,p=d3.select(this);k.domain(b||d3.extent(a,m)).range(e||[0,c]),l.domain(d||d3.extent(a,n)).range(f||[j,0]);var q=p.selectAll("g.nv-wrap.nv-sparkline").data([a]),r=q.enter().append("g").attr("class","nvd3 nv-wrap nv-sparkline");r.append("g"),q.select("g");q.attr("transform","translate("+g.left+","+g.top+")");var s=q.selectAll("path").data(function(a){return[a]});s.enter().append("path"),s.exit().remove(),s.style("stroke",function(a,b){return a.color||o(a,b)}).attr("d",d3.svg.line().x(function(a,b){return k(m(a,b))}).y(function(a,b){return l(n(a,b))}));var t=q.selectAll("circle.nv-point").data(function(a){function b(b){if(-1!=b){var c=a[b];return c.pointIndex=b,c}return null}var c=a.map(function(a,b){return n(a,b)}),d=b(c.lastIndexOf(l.domain()[1])),e=b(c.indexOf(l.domain()[0])),f=b(c.length-1);return[e,d,f].filter(function(a){return null!=a})});t.enter().append("circle"),t.exit().remove(),t.attr("cx",function(a,b){return k(m(a,a.pointIndex))}).attr("cy",function(a,b){return l(n(a,a.pointIndex))}).attr("r",2).attr("class",function(a,b){return m(a,a.pointIndex)==k.domain()[1]?"nv-point nv-currentValue":n(a,a.pointIndex)==l.domain()[0]?"nv-point nv-minValue":"nv-point nv-maxValue"})}),a}var b,d,e,f,g={top:2,right:0,bottom:2,left:0},h=400,i=32,j=!0,k=d3.scale.linear(),l=d3.scale.linear(),m=function(a){return a.x},n=function(a){return a.y},o=c.utils.getColor(["#000"]);return a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(g.top="undefined"!=typeof b.top?b.top:g.top,g.right="undefined"!=typeof b.right?b.right:g.right,g.bottom="undefined"!=typeof b.bottom?b.bottom:g.bottom,g.left="undefined"!=typeof b.left?b.left:g.left,a):g},a.width=function(b){return arguments.length?(h=b,a):h},a.height=function(b){return arguments.length?(i=b,a):i},a.x=function(b){return arguments.length?(m=d3.functor(b),a):m},a.y=function(b){return arguments.length?(n=d3.functor(b),a):n},a.xScale=function(b){return arguments.length?(k=b,a):k},a.yScale=function(b){return arguments.length?(l=b,a):l},a.xDomain=function(c){return arguments.length?(b=c,a):b},a.yDomain=function(b){return arguments.length?(d=b,a):d},a.xRange=function(b){return arguments.length?(e=b,a):e},a.yRange=function(b){return arguments.length?(f=b,a):f},a.animate=function(b){return arguments.length?(j=b,a):j},a.color=function(b){return arguments.length?(o=c.utils.getColor(b),a):o},a},c.models.sparklinePlus=function(){"use strict";function a(c){return c.each(function(m){function q(){if(!j){var a=A.selectAll(".nv-hoverValue").data(i),c=a.enter().append("g").attr("class","nv-hoverValue").style("stroke-opacity",0).style("fill-opacity",0);a.exit().transition().duration(250).style("stroke-opacity",0).style("fill-opacity",0).remove(),a.attr("transform",function(a){return"translate("+b(e.x()(m[a],a))+",0)"}).transition().duration(250).style("stroke-opacity",1).style("fill-opacity",1),i.length&&(c.append("line").attr("x1",0).attr("y1",-f.top).attr("x2",0).attr("y2",u),c.append("text").attr("class","nv-xValue").attr("x",-6).attr("y",-f.top).attr("text-anchor","end").attr("dy",".9em"),A.select(".nv-hoverValue .nv-xValue").text(k(e.x()(m[i[0]],i[0]))),c.append("text").attr("class","nv-yValue").attr("x",6).attr("y",-f.top).attr("text-anchor","start").attr("dy",".9em"),A.select(".nv-hoverValue .nv-yValue").text(l(e.y()(m[i[0]],i[0]))))}}function r(){function a(a,b){for(var c=Math.abs(e.x()(a[0],0)-b),d=0,f=0;f<a.length;f++)Math.abs(e.x()(a[f],f)-b)<c&&(c=Math.abs(e.x()(a[f],f)-b),d=f);return d}if(!j){var c=d3.mouse(this)[0]-f.left;i=[a(m,Math.round(b.invert(c)))],q()}}var s=d3.select(this),t=(g||parseInt(s.style("width"))||960)-f.left-f.right,u=(h||parseInt(s.style("height"))||400)-f.top-f.bottom;if(a.update=function(){a(c)},a.container=this,!m||!m.length){var v=s.selectAll(".nv-noData").data([p]);return v.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),v.attr("x",f.left+t/2).attr("y",f.top+u/2).text(function(a){return a}),a}s.selectAll(".nv-noData").remove();var w=e.y()(m[m.length-1],m.length-1);b=e.xScale(),d=e.yScale();var x=s.selectAll("g.nv-wrap.nv-sparklineplus").data([m]),y=x.enter().append("g").attr("class","nvd3 nv-wrap nv-sparklineplus"),z=y.append("g"),A=x.select("g");z.append("g").attr("class","nv-sparklineWrap"),z.append("g").attr("class","nv-valueWrap"),z.append("g").attr("class","nv-hoverArea"),x.attr("transform","translate("+f.left+","+f.top+")");var B=A.select(".nv-sparklineWrap");e.width(t).height(u),B.call(e);var C=A.select(".nv-valueWrap"),D=C.selectAll(".nv-currentValue").data([w]);D.enter().append("text").attr("class","nv-currentValue").attr("dx",o?-8:8).attr("dy",".9em").style("text-anchor",o?"end":"start"),D.attr("x",t+(o?f.right:0)).attr("y",n?function(a){return d(a)}:0).style("fill",e.color()(m[m.length-1],m.length-1)).text(l(w)),z.select(".nv-hoverArea").append("rect").on("mousemove",r).on("click",function(){j=!j}).on("mouseout",function(){i=[],q()}),A.select(".nv-hoverArea rect").attr("transform",function(a){return"translate("+-f.left+","+-f.top+")"}).attr("width",t+f.left+f.right).attr("height",u+f.top)}),a}var b,d,e=c.models.sparkline(),f={top:15,right:100,bottom:10,left:50},g=null,h=null,i=[],j=!1,k=d3.format(",r"),l=d3.format(",.2f"),m=!0,n=!0,o=!1,p="No Data Available.";return a.sparkline=e,d3.rebind(a,e,"x","y","xScale","yScale","color"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(f.top="undefined"!=typeof b.top?b.top:f.top,f.right="undefined"!=typeof b.right?b.right:f.right,f.bottom="undefined"!=typeof b.bottom?b.bottom:f.bottom,f.left="undefined"!=typeof b.left?b.left:f.left,a):f},a.width=function(b){return arguments.length?(g=b,a):g},a.height=function(b){return arguments.length?(h=b,a):h},a.xTickFormat=function(b){return arguments.length?(k=b,a):k},a.yTickFormat=function(b){return arguments.length?(l=b,a):l},a.showValue=function(b){return arguments.length?(m=b,a):m},a.alignValue=function(b){return arguments.length?(n=b,a):n},a.rightAlignValue=function(b){return arguments.length?(o=b,a):o},a.noData=function(b){return arguments.length?(p=b,a):p},a},c.models.stackedArea=function(){"use strict";function a(c){return c.each(function(c){var l=f-e.left-e.right,s=g-e.top-e.bottom,t=d3.select(this);b=q.xScale(),d=q.yScale();var u=c;c.forEach(function(a,b){a.seriesIndex=b,a.values=a.values.map(function(a,c){return a.index=c,a.seriesIndex=b,a})});var v=c.filter(function(a){return!a.disabled});c=d3.layout.stack().order(n).offset(m).values(function(a){return a.values}).x(j).y(k).out(function(a,b,c){var d=0===k(a)?0:c;a.display={y:d,y0:b}})(v);var w=t.selectAll("g.nv-wrap.nv-stackedarea").data([c]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedarea"),y=x.append("defs"),z=x.append("g"),A=w.select("g");z.append("g").attr("class","nv-areaWrap"),z.append("g").attr("class","nv-scatterWrap"),w.attr("transform","translate("+e.left+","+e.top+")"),q.width(l).height(s).x(j).y(function(a){return a.display.y+a.display.y0}).forceY([0]).color(c.map(function(a,b){return a.color||h(a,a.seriesIndex)}));var B=A.select(".nv-scatterWrap").datum(c);B.call(q),y.append("clipPath").attr("id","nv-edge-clip-"+i).append("rect"),w.select("#nv-edge-clip-"+i+" rect").attr("width",l).attr("height",s),A.attr("clip-path",p?"url(#nv-edge-clip-"+i+")":"");var C=d3.svg.area().x(function(a,c){return b(j(a,c))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y+a.display.y0)}).interpolate(o),D=d3.svg.area().x(function(a,c){return b(j(a,c))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y0)}),E=A.select(".nv-areaWrap").selectAll("path.nv-area").data(function(a){return a});E.enter().append("path").attr("class",function(a,b){return"nv-area nv-area-"+b}).attr("d",function(a,b){return D(a.values,a.seriesIndex)}).on("mouseover",function(a,b){d3.select(this).classed("hover",!0),r.areaMouseover({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),r.areaMouseout({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("click",function(a,b){d3.select(this).classed("hover",!1),r.areaClick({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}),E.exit().remove(),E.style("fill",function(a,b){return a.color||h(a,a.seriesIndex)}).style("stroke",function(a,b){return a.color||h(a,a.seriesIndex)}),E.transition().attr("d",function(a,b){return C(a.values,b)}),q.dispatch.on("elementMouseover.area",function(a){A.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!0)}),q.dispatch.on("elementMouseout.area",function(a){A.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!1)}),a.d3_stackedOffset_stackPercent=function(a){var b,c,d,e=a.length,f=a[0].length,g=1/e,h=[];for(c=0;f>c;++c){for(b=0,d=0;b<u.length;b++)d+=k(u[b].values[c]);if(d)for(b=0;e>b;b++)a[b][c][1]/=d;else for(b=0;e>b;b++)a[b][c][1]=g}for(c=0;f>c;++c)h[c]=0;return h}}),a}var b,d,e={top:0,right:0,bottom:0,left:0},f=960,g=500,h=c.utils.defaultColor(),i=Math.floor(1e5*Math.random()),j=function(a){return a.x},k=function(a){return a.y},l="stack",m="zero",n="default",o="linear",p=!1,q=c.models.scatter(),r=d3.dispatch("tooltipShow","tooltipHide","areaClick","areaMouseover","areaMouseout");return q.size(2.2).sizeDomain([2.2,2.2]),q.dispatch.on("elementClick.area",function(a){r.areaClick(a)}),q.dispatch.on("elementMouseover.tooltip",function(a){a.pos=[a.pos[0]+e.left,a.pos[1]+e.top],r.tooltipShow(a)}),q.dispatch.on("elementMouseout.tooltip",function(a){r.tooltipHide(a)}),a.dispatch=r,a.scatter=q,d3.rebind(a,q,"interactive","size","xScale","yScale","zScale","xDomain","yDomain","xRange","yRange","sizeDomain","forceX","forceY","forceSize","clipVoronoi","useVoronoi","clipRadius","highlightPoint","clearHighlights"),a.options=c.utils.optionsFunc.bind(a),a.x=function(b){return arguments.length?(j=d3.functor(b),a):j},a.y=function(b){return arguments.length?(k=d3.functor(b),a):k},a.margin=function(b){return arguments.length?(e.top="undefined"!=typeof b.top?b.top:e.top,e.right="undefined"!=typeof b.right?b.right:e.right,e.bottom="undefined"!=typeof b.bottom?b.bottom:e.bottom,e.left="undefined"!=typeof b.left?b.left:e.left,a):e},a.width=function(b){return arguments.length?(f=b,a):f},a.height=function(b){return arguments.length?(g=b,a):g},a.clipEdge=function(b){return arguments.length?(p=b,a):p},a.color=function(b){return arguments.length?(h=c.utils.getColor(b),a):h},a.offset=function(b){return arguments.length?(m=b,a):m},a.order=function(b){return arguments.length?(n=b,a):n},a.style=function(b){if(!arguments.length)return l;switch(l=b){case"stack":a.offset("zero"),a.order("default");break;case"stream":a.offset("wiggle"),a.order("inside-out");break;case"stream-center":a.offset("silhouette"),a.order("inside-out");break;case"expand":a.offset("expand"),a.order("default");break;case"stack_percent":a.offset(a.d3_stackedOffset_stackPercent),a.order("default")}return a},a.interpolate=function(b){return arguments.length?(o=b,a):o},a},c.models.stackedAreaChart=function(){"use strict";function a(v){return v.each(function(v){var G=d3.select(this),H=this,I=(l||parseInt(G.style("width"))||960)-k.left-k.right,J=(m||parseInt(G.style("height"))||400)-k.top-k.bottom;if(a.update=function(){G.transition().duration(E).call(a)},a.container=this,x.disabled=v.map(function(a){return!!a.disabled}),!y){var K;y={};for(K in x)x[K]instanceof Array?y[K]=x[K].slice(0):y[K]=x[K]}if(!(v&&v.length&&v.filter(function(a){return a.values.length}).length)){var L=G.selectAll(".nv-noData").data([z]);return L.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),L.attr("x",k.left+I/2).attr("y",k.top+J/2).text(function(a){return a}),a}G.selectAll(".nv-noData").remove(),b=e.xScale(),d=e.yScale();var M=G.selectAll("g.nv-wrap.nv-stackedAreaChart").data([v]),N=M.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedAreaChart").append("g"),O=M.select("g");if(N.append("rect").style("opacity",0),N.append("g").attr("class","nv-x nv-axis"),N.append("g").attr("class","nv-y nv-axis"),N.append("g").attr("class","nv-stackedWrap"),N.append("g").attr("class","nv-legendWrap"),N.append("g").attr("class","nv-controlsWrap"),N.append("g").attr("class","nv-interactive"),O.select("rect").attr("width",I).attr("height",J),p){var P=o?I-B:I;h.width(P),O.select(".nv-legendWrap").datum(v).call(h),k.top!=h.height()&&(k.top=h.height(),J=(m||parseInt(G.style("height"))||400)-k.top-k.bottom),O.select(".nv-legendWrap").attr("transform","translate("+(I-P)+","+-k.top+")")}if(o){var Q=[{key:D.stacked||"Stacked",metaKey:"Stacked",disabled:"stack"!=e.style(),style:"stack"},{key:D.stream||"Stream",metaKey:"Stream",disabled:"stream"!=e.style(),style:"stream"},{key:D.expanded||"Expanded",metaKey:"Expanded",disabled:"expand"!=e.style(),style:"expand"},{key:D.stack_percent||"Stack %",metaKey:"Stack_Percent",disabled:"stack_percent"!=e.style(),style:"stack_percent"}];B=C.length/3*260,Q=Q.filter(function(a){return-1!==C.indexOf(a.metaKey)}),i.width(B).color(["#444","#444","#444"]),O.select(".nv-controlsWrap").datum(Q).call(i),k.top!=Math.max(i.height(),h.height())&&(k.top=Math.max(i.height(),h.height()),J=(m||parseInt(G.style("height"))||400)-k.top-k.bottom),O.select(".nv-controlsWrap").attr("transform","translate(0,"+-k.top+")")}M.attr("transform","translate("+k.left+","+k.top+")"),s&&O.select(".nv-y.nv-axis").attr("transform","translate("+I+",0)"),t&&(j.width(I).height(J).margin({left:k.left,top:k.top}).svgContainer(G).xScale(b),M.select(".nv-interactive").call(j)),e.width(I).height(J);var R=O.select(".nv-stackedWrap").datum(v);R.transition().call(e),q&&(f.scale(b).ticks(I/100).tickSize(-J,0),O.select(".nv-x.nv-axis").attr("transform","translate(0,"+J+")"),O.select(".nv-x.nv-axis").transition().duration(0).call(f)),r&&(g.scale(d).ticks("wiggle"==e.offset()?0:J/36).tickSize(-I,0).setTickFormat("expand"==e.style()||"stack_percent"==e.style()?d3.format("%"):w),O.select(".nv-y.nv-axis").transition().duration(0).call(g)),e.dispatch.on("areaClick.toggle",function(b){1===v.filter(function(a){return!a.disabled}).length?v.forEach(function(a){a.disabled=!1}):v.forEach(function(a,c){a.disabled=c!=b.seriesIndex}),x.disabled=v.map(function(a){return!!a.disabled}),A.stateChange(x),a.update()}),h.dispatch.on("stateChange",function(b){x.disabled=b.disabled,A.stateChange(x),a.update()}),i.dispatch.on("legendClick",function(b,c){b.disabled&&(Q=Q.map(function(a){return a.disabled=!0,a}),b.disabled=!1,e.style(b.style),x.style=e.style(),A.stateChange(x),a.update())}),j.dispatch.on("elementMousemove",function(b){e.clearHighlights();var d,h,i,l=[];if(v.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,g){h=c.interactiveBisect(f.values,b.pointXValue,a.x()),e.highlightPoint(g,h,!0);var j=f.values[h];if("undefined"!=typeof j){"undefined"==typeof d&&(d=j),"undefined"==typeof i&&(i=a.xScale()(a.x()(j,h)));var k="expand"==e.style()?j.display.y:a.y()(j,h);l.push({key:f.key,value:k,color:n(f,f.seriesIndex),stackedValue:j.display})}}),l.reverse(),l.length>2){var m=a.yScale().invert(b.mouseY),o=null;l.forEach(function(a,b){m=Math.abs(m);var c=Math.abs(a.stackedValue.y0),d=Math.abs(a.stackedValue.y);return m>=c&&d+c>=m?void(o=b):void 0}),null!=o&&(l[o].highlight=!0)}var p=f.tickFormat()(a.x()(d,h)),q="expand"==e.style()?function(a,b){return d3.format(".1%")(a)}:function(a,b){return g.tickFormat()(a)};j.tooltip.position({left:i+k.left,top:b.mouseY+k.top}).chartContainer(H.parentNode).enabled(u).valueFormatter(q).data({value:p,series:l})(),j.renderGuideLine(i)}),j.dispatch.on("elementMouseout",function(a){A.tooltipHide(),e.clearHighlights()}),A.on("tooltipShow",function(a){u&&F(a,H.parentNode)}),A.on("changeState",function(b){"undefined"!=typeof b.disabled&&(v.forEach(function(a,c){a.disabled=b.disabled[c]}),x.disabled=b.disabled),"undefined"!=typeof b.style&&e.style(b.style),a.update()})}),a}var b,d,e=c.models.stackedArea(),f=c.models.axis(),g=c.models.axis(),h=c.models.legend(),i=c.models.legend(),j=c.interactiveGuideline(),k={top:30,right:25,bottom:50,left:60},l=null,m=null,n=c.utils.defaultColor(),o=!0,p=!0,q=!0,r=!0,s=!1,t=!1,u=!0,v=function(a,b,c,d,e){return"<h3>"+a+"</h3><p>"+c+" on "+b+"</p>"},w=d3.format(",.2f"),x={style:e.style()},y=null,z="No Data Available.",A=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState"),B=250,C=["Stacked","Stream","Expanded"],D={},E=250;f.orient("bottom").tickPadding(7),g.orient(s?"right":"left"),i.updateState(!1);var F=function(b,d){var h=b.pos[0]+(d.offsetLeft||0),i=b.pos[1]+(d.offsetTop||0),j=f.tickFormat()(e.x()(b.point,b.pointIndex)),k=g.tickFormat()(e.y()(b.point,b.pointIndex)),l=v(b.series.key,j,k,b,a);c.tooltip.show([h,i],l,b.value<0?"n":"s",null,d)};return e.dispatch.on("tooltipShow",function(a){a.pos=[a.pos[0]+k.left,a.pos[1]+k.top],A.tooltipShow(a)}),e.dispatch.on("tooltipHide",function(a){A.tooltipHide(a)}),A.on("tooltipHide",function(){u&&c.tooltip.cleanup()}),a.dispatch=A,a.stacked=e,a.legend=h,a.controls=i,a.xAxis=f,a.yAxis=g,a.interactiveLayer=j,d3.rebind(a,e,"x","y","size","xScale","yScale","xDomain","yDomain","xRange","yRange","sizeDomain","interactive","useVoronoi","offset","order","style","clipEdge","forceX","forceY","forceSize","interpolate"),a.options=c.utils.optionsFunc.bind(a),a.margin=function(b){return arguments.length?(k.top="undefined"!=typeof b.top?b.top:k.top,k.right="undefined"!=typeof b.right?b.right:k.right,k.bottom="undefined"!=typeof b.bottom?b.bottom:k.bottom,k.left="undefined"!=typeof b.left?b.left:k.left,a):k},a.width=function(b){return arguments.length?(l=b,a):l},a.height=function(b){return arguments.length?(m=b,a):m},a.color=function(b){return arguments.length?(n=c.utils.getColor(b),h.color(n),e.color(n),a):n},a.showControls=function(b){return arguments.length?(o=b,a):o},a.showLegend=function(b){return arguments.length?(p=b,a):p},a.showXAxis=function(b){return arguments.length?(q=b,a):q},a.showYAxis=function(b){return arguments.length?(r=b,a):r},a.rightAlignYAxis=function(b){return arguments.length?(s=b,g.orient(b?"right":"left"),a):s},a.useInteractiveGuideline=function(b){return arguments.length?(t=b,b===!0&&(a.interactive(!1),a.useVoronoi(!1)),a):t},a.tooltip=function(b){return arguments.length?(v=b,a):v},a.tooltips=function(b){return arguments.length?(u=b,a):u},a.tooltipContent=function(b){return arguments.length?(v=b,a):v},a.state=function(b){return arguments.length?(x=b,a):x},a.defaultState=function(b){return arguments.length?(y=b,a):y},a.noData=function(b){return arguments.length?(z=b,a):z},a.transitionDuration=function(b){return arguments.length?(E=b,a):E},a.controlsData=function(b){return arguments.length?(C=b,a):C},a.controlLabels=function(b){return arguments.length?"object"!=typeof b?D:(D=b,a):D},g.setTickFormat=g.tickFormat,g.tickFormat=function(a){return arguments.length?(w=a,g):w},a}}();var _slicedToArray=function(){function a(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!b||c.length!==b);d=!0);}catch(i){e=!0,f=i}finally{try{!d&&h["return"]&&h["return"]()}finally{if(e)throw f}}return c}return function(b,c){if(Array.isArray(b))return b;if(Symbol.iterator in Object(b))return a(b,c);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};!function(a,b){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a="undefined"!=typeof globalThis?globalThis:a||self,a.DOMPurify=b())}(void 0,function(){"use strict";function a(a){return function(b){for(var c=arguments.length,d=new Array(c>1?c-1:0),e=1;c>e;e++)d[e-1]=arguments[e];return p(a,b,d)}}function b(a){return function(){for(var b=arguments.length,c=new Array(b),d=0;b>d;d++)c[d]=arguments[d];return q(a,c)}}function c(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:u;h&&h(a,null);for(var d=b.length;d--;){var e=b[d];if("string"==typeof e){var f=c(e);f!==e&&(i(b)||(b[d]=f),e=f)}a[e]=!0}return a}function d(a){var b=n(null),c=!0,d=!1,e=void 0;try{for(var f,h=g(a)[Symbol.iterator]();!(c=(f=h.next()).done);c=!0){var i=f.value,j=_slicedToArray(i,2),k=j[0],l=j[1];b[k]=l}}catch(m){d=!0,e=m}finally{try{!c&&h["return"]&&h["return"]()}finally{if(d)throw e}}return b}function e(b,c){function d(a){return console.warn("fallback value for",a),null}for(;null!==b;){var e=k(b,c);if(e){if(e.get)return a(e.get);if("function"==typeof e.value)return a(e.value)}b=j(b)}return d}function f(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:X(),b=function(a){return f(a)};if(b.version="3.0.5",b.removed=[],!a||!a.document||9!==a.document.nodeType)return b.isSupported=!1,b;var h=a.document,i=h,j=i.currentScript,k=a.DocumentFragment,m=a.HTMLTemplateElement,o=a.Node,p=a.Element,q=a.NodeFilter,N=a.NamedNodeMap,O=void 0===N?a.NamedNodeMap||a.MozNamedAttrMap:N,P=a.HTMLFormElement,Q=a.DOMParser,R=a.trustedTypes,T=p.prototype,U=e(T,"cloneNode"),Z=e(T,"nextSibling"),$=e(T,"childNodes"),_=e(T,"parentNode");if("function"==typeof m){var aa=h.createElement("template");aa.content&&aa.content.ownerDocument&&(h=aa.content.ownerDocument)}var ba=void 0,ca="",da=h,ea=da.implementation,fa=da.createNodeIterator,ga=da.createDocumentFragment,ha=da.getElementsByTagName,ia=i.importNode,ja={};b.isSupported="function"==typeof g&&"function"==typeof _&&ea&&void 0!==ea.createHTMLDocument;var ka=W.MUSTACHE_EXPR,la=W.ERB_EXPR,ma=W.TMPLIT_EXPR,na=W.DATA_ATTR,oa=W.ARIA_ATTR,pa=W.IS_SCRIPT_OR_DATA,qa=W.ATTR_WHITESPACE,ra=W.IS_ALLOWED_URI,sa=null,ta=c({},[].concat(_toConsumableArray(C),_toConsumableArray(D),_toConsumableArray(E),_toConsumableArray(G),_toConsumableArray(I))),ua=null,va=c({},[].concat(_toConsumableArray(J),_toConsumableArray(K),_toConsumableArray(L),_toConsumableArray(M))),wa=Object.seal(n(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),xa=null,ya=null,za=!0,Aa=!0,Ba=!1,Ca=!0,Da=!1,Ea=!1,Fa=!1,Ga=!1,Ha=!1,Ia=!1,Ja=!1,Ka=!0,La=!1,Ma="user-content-",Na=!0,Oa=!1,Pa={},Qa=null,Ra=c({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Sa=null,Ta=c({},["audio","video","img","source","image","track"]),Ua=null,Va=c({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Wa="http://www.w3.org/1998/Math/MathML",Xa="http://www.w3.org/2000/svg",Ya="http://www.w3.org/1999/xhtml",Za=Ya,$a=!1,_a=null,ab=c({},[Wa,Xa,Ya],v),bb=null,cb=["application/xhtml+xml","text/html"],db="text/html",eb=null,fb=null,gb=h.createElement("form"),hb=function(a){return a instanceof RegExp||a instanceof Function},ib=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!fb||fb!==a){if(a&&"object"===("undefined"==typeof a?"undefined":_typeof(a))||(a={}),a=d(a),bb=bb=-1===cb.indexOf(a.PARSER_MEDIA_TYPE)?db:a.PARSER_MEDIA_TYPE,eb="application/xhtml+xml"===bb?v:u,sa="ALLOWED_TAGS"in a?c({},a.ALLOWED_TAGS,eb):ta,ua="ALLOWED_ATTR"in a?c({},a.ALLOWED_ATTR,eb):va,
+_a="ALLOWED_NAMESPACES"in a?c({},a.ALLOWED_NAMESPACES,v):ab,Ua="ADD_URI_SAFE_ATTR"in a?c(d(Va),a.ADD_URI_SAFE_ATTR,eb):Va,Sa="ADD_DATA_URI_TAGS"in a?c(d(Ta),a.ADD_DATA_URI_TAGS,eb):Ta,Qa="FORBID_CONTENTS"in a?c({},a.FORBID_CONTENTS,eb):Ra,xa="FORBID_TAGS"in a?c({},a.FORBID_TAGS,eb):{},ya="FORBID_ATTR"in a?c({},a.FORBID_ATTR,eb):{},Pa="USE_PROFILES"in a?a.USE_PROFILES:!1,za=a.ALLOW_ARIA_ATTR!==!1,Aa=a.ALLOW_DATA_ATTR!==!1,Ba=a.ALLOW_UNKNOWN_PROTOCOLS||!1,Ca=a.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Da=a.SAFE_FOR_TEMPLATES||!1,Ea=a.WHOLE_DOCUMENT||!1,Ha=a.RETURN_DOM||!1,Ia=a.RETURN_DOM_FRAGMENT||!1,Ja=a.RETURN_TRUSTED_TYPE||!1,Ga=a.FORCE_BODY||!1,Ka=a.SANITIZE_DOM!==!1,La=a.SANITIZE_NAMED_PROPS||!1,Na=a.KEEP_CONTENT!==!1,Oa=a.IN_PLACE||!1,ra=a.ALLOWED_URI_REGEXP||S,Za=a.NAMESPACE||Ya,wa=a.CUSTOM_ELEMENT_HANDLING||{},a.CUSTOM_ELEMENT_HANDLING&&hb(a.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(wa.tagNameCheck=a.CUSTOM_ELEMENT_HANDLING.tagNameCheck),a.CUSTOM_ELEMENT_HANDLING&&hb(a.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(wa.attributeNameCheck=a.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),a.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof a.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(wa.allowCustomizedBuiltInElements=a.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Da&&(Aa=!1),Ia&&(Ha=!0),Pa&&(sa=c({},[].concat(_toConsumableArray(I))),ua=[],Pa.html===!0&&(c(sa,C),c(ua,J)),Pa.svg===!0&&(c(sa,D),c(ua,K),c(ua,M)),Pa.svgFilters===!0&&(c(sa,E),c(ua,K),c(ua,M)),Pa.mathMl===!0&&(c(sa,G),c(ua,L),c(ua,M))),a.ADD_TAGS&&(sa===ta&&(sa=d(sa)),c(sa,a.ADD_TAGS,eb)),a.ADD_ATTR&&(ua===va&&(ua=d(ua)),c(ua,a.ADD_ATTR,eb)),a.ADD_URI_SAFE_ATTR&&c(Ua,a.ADD_URI_SAFE_ATTR,eb),a.FORBID_CONTENTS&&(Qa===Ra&&(Qa=d(Qa)),c(Qa,a.FORBID_CONTENTS,eb)),Na&&(sa["#text"]=!0),Ea&&c(sa,["html","head","body"]),sa.table&&(c(sa,["tbody"]),delete xa.tbody),a.TRUSTED_TYPES_POLICY){if("function"!=typeof a.TRUSTED_TYPES_POLICY.createHTML)throw B('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof a.TRUSTED_TYPES_POLICY.createScriptURL)throw B('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ba=a.TRUSTED_TYPES_POLICY,ca=ba.createHTML("")}else void 0===ba&&(ba=Y(R,j)),null!==ba&&"string"==typeof ca&&(ca=ba.createHTML(""));l&&l(a),fb=a}},jb=c({},["mi","mo","mn","ms","mtext"]),kb=c({},["foreignobject","desc","title","annotation-xml"]),lb=c({},["title","style","font","a","script"]),mb=c({},D);c(mb,E),c(mb,F);var nb=c({},G);c(nb,H);var ob=function(a){var b=_(a);b&&b.tagName||(b={namespaceURI:Za,tagName:"template"});var c=u(a.tagName),d=u(b.tagName);return _a[a.namespaceURI]?a.namespaceURI===Xa?b.namespaceURI===Ya?"svg"===c:b.namespaceURI===Wa?"svg"===c&&("annotation-xml"===d||jb[d]):Boolean(mb[c]):a.namespaceURI===Wa?b.namespaceURI===Ya?"math"===c:b.namespaceURI===Xa?"math"===c&&kb[d]:Boolean(nb[c]):a.namespaceURI===Ya?(b.namespaceURI!==Xa||kb[d])&&(b.namespaceURI!==Wa||jb[d])?!nb[c]&&(lb[c]||!mb[c]):!1:"application/xhtml+xml"===bb&&_a[a.namespaceURI]?!0:!1:!1},pb=function(a){t(b.removed,{element:a});try{a.parentNode.removeChild(a)}catch(c){a.remove()}},qb=function(a,c){try{t(b.removed,{attribute:c.getAttributeNode(a),from:c})}catch(d){t(b.removed,{attribute:null,from:c})}if(c.removeAttribute(a),"is"===a&&!ua[a])if(Ha||Ia)try{pb(c)}catch(d){}else try{c.setAttribute(a,"")}catch(d){}},rb=function(a){var b=null,c=null;if(Ga)a="<remove></remove>"+a;else{var d=w(a,/^[\r\n\t ]+/);c=d&&d[0]}"application/xhtml+xml"===bb&&Za===Ya&&(a='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+a+"</body></html>");var e=ba?ba.createHTML(a):a;if(Za===Ya)try{b=(new Q).parseFromString(e,bb)}catch(f){}if(!b||!b.documentElement){b=ea.createDocument(Za,"template",null);try{b.documentElement.innerHTML=$a?ca:e}catch(f){}}var g=b.body||b.documentElement;return a&&c&&g.insertBefore(h.createTextNode(c),g.childNodes[0]||null),Za===Ya?ha.call(b,Ea?"html":"body")[0]:Ea?b.documentElement:g},sb=function(a){return fa.call(a.ownerDocument||a,a,q.SHOW_ELEMENT|q.SHOW_COMMENT|q.SHOW_TEXT,null)},tb=function(a){return a instanceof P&&("string"!=typeof a.nodeName||"string"!=typeof a.textContent||"function"!=typeof a.removeChild||!(a.attributes instanceof O)||"function"!=typeof a.removeAttribute||"function"!=typeof a.setAttribute||"string"!=typeof a.namespaceURI||"function"!=typeof a.insertBefore||"function"!=typeof a.hasChildNodes)},ub=function(a){return"function"==typeof o&&a instanceof o},vb=function(a,c,d){ja[a]&&r(ja[a],function(a){a.call(b,c,d,fb)})},wb=function(a){var c=null;if(vb("beforeSanitizeElements",a,null),tb(a))return pb(a),!0;var d=eb(a.nodeName);if(vb("uponSanitizeElement",a,{tagName:d,allowedTags:sa}),a.hasChildNodes()&&!ub(a.firstElementChild)&&A(/<[/\w]/g,a.innerHTML)&&A(/<[/\w]/g,a.textContent))return pb(a),!0;if(!sa[d]||xa[d]){if(!xa[d]&&yb(d)){if(wa.tagNameCheck instanceof RegExp&&A(wa.tagNameCheck,d))return!1;if(wa.tagNameCheck instanceof Function&&wa.tagNameCheck(d))return!1}if(Na&&!Qa[d]){var e=_(a)||a.parentNode,f=$(a)||a.childNodes;if(f&&e)for(var g=f.length,h=g-1;h>=0;--h)e.insertBefore(U(f[h],!0),Z(a))}return pb(a),!0}return a instanceof p&&!ob(a)?(pb(a),!0):"noscript"!==d&&"noembed"!==d&&"noframes"!==d||!A(/<\/no(script|embed|frames)/i,a.innerHTML)?(Da&&3===a.nodeType&&(c=a.textContent,r([ka,la,ma],function(a){c=x(c,a," ")}),a.textContent!==c&&(t(b.removed,{element:a.cloneNode()}),a.textContent=c)),vb("afterSanitizeElements",a,null),!1):(pb(a),!0)},xb=function(a,b,c){if(Ka&&("id"===b||"name"===b)&&(c in h||c in gb))return!1;if(Aa&&!ya[b]&&A(na,b));else if(za&&A(oa,b));else if(!ua[b]||ya[b]){if(!(yb(a)&&(wa.tagNameCheck instanceof RegExp&&A(wa.tagNameCheck,a)||wa.tagNameCheck instanceof Function&&wa.tagNameCheck(a))&&(wa.attributeNameCheck instanceof RegExp&&A(wa.attributeNameCheck,b)||wa.attributeNameCheck instanceof Function&&wa.attributeNameCheck(b))||"is"===b&&wa.allowCustomizedBuiltInElements&&(wa.tagNameCheck instanceof RegExp&&A(wa.tagNameCheck,c)||wa.tagNameCheck instanceof Function&&wa.tagNameCheck(c))))return!1}else if(Ua[b]);else if(A(ra,x(c,qa,"")));else if("src"!==b&&"xlink:href"!==b&&"href"!==b||"script"===a||0!==y(c,"data:")||!Sa[a]){if(Ba&&!A(pa,x(c,qa,"")));else if(c)return!1}else;return!0},yb=function(a){return a.indexOf("-")>0},zb=function(a){vb("beforeSanitizeAttributes",a,null);var c=a.attributes;if(c){for(var d={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ua},e=c.length,f=function(){var f=c[e],g=f.name,h=f.namespaceURI,i=f.value,j=eb(g),k="value"===g?i:z(i);if(d.attrName=j,d.attrValue=k,d.keepAttr=!0,d.forceKeepAttr=void 0,vb("uponSanitizeAttribute",a,d),k=d.attrValue,d.forceKeepAttr)return"continue";if(qb(g,a),!d.keepAttr)return"continue";if(!Ca&&A(/\/>/i,k))return qb(g,a),"continue";Da&&r([ka,la,ma],function(a){k=x(k,a," ")});var l=eb(a.nodeName);if(!xb(l,j,k))return"continue";if(!La||"id"!==j&&"name"!==j||(qb(g,a),k=Ma+k),ba&&"object"===("undefined"==typeof R?"undefined":_typeof(R))&&"function"==typeof R.getAttributeType)if(h);else switch(R.getAttributeType(l,j)){case"TrustedHTML":k=ba.createHTML(k);break;case"TrustedScriptURL":k=ba.createScriptURL(k)}try{h?a.setAttributeNS(h,g,k):a.setAttribute(g,k),s(b.removed)}catch(m){}};e--;){f()}vb("afterSanitizeAttributes",a,null)}},Ab=function Bb(a){var b=null,c=sb(a);for(vb("beforeSanitizeShadowDOM",a,null);b=c.nextNode();)vb("uponSanitizeShadowNode",b,null),wb(b)||(b.content instanceof k&&Bb(b.content),zb(b));vb("afterSanitizeShadowDOM",a,null)};return b.sanitize=function(a){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=null,e=null,f=null,g=null;if($a=!a,$a&&(a="<!-->"),"string"!=typeof a&&!ub(a)){if("function"!=typeof a.toString)throw B("toString is not a function");if(a=a.toString(),"string"!=typeof a)throw B("dirty is not a string, aborting")}if(!b.isSupported)return a;if(Fa||ib(c),b.removed=[],"string"==typeof a&&(Oa=!1),Oa){if(a.nodeName){var h=eb(a.nodeName);if(!sa[h]||xa[h])throw B("root node is forbidden and cannot be sanitized in-place")}}else if(a instanceof o)d=rb("<!---->"),e=d.ownerDocument.importNode(a,!0),1===e.nodeType&&"BODY"===e.nodeName?d=e:"HTML"===e.nodeName?d=e:d.appendChild(e);else{if(!Ha&&!Da&&!Ea&&-1===a.indexOf("<"))return ba&&Ja?ba.createHTML(a):a;if(d=rb(a),!d)return Ha?null:Ja?ca:""}d&&Ga&&pb(d.firstChild);for(var j=sb(Oa?a:d);f=j.nextNode();)wb(f)||(f.content instanceof k&&Ab(f.content),zb(f));if(Oa)return a;if(Ha){if(Ia)for(g=ga.call(d.ownerDocument);d.firstChild;)g.appendChild(d.firstChild);else g=d;return(ua.shadowroot||ua.shadowrootmode)&&(g=ia.call(i,g,!0)),g}var l=Ea?d.outerHTML:d.innerHTML;return Ea&&sa["!doctype"]&&d.ownerDocument&&d.ownerDocument.doctype&&d.ownerDocument.doctype.name&&A(V,d.ownerDocument.doctype.name)&&(l="<!DOCTYPE "+d.ownerDocument.doctype.name+">\n"+l),Da&&r([ka,la,ma],function(a){l=x(l,a," ")}),ba&&Ja?ba.createHTML(l):l},b.setConfig=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ib(a),Fa=!0},b.clearConfig=function(){fb=null,Fa=!1},b.isValidAttribute=function(a,b,c){fb||ib({});var d=eb(a),e=eb(b);return xb(d,e,c)},b.addHook=function(a,b){"function"==typeof b&&(ja[a]=ja[a]||[],t(ja[a],b))},b.removeHook=function(a){return ja[a]?s(ja[a]):void 0},b.removeHooks=function(a){ja[a]&&(ja[a]=[])},b.removeAllHooks=function(){ja={}},b}var g=Object.entries,h=Object.setPrototypeOf,i=Object.isFrozen,j=Object.getPrototypeOf,k=Object.getOwnPropertyDescriptor,l=Object.freeze,m=Object.seal,n=Object.create,o="undefined"!=typeof Reflect&&Reflect,p=o.apply,q=o.construct;l||(l=function(a){return a}),m||(m=function(a){return a}),p||(p=function(a,b,c){return a.apply(b,c)}),q||(q=function(a,b){return new(Function.prototype.bind.apply(a,[null].concat(_toConsumableArray(b))))});var r=a(Array.prototype.forEach),s=a(Array.prototype.pop),t=a(Array.prototype.push),u=a(String.prototype.toLowerCase),v=a(String.prototype.toString),w=a(String.prototype.match),x=a(String.prototype.replace),y=a(String.prototype.indexOf),z=a(String.prototype.trim),A=a(RegExp.prototype.test),B=b(TypeError),C=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),D=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),E=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),F=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),G=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),H=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),I=l(["#text"]),J=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),K=l(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),L=l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),M=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),N=m(/\{\{[\w\W]*|[\w\W]*\}\}/gm),O=m(/<%[\w\W]*|[\w\W]*%>/gm),P=m(/\${[\w\W]*}/gm),Q=m(/^data-[\-\w.\u00B7-\uFFFF]/),R=m(/^aria-[\-\w]+$/),S=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),T=m(/^(?:\w+script|data):/i),U=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),V=m(/^html$/i),W=Object.freeze({__proto__:null,MUSTACHE_EXPR:N,ERB_EXPR:O,TMPLIT_EXPR:P,DATA_ATTR:Q,ARIA_ATTR:R,IS_ALLOWED_URI:S,IS_SCRIPT_OR_DATA:T,ATTR_WHITESPACE:U,DOCTYPE_NAME:V}),X=function(){return"undefined"==typeof window?null:window},Y=function(a,b){if("object"!==("undefined"==typeof a?"undefined":_typeof(a))||"function"!=typeof a.createPolicy)return null;var c=null,d="data-tt-policy-suffix";b&&b.hasAttribute(d)&&(c=b.getAttribute(d));var e="dompurify"+(c?"#"+c:"");try{return a.createPolicy(e,{createHTML:function(a){return a},createScriptURL:function(a){return a}})}catch(f){return console.warn("TrustedTypes policy "+e+" could not be created."),null}},Z=f();return Z});
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..bebccb8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "nvd3",
+  "version": "0.0.1",
+  "devDependencies": {
+    "babel-cli": "^6.26.0",
+    "babel-preset-env": "^1.7.0",
+    "grunt": "~0.4.1",
+    "grunt-contrib-concat": "~0.2.0",
+    "grunt-contrib-copy": "~0.4.1",
+    "grunt-contrib-cssmin": "~0.6.2",
+    "grunt-contrib-jshint": "~0.3.0",
+    "grunt-contrib-uglify": "~0.2.0",
+    "grunt-contrib-watch": "~0.3.1"
+  }
+}
diff --git a/src/core.js b/src/core.js
new file mode 100755
index 0000000..b96b071
--- /dev/null
+++ b/src/core.js
@@ -0,0 +1,125 @@
+
+var nv = window.nv || {};
+
+
+nv.version = '1.1.15b';
+nv.dev = true //set false when in production
+
+window.nv = nv;
+
+nv.tooltip = nv.tooltip || {}; // For the tooltip system
+nv.utils = nv.utils || {}; // Utility subsystem
+nv.models = nv.models || {}; //stores all the possible models/components
+nv.charts = {}; //stores all the ready to use charts
+nv.graphs = []; //stores all the graphs currently on the page
+nv.logs = {}; //stores some statistics and potential error messages
+
+nv.dispatch = d3.dispatch('render_start', 'render_end');
+
+// *************************************************************************
+//  Development render timers - disabled if dev = false
+
+if (nv.dev) {
+  nv.dispatch.on('render_start', function(e) {
+    nv.logs.startTime = +new Date();
+  });
+
+  nv.dispatch.on('render_end', function(e) {
+    nv.logs.endTime = +new Date();
+    nv.logs.totalTime = nv.logs.endTime - nv.logs.startTime;
+    nv.log('total', nv.logs.totalTime); // used for development, to keep track of graph generation times
+  });
+}
+
+// ********************************************
+//  Public Core NV functions
+
+// Logs all arguments, and returns the last so you can test things in place
+// Note: in IE8 console.log is an object not a function, and if modernizr is used
+// then calling Function.prototype.bind with with anything other than a function
+// causes a TypeError to be thrown.
+nv.log = function() {
+  if (nv.dev && console.log && console.log.apply)
+    console.log.apply(console, arguments)
+  else if (nv.dev && typeof console.log == "function" && Function.prototype.bind) {
+    var log = Function.prototype.bind.call(console.log, console);
+    log.apply(console, arguments);
+  }
+  return arguments[arguments.length - 1];
+};
+
+
+nv.render = function render(step) {
+  step = step || 1; // number of graphs to generate in each timeout loop
+
+  nv.render.active = true;
+  nv.dispatch.render_start();
+
+  setTimeout(function() {
+    var chart, graph;
+
+    for (var i = 0; i < step && (graph = nv.render.queue[i]); i++) {
+      chart = graph.generate();
+      if (typeof graph.callback == typeof(Function)) graph.callback(chart);
+      nv.graphs.push(chart);
+    }
+
+    nv.render.queue.splice(0, i);
+
+    if (nv.render.queue.length) setTimeout(arguments.callee, 0);
+    else {
+      nv.dispatch.render_end();
+      nv.render.active = false;
+    }
+  }, 0);
+};
+
+nv.render.active = false;
+nv.render.queue = [];
+
+nv.addGraph = function(obj) {
+  if (typeof arguments[0] === typeof(Function))
+    obj = {generate: arguments[0], callback: arguments[1]};
+
+  nv.render.queue.push(obj);
+
+  if (!nv.render.active) nv.render();
+};
+
+nv.identity = function(d) { return d; };
+
+nv.strip = function(s) { return s.replace(/(\s|&)/g,''); };
+
+function daysInMonth(month,year) {
+  return (new Date(year, month+1, 0)).getDate();
+}
+
+function d3_time_range(floor, step, number) {
+  return function(t0, t1, dt) {
+    var time = floor(t0), times = [];
+    if (time < t0) step(time);
+    if (dt > 1) {
+      while (time < t1) {
+        var date = new Date(+time);
+        if ((number(date) % dt === 0)) times.push(date);
+        step(time);
+      }
+    } else {
+      while (time < t1) { times.push(new Date(+time)); step(time); }
+    }
+    return times;
+  };
+}
+
+d3.time.monthEnd = function(date) {
+  return new Date(date.getFullYear(), date.getMonth(), 0);
+};
+
+d3.time.monthEnds = d3_time_range(d3.time.monthEnd, function(date) {
+    date.setUTCDate(date.getUTCDate() + 1);
+    date.setDate(daysInMonth(date.getMonth() + 1, date.getFullYear()));
+  }, function(date) {
+    return date.getMonth();
+  }
+);
+
diff --git a/src/interactiveLayer.js b/src/interactiveLayer.js
new file mode 100644
index 0000000..4dfb68d
--- /dev/null
+++ b/src/interactiveLayer.js
@@ -0,0 +1,251 @@
+/* Utility class to handle creation of an interactive layer.
+This places a rectangle on top of the chart. When you mouse move over it, it sends a dispatch
+containing the X-coordinate. It can also render a vertical line where the mouse is located.
+
+dispatch.elementMousemove is the important event to latch onto.  It is fired whenever the mouse moves over
+the rectangle. The dispatch is given one object which contains the mouseX/Y location.
+It also has 'pointXValue', which is the conversion of mouseX to the x-axis scale.
+*/
+nv.interactiveGuideline = function() {
+	"use strict";
+	var tooltip = nv.models.tooltip();
+	//Public settings
+	var width = null
+	, height = null
+    //Please pass in the bounding chart's top and left margins
+    //This is important for calculating the correct mouseX/Y positions.
+	, margin = {left: 0, top: 0}
+	, xScale = d3.scale.linear()
+	, yScale = d3.scale.linear()
+	, dispatch = d3.dispatch('elementMousemove', 'elementMouseout','elementDblclick')
+	, showGuideLine = true
+	, svgContainer = null  
+    //Must pass in the bounding chart's <svg> container.
+    //The mousemove event is attached to this container.
+	;
+
+	//Private variables
+	var isMSIE = navigator.userAgent.indexOf("MSIE") !== -1  //Check user-agent for Microsoft Internet Explorer.
+	;
+
+
+	function layer(selection) {
+		selection.each(function(data) {
+				var container = d3.select(this);
+				
+				var availableWidth = (width || 960), availableHeight = (height || 400);
+
+				var wrap = container.selectAll("g.nv-wrap.nv-interactiveLineLayer").data([data]);
+				var wrapEnter = wrap.enter()
+								.append("g").attr("class", " nv-wrap nv-interactiveLineLayer");
+								
+				
+				wrapEnter.append("g").attr("class","nv-interactiveGuideLine");
+				
+				if (!svgContainer) {
+					return;
+				}
+
+                function mouseHandler() {
+                      var d3mouse = d3.mouse(this);
+                      var mouseX = d3mouse[0];
+                      var mouseY = d3mouse[1];
+                      var subtractMargin = true;
+                      var mouseOutAnyReason = false;
+                      if (isMSIE) {
+                         /*
+                            D3.js (or maybe SVG.getScreenCTM) has a nasty bug in Internet Explorer 10.
+                            d3.mouse() returns incorrect X,Y mouse coordinates when mouse moving
+                            over a rect in IE 10.
+                            However, d3.event.offsetX/Y also returns the mouse coordinates
+                            relative to the triggering <rect>. So we use offsetX/Y on IE.  
+                         */
+                         mouseX = d3.event.offsetX;
+                         mouseY = d3.event.offsetY;
+
+                         /*
+                            On IE, if you attach a mouse event listener to the <svg> container,
+                            it will actually trigger it for all the child elements (like <path>, <circle>, etc).
+                            When this happens on IE, the offsetX/Y is set to where ever the child element
+                            is located.
+                            As a result, we do NOT need to subtract margins to figure out the mouse X/Y
+                            position under this scenario. Removing the line below *will* cause 
+                            the interactive layer to not work right on IE.
+                         */
+                         if(d3.event.target.tagName !== "svg")
+                            subtractMargin = false;
+
+                         if (d3.event.target.className.baseVal.match("nv-legend"))
+                         	mouseOutAnyReason = true;
+                          
+                      }
+
+                      if(subtractMargin) {
+                         mouseX -= margin.left;
+                         mouseY -= margin.top;
+                      }
+
+                      /* If mouseX/Y is outside of the chart's bounds,
+                      trigger a mouseOut event.
+                      */
+                      if (mouseX < 0 || mouseY < 0 
+                        || mouseX > availableWidth || mouseY > availableHeight
+                        || (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined)
+                        || mouseOutAnyReason
+                        ) 
+                      {
+                      		if (isMSIE) {
+                      			if (d3.event.relatedTarget 
+                      				&& d3.event.relatedTarget.ownerSVGElement === undefined
+                      				&& d3.event.relatedTarget.className.match(tooltip.nvPointerEventsClass)) {
+                      				return;
+                      			}
+                      		}
+                            dispatch.elementMouseout({
+                               mouseX: mouseX,
+                               mouseY: mouseY
+                            });
+                            layer.renderGuideLine(null); //hide the guideline
+                            return;
+                      }
+                      
+                      var pointXValue = xScale.invert(mouseX);
+                      dispatch.elementMousemove({
+                            mouseX: mouseX,
+                            mouseY: mouseY,
+                            pointXValue: pointXValue
+                      });
+
+                      //If user double clicks the layer, fire a elementDblclick dispatch.
+                      if (d3.event.type === "dblclick") {
+                        dispatch.elementDblclick({
+                            mouseX: mouseX,
+                            mouseY: mouseY,
+                            pointXValue: pointXValue
+                        });
+                      }
+                }
+
+				svgContainer
+				      .on("mousemove",mouseHandler, true)
+				      .on("mouseout" ,mouseHandler,true)
+                      .on("dblclick" ,mouseHandler)
+				      ;
+
+				 //Draws a vertical guideline at the given X postion.
+				layer.renderGuideLine = function(x) {
+				 	if (!showGuideLine) return;
+				 	var line = wrap.select(".nv-interactiveGuideLine")
+				 	      .selectAll("line")
+				 	      .data((x != null) ? [nv.utils.NaNtoZero(x)] : [], String);
+
+				 	line.enter()
+				 		.append("line")
+				 		.attr("class", "nv-guideline")
+				 		.attr("x1", function(d) { return d;})
+				 		.attr("x2", function(d) { return d;})
+				 		.attr("y1", availableHeight)
+				 		.attr("y2",0)
+				 		;
+				 	line.exit().remove();
+
+				}
+		});
+	}
+
+	layer.dispatch = dispatch;
+	layer.tooltip = tooltip;
+
+	layer.margin = function(_) {
+	    if (!arguments.length) return margin;
+	    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+	    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+	    return layer;
+    };
+
+	layer.width = function(_) {
+		if (!arguments.length) return width;
+		width = _;
+		return layer;
+	};
+
+	layer.height = function(_) {
+		if (!arguments.length) return height;
+		height = _;
+		return layer;
+	};
+
+	layer.xScale = function(_) {
+		if (!arguments.length) return xScale;
+		xScale = _;
+		return layer;
+	};
+
+	layer.showGuideLine = function(_) {
+		if (!arguments.length) return showGuideLine;
+		showGuideLine = _;
+		return layer;
+	};
+
+	layer.svgContainer = function(_) {
+		if (!arguments.length) return svgContainer;
+		svgContainer = _;
+		return layer;
+	};
+
+
+	return layer;
+};
+
+/* Utility class that uses d3.bisect to find the index in a given array, where a search value can be inserted.
+This is different from normal bisectLeft; this function finds the nearest index to insert the search value.
+
+For instance, lets say your array is [1,2,3,5,10,30], and you search for 28. 
+Normal d3.bisectLeft will return 4, because 28 is inserted after the number 10.  But interactiveBisect will return 5
+because 28 is closer to 30 than 10.
+
+Unit tests can be found in: interactiveBisectTest.html
+
+Has the following known issues:
+   * Will not work if the data points move backwards (ie, 10,9,8,7, etc) or if the data points are in random order.
+   * Won't work if there are duplicate x coordinate values.
+*/
+nv.interactiveBisect = function (values, searchVal, xAccessor) {
+	  "use strict";
+      if (! values instanceof Array) return null;
+      if (typeof xAccessor !== 'function') xAccessor = function(d,i) { return d.x;}
+
+      var bisect = d3.bisector(xAccessor).left;
+      var index = d3.max([0, bisect(values,searchVal) - 1]);
+      var currentValue = xAccessor(values[index], index);
+      if (typeof currentValue === 'undefined') currentValue = index;
+
+      if (currentValue === searchVal) return index;  //found exact match
+
+      var nextIndex = d3.min([index+1, values.length - 1]);
+      var nextValue = xAccessor(values[nextIndex], nextIndex);
+      if (typeof nextValue === 'undefined') nextValue = nextIndex;
+
+      if (Math.abs(nextValue - searchVal) >= Math.abs(currentValue - searchVal))
+          return index;
+      else
+          return nextIndex
+};
+
+/*
+Returns the index in the array "values" that is closest to searchVal.
+Only returns an index if searchVal is within some "threshold".
+Otherwise, returns null.
+*/
+nv.nearestValueIndex = function (values, searchVal, threshold) {
+      "use strict";
+      var yDistMax = Infinity, indexToHighlight = null;
+      values.forEach(function(d,i) {
+         var delta = Math.abs(searchVal - d);
+         if ( delta <= yDistMax && delta < threshold) {
+            yDistMax = delta;
+            indexToHighlight = i;
+         }
+      });
+      return indexToHighlight;
+};
\ No newline at end of file
diff --git a/src/intro.js b/src/intro.js
new file mode 100644
index 0000000..af50383
--- /dev/null
+++ b/src/intro.js
@@ -0,0 +1 @@
+(function(){
diff --git a/src/models/axis.js b/src/models/axis.js
new file mode 100644
index 0000000..3767764
--- /dev/null
+++ b/src/models/axis.js
@@ -0,0 +1,405 @@
+nv.models.axis = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var axis = d3.svg.axis()
+    ;
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 75 //only used for tickLabel currently
+    , height = 60 //only used for tickLabel currently
+    , scale = d3.scale.linear()
+    , axisLabelText = null
+    , showMaxMin = true //TODO: showMaxMin should be disabled on all ordinal scaled axes
+    , highlightZero = true
+    , rotateLabels = 0
+    , rotateYLabel = true
+    , staggerLabels = false
+    , isOrdinal = false
+    , ticks = null
+    , axisLabelDistance = 12 //The larger this number is, the closer the axis label is to the axis.
+    ;
+
+  axis
+    .scale(scale)
+    .orient('bottom')
+    .tickFormat(function(d) { return d })
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var scale0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-axis').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-axis');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      //------------------------------------------------------------
+
+
+      if (ticks !== null)
+        axis.ticks(ticks);
+      else if (axis.orient() == 'top' || axis.orient() == 'bottom')
+        axis.ticks(Math.abs(scale.range()[1] - scale.range()[0]) / 100);
+
+
+      //TODO: consider calculating width/height based on whether or not label is added, for reference in charts using this component
+
+
+      g.transition().call(axis);
+
+      scale0 = scale0 || axis.scale();
+
+      var fmt = axis.tickFormat();
+      if (fmt == null) {
+        fmt = scale0.tickFormat();
+      }
+
+      var axisLabel = g.selectAll('text.nv-axislabel')
+          .data([axisLabelText || null]);
+      axisLabel.exit().remove();
+      switch (axis.orient()) {
+        case 'top':
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          var w = (scale.range().length==2) ? scale.range()[1] : (scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]));
+          axisLabel
+              .attr('text-anchor', 'middle')
+              .attr('y', 0)
+              .attr('x', w/2);
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(' + scale(d) + ',0)'
+                })
+              .select('text')
+                .attr('dy', '-0.5em')
+                .attr('y', -axis.tickPadding())
+                .attr('text-anchor', 'middle')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(' + scale.range()[i] + ',0)'
+                });
+          }
+          break;
+        case 'bottom':
+          var xLabelMargin = 36;
+          var maxTextWidth = 30;
+          var xTicks = g.selectAll('g').select("text");
+          if (rotateLabels%360) {
+            //Calculate the longest xTick width
+            xTicks.each(function(d,i){
+              var width = this.getBBox().width;
+              if(width > maxTextWidth) maxTextWidth = width;
+            });
+            //Convert to radians before calculating sin. Add 30 to margin for healthy padding.
+            var sin = Math.abs(Math.sin(rotateLabels*Math.PI/180));
+            var xLabelMargin = (sin ? sin*maxTextWidth : maxTextWidth)+30;
+            //Rotate all xTicks
+            xTicks
+              .attr('transform', function(d,i,j) { return 'rotate(' + rotateLabels + ' 0,0)' })
+              .style('text-anchor', rotateLabels%360 > 0 ? 'start' : 'end');
+          }
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          var w = (scale.range().length==2) ? scale.range()[1] : (scale.range()[scale.range().length-1]+(scale.range()[1]-scale.range()[0]));
+          axisLabel
+              .attr('text-anchor', 'middle')
+              .attr('y', xLabelMargin)
+              .attr('x', w/2);
+          if (showMaxMin) {
+          //if (showMaxMin && !isOrdinal) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           //.data(scale.domain())
+                           .data([scale.domain()[0], scale.domain()[scale.domain().length - 1]]);
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
+                })
+              .select('text')
+                .attr('dy', '.71em')
+                .attr('y', axis.tickPadding())
+                .attr('transform', function(d,i,j) { return 'rotate(' + rotateLabels + ' 0,0)' })
+                .style('text-anchor', rotateLabels ? (rotateLabels%360 > 0 ? 'start' : 'end') : 'middle')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  //return 'translate(' + scale.range()[i] + ',0)'
+                  //return 'translate(' + scale(d) + ',0)'
+                  return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
+                });
+          }
+          if (staggerLabels)
+            xTicks
+                .attr('transform', function(d,i) { return 'translate(0,' + (i % 2 == 0 ? '0' : '12') + ')' });
+
+          break;
+        case 'right':
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          axisLabel
+              .style('text-anchor', rotateYLabel ? 'middle' : 'begin')
+              .attr('transform', rotateYLabel ? 'rotate(90)' : '')
+              .attr('y', rotateYLabel ? (-Math.max(margin.right,width) + 12) : -10) //TODO: consider calculating this based on largest tick width... OR at least expose this on chart
+              .attr('x', rotateYLabel ? (scale.range()[0] / 2) : axis.tickPadding());
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text')
+                .style('opacity', 0);
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale(d) + ')'
+                })
+              .select('text')
+                .attr('dy', '.32em')
+                .attr('y', 0)
+                .attr('x', axis.tickPadding())
+                .style('text-anchor', 'start')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale.range()[i] + ')'
+                })
+              .select('text')
+                .style('opacity', 1);
+          }
+          break;
+        case 'left':
+          /*
+          //For dynamically placing the label. Can be used with dynamically-sized chart axis margins
+          var yTicks = g.selectAll('g').select("text");
+          yTicks.each(function(d,i){
+            var labelPadding = this.getBBox().width + axis.tickPadding() + 16;
+            if(labelPadding > width) width = labelPadding;
+          });
+          */
+          axisLabel.enter().append('text').attr('class', 'nv-axislabel');
+          axisLabel
+              .style('text-anchor', rotateYLabel ? 'middle' : 'end')
+              .attr('transform', rotateYLabel ? 'rotate(-90)' : '')
+              .attr('y', rotateYLabel ? (-Math.max(margin.left,width) + axisLabelDistance) : -10) //TODO: consider calculating this based on largest tick width... OR at least expose this on chart
+              .attr('x', rotateYLabel ? (-scale.range()[0] / 2) : -axis.tickPadding());
+          if (showMaxMin) {
+            var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
+                           .data(scale.domain());
+            axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text')
+                .style('opacity', 0);
+            axisMaxMin.exit().remove();
+            axisMaxMin
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale0(d) + ')'
+                })
+              .select('text')
+                .attr('dy', '.32em')
+                .attr('y', 0)
+                .attr('x', -axis.tickPadding())
+                .attr('text-anchor', 'end')
+                .text(function(d,i) {
+                  var v = fmt(d);
+                  return ('' + v).match('NaN') ? '' : v;
+                });
+            axisMaxMin.transition()
+                .attr('transform', function(d,i) {
+                  return 'translate(0,' + scale.range()[i] + ')'
+                })
+              .select('text')
+                .style('opacity', 1);
+          }
+          break;
+      }
+      axisLabel
+          .text(function(d) { return d });
+
+
+      if (showMaxMin && (axis.orient() === 'left' || axis.orient() === 'right')) {
+        //check if max and min overlap other values, if so, hide the values that overlap
+        g.selectAll('g') // the g's wrapping each tick
+            .each(function(d,i) {
+              d3.select(this).select('text').attr('opacity', 1);
+              if (scale(d) < scale.range()[1] + 10 || scale(d) > scale.range()[0] - 10) { // 10 is assuming text height is 16... if d is 0, leave it!
+                if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL
+                  d3.select(this).attr('opacity', 0);
+
+                d3.select(this).select('text').attr('opacity', 0); // Don't remove the ZERO line!!
+              }
+            });
+
+        //if Max and Min = 0 only show min, Issue #281
+        if (scale.domain()[0] == scale.domain()[1] && scale.domain()[0] == 0)
+          wrap.selectAll('g.nv-axisMaxMin')
+            .style('opacity', function(d,i) { return !i ? 1 : 0 });
+
+      }
+
+      if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {
+        var maxMinRange = [];
+        wrap.selectAll('g.nv-axisMaxMin')
+            .each(function(d,i) {
+              try {
+                  if (i) // i== 1, max position
+                      maxMinRange.push(scale(d) - this.getBBox().width - 4)  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
+                  else // i==0, min position
+                      maxMinRange.push(scale(d) + this.getBBox().width + 4)
+              }catch (err) {
+                  if (i) // i== 1, max position
+                      maxMinRange.push(scale(d) - 4)  //assuming the max and min labels are as wide as the next tick (with an extra 4 pixels just in case)
+                  else // i==0, min position
+                      maxMinRange.push(scale(d) + 4)
+              }
+            });
+        g.selectAll('g') // the g's wrapping each tick
+            .each(function(d,i) {
+              if (scale(d) < maxMinRange[0] || scale(d) > maxMinRange[1]) {
+                if (d > 1e-10 || d < -1e-10) // accounts for minor floating point errors... though could be problematic if the scale is EXTREMELY SMALL
+                  d3.select(this).remove();
+                else
+                  d3.select(this).select('text').remove(); // Don't remove the ZERO line!!
+              }
+            });
+      }
+
+
+      //highlight zero line ... Maybe should not be an option and should just be in CSS?
+      if (highlightZero)
+        g.selectAll('.tick')
+          .filter(function(d) { return !parseFloat(Math.round(d.__data__*100000)/1000000) && (d.__data__ !== undefined) }) //this is because sometimes the 0 tick is a very small fraction, TODO: think of cleaner technique
+            .classed('zero', true);
+
+      //store old scales for use in transitions on update
+      scale0 = scale.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.axis = axis;
+
+  d3.rebind(chart, axis, 'orient', 'tickValues', 'tickSubdivide', 'tickSize', 'tickPadding', 'tickFormat');
+  d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands'); //these are also accessible by chart.scale(), but added common ones directly for ease of use
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if(!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  }
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.ticks = function(_) {
+    if (!arguments.length) return ticks;
+    ticks = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.axisLabel = function(_) {
+    if (!arguments.length) return axisLabelText;
+    axisLabelText = _;
+    return chart;
+  }
+
+  chart.showMaxMin = function(_) {
+    if (!arguments.length) return showMaxMin;
+    showMaxMin = _;
+    return chart;
+  }
+
+  chart.highlightZero = function(_) {
+    if (!arguments.length) return highlightZero;
+    highlightZero = _;
+    return chart;
+  }
+
+  chart.scale = function(_) {
+    if (!arguments.length) return scale;
+    scale = _;
+    axis.scale(scale);
+    isOrdinal = typeof scale.rangeBands === 'function';
+    d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands');
+    return chart;
+  }
+
+  chart.rotateYLabel = function(_) {
+    if(!arguments.length) return rotateYLabel;
+    rotateYLabel = _;
+    return chart;
+  }
+
+  chart.rotateLabels = function(_) {
+    if(!arguments.length) return rotateLabels;
+    rotateLabels = _;
+    return chart;
+  }
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.axisLabelDistance = function(_) {
+    if (!arguments.length) return axisLabelDistance;
+    axisLabelDistance = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/backup/bullet.js b/src/models/backup/bullet.js
new file mode 100644
index 0000000..86ebeb0
--- /dev/null
+++ b/src/models/backup/bullet.js
@@ -0,0 +1,250 @@
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+
+nv.models.bullet = function() {
+
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , orient = 'left' // TODO top & bottom
+    , reverse = false
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , forceX = [0] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)
+    , width = 380
+    , height = 30
+    , tickFormat = null
+    , dispatch = d3.dispatch('elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this),
+          mainGroup = nv.log(this.parentNode.parentNode).getAttribute('transform'),
+          heightFromTop = nv.log(parseInt(mainGroup.replace(/.*,(\d+)\)/,"$1"))); //TODO: There should be a smarter way to get this value
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // Compute the new x-scale.
+      var MaxX = Math.max(rangez[0] ? rangez[0]:0 , markerz[0] ? markerz[0] : 0 , measurez[0] ? measurez[0] : 0)
+      var x1 = d3.scale.linear()
+          .domain([0, MaxX]).nice()  // TODO: need to allow forceX and forceY, and xDomain, yDomain
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bullet').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bullet');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+
+
+      // Update the range rects.
+      var range = g.selectAll('rect.nv-range')
+          .data(rangez);
+
+      range.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-range nv-s' + i; })
+          .attr('width', w0)
+          .attr('height', availableHeight)
+          .attr('x', reverse ? x0 : 0)
+          .on('mouseover', function(d,i) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: (i <= 0) ? 'Maximum' : (i > 1) ? 'Minimum' : 'Mean', //TODO: make these labels a variable
+                pos: [x1(d), heightFromTop]
+              })
+          })
+          .on('mouseout', function(d,i) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: (i <= 0) ? 'Minimum' : (i >=1) ? 'Maximum' : 'Mean' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(range)
+          .attr('x', reverse ? x1 : 0)
+          .attr('width', w1)
+          .attr('height', availableHeight);
+
+
+      // Update the measure rects.
+      var measure = g.selectAll('rect.nv-measure')
+          .data(measurez);
+
+      measure.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-measure nv-s' + i; })
+          .attr('width', w0)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x0 : 0)
+          .attr('y', availableHeight / 3)
+          .on('mouseover', function(d) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Current', //TODO: make these labels a variable
+                pos: [x1(d), heightFromTop]
+              })
+          })
+          .on('mouseout', function(d) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Current' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(measure)
+          .attr('width', w1)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x1 : 0)
+          .attr('y', availableHeight / 3);
+
+
+
+      // Update the marker lines.
+      var marker = g.selectAll('path.nv-markerTriangle')
+          .data(markerz);
+
+      var h3 =  availableHeight / 6;
+      marker.enter().append('path')
+          .attr('class', 'nv-markerTriangle')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',' + (availableHeight / 2) + ')' })
+          .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')
+          .on('mouseover', function(d,i) {
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Previous',
+                pos: [x1(d), heightFromTop]
+              })
+          })
+          .on('mouseout', function(d,i) {
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Previous'
+              })
+          });
+
+      d3.transition(marker)
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',' + (availableHeight / 2) + ')' });
+
+      marker.exit().remove();
+
+    });
+
+    d3.timer.flush();
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  // left, right, top, bottom
+  chart.orient = function(_) {
+    if (!arguments.length) return orient;
+    orient = _;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(_) {
+    if (!arguments.length) return ranges;
+    ranges = _;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(_) {
+    if (!arguments.length) return markers;
+    markers = _;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(_) {
+    if (!arguments.length) return measures;
+    measures = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(_) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
diff --git a/src/models/backup/bulletChart.js b/src/models/backup/bulletChart.js
new file mode 100644
index 0000000..a2a0f07
--- /dev/null
+++ b/src/models/backup/bulletChart.js
@@ -0,0 +1,349 @@
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+nv.models.bulletChart = function() {
+
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var bullet = nv.models.bullet()
+    ;
+
+  var orient = 'left' // TODO top & bottom
+    , reverse = false
+    , margin = {top: 5, right: 40, bottom: 20, left: 120}
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , width = null
+    , height = 55
+    , tickFormat = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + e.label + '</h3>' +
+               '<p>' +  e.value + '</p>'
+      }
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, parentElement) {
+    var offsetElement = parentElement.parentNode.parentNode,
+        left = e.pos[0] + offsetElement.offsetLeft + margin.left,
+        top = e.pos[1] + offsetElement.offsetTop + margin.top;
+
+    var content = '<h3>' + e.label + '</h3>' +
+            '<p>' + e.value + '</p>';
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w', null, offsetElement.parentNode);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var container = d3.select(this);
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          that = this;
+
+
+      chart.update = function() { chart(selection) };
+      chart.container = this;
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      /*
+      // Disabled until I figure out a better way to check for no data with the bullet chart
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+      */
+
+      //------------------------------------------------------------
+
+
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bulletChart').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bulletChart');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-bulletWrap');
+      gEnter.append('g').attr('class', 'nv-titles');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + ( margin.top + i*height )+ ')');
+
+      //------------------------------------------------------------
+
+
+      // Compute the new x-scale.
+      var MaxX = Math.max(rangez[0] ? rangez[0]:0 , markerz[0] ? markerz[0] : 0 , measurez[0] ? measurez[0] : 0)
+      var x1 = d3.scale.linear()
+          .domain([0, MaxX]).nice()  // TODO: need to allow forceX and forceY, and xDomain, yDomain
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+      /*
+      // Derive width-scales from the x-scales.
+      var w0 = bulletWidth(x0),
+          w1 = bulletWidth(x1);
+
+      function bulletWidth(x) {
+        var x0 = x(0);
+        return function(d) {
+          return Math.abs(x(d) - x(0));
+        };
+      }
+
+      function bulletTranslate(x) {
+        return function(d) {
+          return 'translate(' + x(d) + ',0)';
+        };
+      }
+      */
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+
+
+      var title = gEnter.select('.nv-titles').append("g")
+          .attr("text-anchor", "end")
+          .attr("transform", "translate(-6," + (height - margin.top - margin.bottom) / 2 + ")");
+      title.append("text")
+          .attr("class", "nv-title")
+          .text(function(d) { return d.title; });
+
+      title.append("text")
+          .attr("class", "nv-subtitle")
+          .attr("dy", "1em")
+          .text(function(d) { return d.subtitle; });
+
+
+
+      bullet
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var bulletWrap = g.select('.nv-bulletWrap');
+
+      d3.transition(bulletWrap).call(bullet);
+
+
+
+      // Compute the tick format.
+      var format = tickFormat || x1.tickFormat(8);
+
+      // Update the tick groups.
+      var tick = g.selectAll('g.nv-tick')
+          .data(x1.ticks(8), function(d) {
+            return this.textContent || format(d);
+          });
+
+      // Initialize the ticks with the old scale, x0.
+      var tickEnter = tick.enter().append('g')
+          .attr('class', 'nv-tick')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',0)' })
+          .style('opacity', 1e-6);
+
+      tickEnter.append('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickEnter.append('text')
+          .attr('text-anchor', 'middle')
+          .attr('dy', '1em')
+          .attr('y', availableHeight * 7 / 6)
+          .text(format);
+
+      // Transition the entering ticks to the new scale, x1.
+      d3.transition(tickEnter)
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1);
+
+      // Transition the updating ticks to the new scale, x1.
+      var tickUpdate = d3.transition(tick)
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1);
+
+      tickUpdate.select('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickUpdate.select('text')
+          .attr('y', availableHeight * 7 / 6);
+
+      // Transition the exiting ticks to the new scale, x1.
+      d3.transition(tick.exit())
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1e-6)
+          .remove();
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+    });
+
+    d3.timer.flush();
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  bullet.dispatch.on('elementMouseover.tooltip', function(e) {
+    dispatch.tooltipShow(e);
+  });
+
+  bullet.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.bullet = bullet;
+
+  // left, right, top, bottom
+  chart.orient = function(x) {
+    if (!arguments.length) return orient;
+    orient = x;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(x) {
+    if (!arguments.length) return ranges;
+    ranges = x;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(x) {
+    if (!arguments.length) return markers;
+    markers = x;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(x) {
+    if (!arguments.length) return measures;
+    measures = x;
+    return chart;
+  };
+
+  chart.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return chart;
+  };
+
+  chart.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
diff --git a/src/models/boilerplate.js b/src/models/boilerplate.js
new file mode 100644
index 0000000..3d2360a
--- /dev/null
+++ b/src/models/boilerplate.js
@@ -0,0 +1,104 @@
+
+nv.models.chartName = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+
+  var margin = {top: 30, right: 10, bottom: 10, left: 10}
+    , width = 960
+    , height = 500
+    , color = nv.utils.getColor(d3.scale.category20c().range())
+    , dispatch = d3.dispatch('stateChange', 'changeState')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-chartName').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-chartName');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-mainWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_)
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/bullet.js b/src/models/bullet.js
new file mode 100644
index 0000000..9b9bf4d
--- /dev/null
+++ b/src/models/bullet.js
@@ -0,0 +1,385 @@
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+
+nv.models.bullet = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , orient = 'left' // TODO top & bottom
+    , reverse = false
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , rangeLabels = function(d) { return d.rangeLabels ? d.rangeLabels : [] }
+    , markerLabels = function(d) { return d.markerLabels ? d.markerLabels : []  }
+    , measureLabels = function(d) { return d.measureLabels ? d.measureLabels : []  }
+    , forceX = [0] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)
+    , width = 380
+    , height = 30
+    , tickFormat = null
+    , color = nv.utils.getColor(['#1f77b4'])
+    , dispatch = d3.dispatch('elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending),
+          rangeLabelz = rangeLabels.call(this, d, i).slice(),
+          markerLabelz = markerLabels.call(this, d, i).slice(),
+          measureLabelz = measureLabels.call(this, d, i).slice();
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain( d3.extent(d3.merge([forceX, rangez])) )
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+
+      var rangeMin = d3.min(rangez), //rangez[2]
+          rangeMax = d3.max(rangez), //rangez[0]
+          rangeAvg = rangez[1];
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bullet').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bullet');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeMax');
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeAvg');
+      gEnter.append('rect').attr('class', 'nv-range nv-rangeMin');
+      gEnter.append('rect').attr('class', 'nv-measure');
+      gEnter.append('path').attr('class', 'nv-markerTriangle');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+      var xp0 = function(d) { return d < 0 ? x0(d) : x0(0) },
+          xp1 = function(d) { return d < 0 ? x1(d) : x1(0) };
+
+
+      g.select('rect.nv-rangeMax')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeMax > 0 ? rangeMax : rangeMin))
+          .attr('x', xp1(rangeMax > 0 ? rangeMax : rangeMin))
+          .datum(rangeMax > 0 ? rangeMax : rangeMin)
+          /*
+          .attr('x', rangeMin < 0 ?
+                         rangeMax > 0 ?
+                             x1(rangeMin)
+                           : x1(rangeMax)
+                       : x1(0))
+                      */
+
+      g.select('rect.nv-rangeAvg')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeAvg))
+          .attr('x', xp1(rangeAvg))
+          .datum(rangeAvg)
+          /*
+          .attr('width', rangeMax <= 0 ?
+                             x1(rangeMax) - x1(rangeAvg)
+                           : x1(rangeAvg) - x1(rangeMin))
+          .attr('x', rangeMax <= 0 ?
+                         x1(rangeAvg)
+                       : x1(rangeMin))
+                      */
+
+      g.select('rect.nv-rangeMin')
+          .attr('height', availableHeight)
+          .attr('width', w1(rangeMax))
+          .attr('x', xp1(rangeMax))
+          .attr('width', w1(rangeMax > 0 ? rangeMin : rangeMax))
+          .attr('x', xp1(rangeMax > 0 ? rangeMin : rangeMax))
+          .datum(rangeMax > 0 ? rangeMin : rangeMax)
+          /*
+          .attr('width', rangeMax <= 0 ?
+                             x1(rangeAvg) - x1(rangeMin)
+                           : x1(rangeMax) - x1(rangeAvg))
+          .attr('x', rangeMax <= 0 ?
+                         x1(rangeMin)
+                       : x1(rangeAvg))
+                      */
+
+      g.select('rect.nv-measure')
+          .style('fill', color)
+          .attr('height', availableHeight / 3)
+          .attr('y', availableHeight / 3)
+          .attr('width', measurez < 0 ?
+                             x1(0) - x1(measurez[0])
+                           : x1(measurez[0]) - x1(0))
+          .attr('x', xp1(measurez))
+          .on('mouseover', function() {
+              dispatch.elementMouseover({
+                value: measurez[0],
+                label: measureLabelz[0] || 'Current',
+                pos: [x1(measurez[0]), availableHeight/2]
+              })
+          })
+          .on('mouseout', function() {
+              dispatch.elementMouseout({
+                value: measurez[0],
+                label: measureLabelz[0] || 'Current'
+              })
+          })
+
+      var h3 =  availableHeight / 6;
+      if (markerz[0]) {
+        g.selectAll('path.nv-markerTriangle')
+            .attr('transform', function(d) { return 'translate(' + x1(markerz[0]) + ',' + (availableHeight / 2) + ')' })
+            .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')
+            .on('mouseover', function() {
+              dispatch.elementMouseover({
+                value: markerz[0],
+                label: markerLabelz[0] || 'Previous',
+                pos: [x1(markerz[0]), availableHeight/2]
+              })
+            })
+            .on('mouseout', function() {
+              dispatch.elementMouseout({
+                value: markerz[0],
+                label: markerLabelz[0] || 'Previous'
+              })
+            });
+      } else {
+        g.selectAll('path.nv-markerTriangle').remove();
+      }
+
+
+      wrap.selectAll('.nv-range')
+          .on('mouseover', function(d,i) {
+            var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+
+            dispatch.elementMouseover({
+              value: d,
+              label: label,
+              pos: [x1(d), availableHeight/2]
+            })
+          })
+          .on('mouseout', function(d,i) {
+            var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+
+            dispatch.elementMouseout({
+              value: d,
+              label: label
+            })
+          })
+
+/* // THIS IS THE PREVIOUS BULLET IMPLEMENTATION, WILL REMOVE SHORTLY
+      // Update the range rects.
+      var range = g.selectAll('rect.nv-range')
+          .data(rangez);
+
+      range.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-range nv-s' + i; })
+          .attr('width', w0)
+          .attr('height', availableHeight)
+          .attr('x', reverse ? x0 : 0)
+          .on('mouseover', function(d,i) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: (i <= 0) ? 'Maximum' : (i > 1) ? 'Minimum' : 'Mean', //TODO: make these labels a variable
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d,i) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: (i <= 0) ? 'Minimum' : (i >=1) ? 'Maximum' : 'Mean' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(range)
+          .attr('x', reverse ? x1 : 0)
+          .attr('width', w1)
+          .attr('height', availableHeight);
+
+
+      // Update the measure rects.
+      var measure = g.selectAll('rect.nv-measure')
+          .data(measurez);
+
+      measure.enter().append('rect')
+          .attr('class', function(d, i) { return 'nv-measure nv-s' + i; })
+          .style('fill', function(d,i) { return color(d,i ) })
+          .attr('width', w0)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x0 : 0)
+          .attr('y', availableHeight / 3)
+          .on('mouseover', function(d) { 
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Current', //TODO: make these labels a variable
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d) { 
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Current' //TODO: make these labels a variable
+              })
+          })
+
+      d3.transition(measure)
+          .attr('width', w1)
+          .attr('height', availableHeight / 3)
+          .attr('x', reverse ? x1 : 0)
+          .attr('y', availableHeight / 3);
+
+
+
+      // Update the marker lines.
+      var marker = g.selectAll('path.nv-markerTriangle')
+          .data(markerz);
+
+      var h3 =  availableHeight / 6;
+      marker.enter().append('path')
+          .attr('class', 'nv-markerTriangle')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',' + (availableHeight / 2) + ')' })
+          .attr('d', 'M0,' + h3 + 'L' + h3 + ',' + (-h3) + ' ' + (-h3) + ',' + (-h3) + 'Z')
+          .on('mouseover', function(d,i) {
+              dispatch.elementMouseover({
+                value: d,
+                label: 'Previous',
+                pos: [x1(d), availableHeight/2]
+              })
+          })
+          .on('mouseout', function(d,i) {
+              dispatch.elementMouseout({
+                value: d,
+                label: 'Previous'
+              })
+          });
+
+      d3.transition(marker)
+          .attr('transform', function(d) { return 'translate(' + (x1(d) - x1(0)) + ',' + (availableHeight / 2) + ')' });
+
+      marker.exit().remove();
+*/
+
+    });
+
+    // d3.timer.flush();  // Not needed?
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  // left, right, top, bottom
+  chart.orient = function(_) {
+    if (!arguments.length) return orient;
+    orient = _;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(_) {
+    if (!arguments.length) return ranges;
+    ranges = _;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(_) {
+    if (!arguments.length) return markers;
+    markers = _;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(_) {
+    if (!arguments.length) return measures;
+    measures = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(_) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
diff --git a/src/models/bulletChart.js b/src/models/bulletChart.js
new file mode 100644
index 0000000..fa5bd59
--- /dev/null
+++ b/src/models/bulletChart.js
@@ -0,0 +1,343 @@
+
+// Chart design based on the recommendations of Stephen Few. Implementation
+// based on the work of Clint Ivy, Jamie Love, and Jason Davies.
+// http://projects.instantcognition.com/protovis/bulletchart/
+nv.models.bulletChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var bullet = nv.models.bullet()
+    ;
+
+  var orient = 'left' // TODO top & bottom
+    , reverse = false
+    , margin = {top: 5, right: 40, bottom: 20, left: 120}
+    , ranges = function(d) { return d.ranges }
+    , markers = function(d) { return d.markers }
+    , measures = function(d) { return d.measures }
+    , width = null
+    , height = 55
+    , tickFormat = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + x + '</h3>' +
+               '<p>' + y + '</p>'
+      }
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ) + margin.left,
+        top = e.pos[1] + ( offsetElement.offsetTop || 0) + margin.top,
+        content = tooltip(e.key, e.label, e.value, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(d, i) {
+      var container = d3.select(this);
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          that = this;
+
+
+      chart.update = function() { chart(selection) };
+      chart.container = this;
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!d || !ranges.call(this, d, i)) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', 18 + margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+
+      var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
+          markerz = markers.call(this, d, i).slice().sort(d3.descending),
+          measurez = measures.call(this, d, i).slice().sort(d3.descending);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-bulletChart').data([d]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-bulletChart');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-bulletWrap');
+      gEnter.append('g').attr('class', 'nv-titles');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])  // TODO: need to allow forceX and forceY, and xDomain, yDomain
+          .range(reverse ? [availableWidth, 0] : [0, availableWidth]);
+
+      // Retrieve the old x-scale, if this is an update.
+      var x0 = this.__chart__ || d3.scale.linear()
+          .domain([0, Infinity])
+          .range(x1.range());
+
+      // Stash the new scale.
+      this.__chart__ = x1;
+
+      /*
+      // Derive width-scales from the x-scales.
+      var w0 = bulletWidth(x0),
+          w1 = bulletWidth(x1);
+
+      function bulletWidth(x) {
+        var x0 = x(0);
+        return function(d) {
+          return Math.abs(x(d) - x(0));
+        };
+      }
+
+      function bulletTranslate(x) {
+        return function(d) {
+          return 'translate(' + x(d) + ',0)';
+        };
+      }
+      */
+
+      var w0 = function(d) { return Math.abs(x0(d) - x0(0)) }, // TODO: could optimize by precalculating x0(0) and x1(0)
+          w1 = function(d) { return Math.abs(x1(d) - x1(0)) };
+
+
+      var title = gEnter.select('.nv-titles').append('g')
+          .attr('text-anchor', 'end')
+          .attr('transform', 'translate(-6,' + (height - margin.top - margin.bottom) / 2 + ')');
+      title.append('text')
+          .attr('class', 'nv-title')
+          .text(function(d) { return d.title; });
+
+      title.append('text')
+          .attr('class', 'nv-subtitle')
+          .attr('dy', '1em')
+          .text(function(d) { return d.subtitle; });
+
+
+
+      bullet
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var bulletWrap = g.select('.nv-bulletWrap');
+
+      d3.transition(bulletWrap).call(bullet);
+
+
+
+      // Compute the tick format.
+      var format = tickFormat || x1.tickFormat( availableWidth / 100 );
+
+      // Update the tick groups.
+      var tick = g.selectAll('g.nv-tick')
+          .data(x1.ticks( availableWidth / 50 ), function(d) {
+            return this.textContent || format(d);
+          });
+
+      // Initialize the ticks with the old scale, x0.
+      var tickEnter = tick.enter().append('g')
+          .attr('class', 'nv-tick')
+          .attr('transform', function(d) { return 'translate(' + x0(d) + ',0)' })
+          .style('opacity', 1e-6);
+
+      tickEnter.append('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickEnter.append('text')
+          .attr('text-anchor', 'middle')
+          .attr('dy', '1em')
+          .attr('y', availableHeight * 7 / 6)
+          .text(format);
+
+
+      // Transition the updating ticks to the new scale, x1.
+      var tickUpdate = d3.transition(tick)
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1);
+
+      tickUpdate.select('line')
+          .attr('y1', availableHeight)
+          .attr('y2', availableHeight * 7 / 6);
+
+      tickUpdate.select('text')
+          .attr('y', availableHeight * 7 / 6);
+
+      // Transition the exiting ticks to the new scale, x1.
+      d3.transition(tick.exit())
+          .attr('transform', function(d) { return 'translate(' + x1(d) + ',0)' })
+          .style('opacity', 1e-6)
+          .remove();
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      dispatch.on('tooltipShow', function(e) {
+        e.key = d.title;
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+    });
+
+    d3.timer.flush();
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  bullet.dispatch.on('elementMouseover.tooltip', function(e) {
+    dispatch.tooltipShow(e);
+  });
+
+  bullet.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.bullet = bullet;
+
+  d3.rebind(chart, bullet, 'color');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  // left, right, top, bottom
+  chart.orient = function(x) {
+    if (!arguments.length) return orient;
+    orient = x;
+    reverse = orient == 'right' || orient == 'bottom';
+    return chart;
+  };
+
+  // ranges (bad, satisfactory, good)
+  chart.ranges = function(x) {
+    if (!arguments.length) return ranges;
+    ranges = x;
+    return chart;
+  };
+
+  // markers (previous, goal)
+  chart.markers = function(x) {
+    if (!arguments.length) return markers;
+    markers = x;
+    return chart;
+  };
+
+  // measures (actual, forecast)
+  chart.measures = function(x) {
+    if (!arguments.length) return measures;
+    measures = x;
+    return chart;
+  };
+
+  chart.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return chart;
+  };
+
+  chart.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+};
+
+
diff --git a/src/models/cumulativeLineChart.js b/src/models/cumulativeLineChart.js
new file mode 100644
index 0000000..2a53563
--- /dev/null
+++ b/src/models/cumulativeLineChart.js
@@ -0,0 +1,754 @@
+
+nv.models.cumulativeLineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 50, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , tooltips = true
+    , showControls = true
+    , useInteractiveGuideline = false
+    , rescaleY = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , id = lines.id()
+    , state = { index: 0, rescaleY: rescaleY }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , average = function(d) { return d.average }
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+  controls.updateState(false);
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+   var dx = d3.scale.linear()
+     , index = {i: 0, x: 0}
+     ;
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this).classed('nv-chart-' + id, true),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      var indexDrag = d3.behavior.drag()
+                        .on('dragstart', dragStart)
+                        .on('drag', dragMove)
+                        .on('dragend', dragEnd);
+
+
+      function dragStart(d,i) {
+        d3.select(chart.container)
+            .style('cursor', 'ew-resize');
+      }
+
+      function dragMove(d,i) {
+        index.x = d3.event.x;
+        index.i = Math.round(dx.invert(index.x));
+        updateZero();
+      }
+
+      function dragEnd(d,i) {
+        d3.select(chart.container)
+            .style('cursor', 'auto');
+
+        // update state and send stateChange with new index
+        state.index = index.i;
+        dispatch.stateChange(state);
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+
+
+      if (!rescaleY) {
+        var seriesDomains = data
+          .filter(function(series) { return !series.disabled })
+          .map(function(series,i) {
+            var initialDomain = d3.extent(series.values, lines.y());
+
+            //account for series being disabled when losing 95% or more
+            if (initialDomain[0] < -.95) initialDomain[0] = -.95;
+
+            return [
+              (initialDomain[0] - initialDomain[1]) / (1 + initialDomain[1]),
+              (initialDomain[1] - initialDomain[0]) / (1 + initialDomain[0])
+            ];
+          });
+
+        var completeDomain = [
+          d3.min(seriesDomains, function(d) { return d[0] }),
+          d3.max(seriesDomains, function(d) { return d[1] })
+        ]
+
+        lines.yDomain(completeDomain);
+      } else {
+        lines.yDomain(null);
+      }
+
+
+      dx  .domain([0, data[0].values.length - 1]) //Assumes all series have same length
+          .range([0, availableWidth])
+          .clamp(true);
+
+      //------------------------------------------------------------
+
+
+      var data = indexify(index.i, data);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+      var interactivePointerEvents = (useInteractiveGuideline) ? "none" : "all";
+      var wrap = container.selectAll('g.nv-wrap.nv-cumulativeLine').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-cumulativeLine').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-interactive');
+      gEnter.append('g').attr('class', 'nv-x nv-axis').style("pointer-events","none");
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-background');
+      gEnter.append('g').attr('class', 'nv-linesWrap').style("pointer-events",interactivePointerEvents);
+      gEnter.append('g').attr('class', 'nv-avgLinesWrap').style("pointer-events","none");
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Re-scale y-axis', disabled: !rescaleY }
+        ];
+
+        controls.width(140).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      // Show error if series goes below 100%
+      var tempDisabled = data.filter(function(d) { return d.tempDisabled });
+
+      wrap.select('.tempDisabled').remove(); //clean-up and prevent duplicates
+      if (tempDisabled.length) {
+        wrap.append('text').attr('class', 'tempDisabled')
+            .attr('x', availableWidth / 2)
+            .attr('y', '-.71em')
+            .style('text-anchor', 'end')
+            .text(tempDisabled.map(function(d) { return d.key }).join(', ') + ' values cannot be calculated for this time period.');
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+      
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+          .width(availableWidth)
+          .height(availableHeight)
+          .margin({left:margin.left,top:margin.top})
+          .svgContainer(container)
+          .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+      gEnter.select('.nv-background')
+        .append('rect');
+
+      g.select('.nv-background rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      lines
+        //.x(function(d) { return d.x })
+        .y(function(d) { return d.display.y })
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].tempDisabled; }));
+
+
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(data.filter(function(d) { return  !d.disabled && !d.tempDisabled }));
+
+      //d3.transition(linesWrap).call(lines);
+      linesWrap.call(lines);
+
+      /*Handle average lines [AN-612] ----------------------------*/
+
+      //Store a series index number in the data array.
+      data.forEach(function(d,i) {
+            d.seriesIndex = i;
+      });
+
+      var avgLineData = data.filter(function(d) {
+          return !d.disabled && !!average(d);
+      });
+
+      var avgLines = g.select(".nv-avgLinesWrap").selectAll("line")
+              .data(avgLineData, function(d) { return d.key; });
+
+      var getAvgLineY = function(d) {
+          //If average lines go off the svg element, clamp them to the svg bounds.
+          var yVal = y(average(d));
+          if (yVal < 0) return 0;
+          if (yVal > availableHeight) return availableHeight;
+          return yVal;
+      };
+
+      avgLines.enter()
+              .append('line')
+              .style('stroke-width',2)
+              .style('stroke-dasharray','10,10')
+              .style('stroke',function (d,i) {
+                  return lines.color()(d,d.seriesIndex);
+              })
+              .attr('x1',0)
+              .attr('x2',availableWidth)
+              .attr('y1', getAvgLineY)
+              .attr('y2', getAvgLineY);
+
+      avgLines
+              .style('stroke-opacity',function(d){
+                  //If average lines go offscreen, make them transparent
+                  var yVal = y(average(d));
+                  if (yVal < 0 || yVal > availableHeight) return 0;
+                  return 1;
+              })
+              .attr('x1',0)
+              .attr('x2',availableWidth)
+              .attr('y1', getAvgLineY)
+              .attr('y2', getAvgLineY);
+
+      avgLines.exit().remove();
+
+      //Create index line -----------------------------------------
+
+      var indexLine = linesWrap.selectAll('.nv-indexLine')
+          .data([index]);
+      indexLine.enter().append('rect').attr('class', 'nv-indexLine')
+          .attr('width', 3)
+          .attr('x', -2)
+          .attr('fill', 'red')
+          .attr('fill-opacity', .5)
+          .style("pointer-events","all")
+          .call(indexDrag)
+
+      indexLine
+          .attr('transform', function(d) { return 'translate(' + dx(d.i) + ',0)' })
+          .attr('height', availableHeight)
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          //Suggest how many ticks based on the chart width and D3 should listen (70 is the optimal number for MM/DD/YY dates)
+          .ticks( Math.min(data[0].values.length,availableWidth/70) )
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        d3.transition(g.select('.nv-x.nv-axis'))
+            .call(xAxis);
+      }
+
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        d3.transition(g.select('.nv-y.nv-axis'))
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+
+      function updateZero() {
+        indexLine
+          .data([index]);
+        
+        //When dragging the index line, turn off line transitions.
+        // Then turn them back on when done dragging.
+        var oldDuration = chart.transitionDuration();
+        chart.transitionDuration(0);
+        chart.update();
+        chart.transitionDuration(oldDuration);
+      }
+
+      g.select('.nv-background rect')
+          .on('click', function() {
+            index.x = d3.mouse(this)[0];
+            index.i = Math.round(dx.invert(index.x));
+
+            // update state and send stateChange with new index
+            state.index = index.i;
+            dispatch.stateChange(state);
+
+            updateZero();
+          });
+
+      lines.dispatch.on('elementClick', function(e) {
+        index.i = e.pointIndex;
+        index.x = dx(index.i);
+
+        // update state and send stateChange with new index
+        state.index = index.i;
+        dispatch.stateChange(state);
+
+        updateZero();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+        rescaleY = !d.disabled;
+
+        state.rescaleY = rescaleY;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled; 
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          lines.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          
+          
+          data
+          .filter(function(series, i) { 
+            series.seriesIndex = i;
+            return !series.disabled; 
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              lines.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+              allData.push({
+                  key: series.key,
+                  value: chart.y()(point, pointIndex),
+                  color: color(series,series.seriesIndex)
+              });
+          });
+
+          //Highlight the tooltip entry based on which point the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);
+            var threshold = 0.03 * domainExtent;
+            var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value}),yValue,threshold);
+            if (indexToHighlight !== null)
+              allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex), pointIndex);
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(function(d,i) {
+                     return yAxis.tickFormat()(d);
+                  })
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          lines.clearHighlights();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+
+        if (typeof e.index !== 'undefined') {
+          index.i = e.index;
+          index.x = dx(index.i);
+
+          state.index = e.index;
+
+          indexLine
+            .data([index]);
+        }
+
+
+        if (typeof e.rescaleY !== 'undefined') {
+          rescaleY = e.rescaleY;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.lines = lines;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'x', 'y', 'xScale','yScale', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi','useVoronoi',  'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.rescaleY = function(_) {
+    if (!arguments.length) return rescaleY;
+    rescaleY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.average = function(_) {
+     if(!arguments.length) return average;
+     average = _;
+     return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  //============================================================
+  // Functions
+  //------------------------------------------------------------
+
+  /* Normalize the data according to an index point. */
+  function indexify(idx, data) {
+    return data.map(function(line, i) {
+      if (!line.values) {
+         return line;
+      }
+      var v = lines.y()(line.values[idx], idx);
+
+      //TODO: implement check below, and disable series if series loses 100% or more cause divide by 0 issue
+      if (v < -.95) {
+        //if a series loses more than 100%, calculations fail.. anything close can cause major distortion (but is mathematically correct till it hits 100)
+        line.tempDisabled = true;
+        return line;
+      }
+
+      line.tempDisabled = false;
+
+      line.values = line.values.map(function(point, pointIndex) {
+        point.display = {'y': (lines.y()(point, pointIndex) - v) / (1 + v) };
+        return point;
+      })
+
+      return line;
+    })
+  }
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/discreteBar.js b/src/models/discreteBar.js
new file mode 100644
index 0000000..a20f582
--- /dev/null
+++ b/src/models/discreteBar.js
@@ -0,0 +1,349 @@
+//TODO: consider deprecating by adding necessary features to multiBar model
+nv.models.discreteBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , color = nv.utils.defaultColor()
+    , showValues = false
+    , valueFormat = d3.format(',.2f')
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    , rectClass = 'discreteBar'
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableWidth], .1);
+
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y }).concat(forceY)));
+
+
+      // If showValues, pad the Y axis range to account for label height
+      if (showValues) y.range(yRange || [availableHeight - (y.domain()[0] < 0 ? 12 : 0), y.domain()[1] > 0 ? 12 : 0]);
+      else y.range(yRange || [availableHeight, 0]);
+
+      //store old scales if they exist
+      x0 = x0 || x;
+      y0 = y0 || y.copy().range([y(0),y(0)]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-discretebar').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discretebar');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      //TODO: by definition, the discrete bar should not have multiple groups, will modify/remove later
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+          .transition()
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover });
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('g.nv-bar')
+          .data(function(d) { return d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('g')
+          .attr('transform', function(d,i,j) {
+              return 'translate(' + (x(getX(d,i)) + x.rangeBand() * .05 ) + ', ' + y(0) + ')'
+          })
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (d.series + .5) / data.length), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+
+      barsEnter.append('rect')
+          .attr('height', 0)
+          .attr('width', x.rangeBand() * .9 / data.length )
+
+      if (showValues) {
+        barsEnter.append('text')
+          .attr('text-anchor', 'middle')
+          ;
+
+        bars.select('text')
+          .text(function(d,i) { return valueFormat(getY(d,i)) })
+          .transition()
+          .attr('x', x.rangeBand() * .9 / 2)
+          .attr('y', function(d,i) { return getY(d,i) < 0 ? y(getY(d,i)) - y(0) + 12 : -4 })
+
+          ;
+      } else {
+        bars.selectAll('text').remove();
+      }
+
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive' })
+          .style('fill', function(d,i) { return d.color || color(d,i) })
+          .style('stroke', function(d,i) { return d.color || color(d,i) })
+        .select('rect')
+          .attr('class', rectClass)
+          .transition()
+          .attr('width', x.rangeBand() * .9 / data.length);
+      bars.transition()
+        //.delay(function(d,i) { return i * 1200 / data[0].values.length })
+          .attr('transform', function(d,i) {
+            var left = x(getX(d,i)) + x.rangeBand() * .05,
+                top = getY(d,i) < 0 ?
+                        y(0) :
+                        y(0) - y(getY(d,i)) < 1 ?
+                          y(0) - 1 : //make 1 px positive bars show up above y=0
+                          y(getY(d,i));
+
+              return 'translate(' + left + ', ' + top + ')'
+          })
+        .select('rect')
+          .attr('height', function(d,i) {
+            return  Math.max(Math.abs(y(getY(d,i)) - y((yDomain && yDomain[0]) || 0)) || 1)
+          });
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.showValues = function(_) {
+    if (!arguments.length) return showValues;
+    showValues = _;
+    return chart;
+  };
+
+  chart.valueFormat= function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.rectClass= function(_) {
+    if (!arguments.length) return rectClass;
+    rectClass = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/discreteBarChart.js b/src/models/discreteBarChart.js
new file mode 100644
index 0000000..d695576
--- /dev/null
+++ b/src/models/discreteBarChart.js
@@ -0,0 +1,344 @@
+
+nv.models.discreteBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var discretebar = nv.models.discreteBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    ;
+
+  var margin = {top: 15, right: 10, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.getColor()
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , staggerLabels = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , x
+    , y
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'beforeUpdate')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .highlightZero(false)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(discretebar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(discretebar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { 
+        dispatch.beforeUpdate(); 
+        container.transition().duration(transitionDuration).call(chart); 
+      };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = discretebar.xScale();
+      y = discretebar.yScale().clamp(true);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-discreteBarWithAxes').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-discreteBarWithAxes').append('g');
+      var defsEnter = gEnter.append('defs');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis')
+            .append('g').attr('class', 'nv-zeroLine')
+            .append('line');
+        
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      discretebar
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(discretebar);
+
+      //------------------------------------------------------------
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-x-label-clip-' + discretebar.id())
+        .append('rect');
+
+      g.select('#nv-x-label-clip-' + discretebar.id() + ' rect')
+          .attr('width', x.rangeBand() * (staggerLabels ? 2 : 1))
+          .attr('height', 16)
+          .attr('x', -x.rangeBand() / (staggerLabels ? 1 : 2 ));
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableWidth / 100 )
+            .tickSize(-availableHeight, 0);
+
+          g.select('.nv-x.nv-axis')
+              .attr('transform', 'translate(0,' + (y.range()[0] + ((discretebar.showValues() && y.domain()[0] < 0) ? 16 : 0)) + ')');
+          //d3.transition(g.select('.nv-x.nv-axis'))
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+
+          var xTicks = g.select('.nv-x.nv-axis').selectAll('g');
+
+          if (staggerLabels) {
+            xTicks
+                .selectAll('text')
+                .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '5' : '17') + ')' })
+          }
+      }
+
+      if (showYAxis) {
+          yAxis
+            .scale(y)
+            .ticks( availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+      // Zero line
+      g.select(".nv-zeroLine line")
+        .attr("x1",0)
+        .attr("x2",availableWidth)
+        .attr("y1", y(0))
+        .attr("y2", y(0))
+        ;
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  discretebar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  discretebar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.discretebar = discretebar;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, discretebar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'id', 'showValues', 'valueFormat');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    discretebar.color(color);
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/distribution.js b/src/models/distribution.js
new file mode 100644
index 0000000..62a7465
--- /dev/null
+++ b/src/models/distribution.js
@@ -0,0 +1,148 @@
+
+nv.models.distribution = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 400 //technically width or height depending on x or y....
+    , size = 8
+    , axis = 'x' // 'x' or 'y'... horizontal or vertical
+    , getData = function(d) { return d[axis] }  // defaults d.x or d.y
+    , color = nv.utils.defaultColor()
+    , scale = d3.scale.linear()
+    , domain
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var scale0;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableLength = width - (axis === 'x' ? margin.left + margin.right : margin.top + margin.bottom),
+          naxis = axis == 'x' ? 'y' : 'x',
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      scale0 = scale0 || scale;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-distribution').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-distribution');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
+
+      //------------------------------------------------------------
+
+
+      var distWrap = g.selectAll('g.nv-dist')
+          .data(function(d) { return d }, function(d) { return d.key });
+
+      distWrap.enter().append('g');
+      distWrap
+          .attr('class', function(d,i) { return 'nv-dist nv-series-' + i })
+          .style('stroke', function(d,i) { return color(d, i) });
+
+      var dist = distWrap.selectAll('line.nv-dist' + axis)
+          .data(function(d) { return d.values })
+      dist.enter().append('line')
+          .attr(axis + '1', function(d,i) { return scale0(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale0(getData(d,i)) })
+      distWrap.exit().selectAll('line.nv-dist' + axis)
+          .transition()
+          .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })
+          .style('stroke-opacity', 0)
+          .remove();
+      dist
+          .attr('class', function(d,i) { return 'nv-dist' + axis + ' nv-dist' + axis + '-' + i })
+          .attr(naxis + '1', 0)
+          .attr(naxis + '2', size);
+      dist
+          .transition()
+          .attr(axis + '1', function(d,i) { return scale(getData(d,i)) })
+          .attr(axis + '2', function(d,i) { return scale(getData(d,i)) })
+
+
+      scale0 = scale.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.axis = function(_) {
+    if (!arguments.length) return axis;
+    axis = _;
+    return chart;
+  };
+
+  chart.size = function(_) {
+    if (!arguments.length) return size;
+    size = _;
+    return chart;
+  };
+
+  chart.getData = function(_) {
+    if (!arguments.length) return getData;
+    getData = d3.functor(_);
+    return chart;
+  };
+
+  chart.scale = function(_) {
+    if (!arguments.length) return scale;
+    scale = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/historicalBar.js b/src/models/historicalBar.js
new file mode 100644
index 0000000..2a6c644
--- /dev/null
+++ b/src/models/historicalBar.js
@@ -0,0 +1,331 @@
+//TODO: consider deprecating and using multibar with single series for this
+nv.models.historicalBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceX = []
+    , forceY = [0]
+    , padData = false
+    , clipEdge = true
+    , color = nv.utils.defaultColor()
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    , interactive = true
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ))
+
+      if (padData)
+        x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(data[0].values.map(getY).concat(forceY) ))
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-historicalBar-' + id).data([data[0].values]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBar-' + id);
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-bars');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+            dispatch.chartClick({
+                data: d,
+                index: i,
+                pos: d3.event,
+                id: id
+            });
+          });
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-chart-clip-path-' + id)
+        .append('rect');
+
+      wrap.select('#nv-chart-clip-path-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');
+
+
+
+      var bars = wrap.select('.nv-bars').selectAll('.nv-bar')
+          .data(function(d) { return d }, function(d,i) {return getX(d,i)});
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('rect')
+          //.attr('class', function(d,i,j) { return (getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive') + ' nv-bar-' + j + '-' + i })
+          .attr('x', 0 )
+          .attr('y', function(d,i) {  return nv.utils.NaNtoZero(y(Math.max(0, getY(d,i)))) })
+          .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.abs(y(getY(d,i)) - y(0))) })
+          .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; }) 
+          .on('mouseover', function(d,i) {
+            if (!interactive) return;
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+                point: d,
+                series: data[0],
+                pos: [x(getX(d,i)), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+                pointIndex: i,
+                seriesIndex: 0,
+                e: d3.event
+            });
+
+          })
+          .on('mouseout', function(d,i) {
+                if (!interactive) return;
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    point: d,
+                    series: data[0],
+                    pointIndex: i,
+                    seriesIndex: 0,
+                    e: d3.event
+                });
+          })
+          .on('click', function(d,i) {
+                if (!interactive) return;
+                dispatch.elementClick({
+                    //label: d[label],
+                    value: getY(d,i),
+                    data: d,
+                    index: i,
+                    pos: [x(getX(d,i)), y(getY(d,i))],
+                    e: d3.event,
+                    id: id
+                });
+              d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+              if (!interactive) return;
+              dispatch.elementDblClick({
+                  //label: d[label],
+                  value: getY(d,i),
+                  data: d,
+                  index: i,
+                  pos: [x(getX(d,i)), y(getY(d,i))],
+                  e: d3.event,
+                  id: id
+              });
+              d3.event.stopPropagation();
+          });
+
+      bars
+          .attr('fill', function(d,i) { return color(d, i); })
+          .attr('class', function(d,i,j) { return (getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive') + ' nv-bar-' + j + '-' + i })
+          .transition()
+          .attr('transform', function(d,i) { return 'translate(' + (x(getX(d,i)) - availableWidth / data[0].values.length * .45) + ',0)'; }) 
+           //TODO: better width calculations that don't assume always uniform data spacing;w
+          .attr('width', (availableWidth / data[0].values.length) * .9 );
+
+
+      bars.transition()
+          .attr('y', function(d,i) {
+            var rval = getY(d,i) < 0 ?
+                    y(0) :
+                    y(0) - y(getY(d,i)) < 1 ?
+                      y(0) - 1 :
+                      y(getY(d,i));
+            return nv.utils.NaNtoZero(rval);
+          })
+          .attr('height', function(d,i) { return nv.utils.NaNtoZero(Math.max(Math.abs(y(getY(d,i)) - y(0)),1)) });
+
+    });
+
+    return chart;
+  }
+
+  //Create methods to allow outside functions to highlight a specific bar.
+  chart.highlightPoint = function(pointIndex, isHoverOver) {
+      d3.select(".nv-historicalBar-" + id)
+        .select(".nv-bars .nv-bar-0-" + pointIndex)
+              .classed("hover", isHoverOver)
+               ;
+  };
+
+  chart.clearHighlights = function() {
+      d3.select(".nv-historicalBar-" + id)
+        .select(".nv-bars .nv-bar.hover")
+              .classed("hover", false)
+               ;
+  };
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.interactive = function(_) {
+    if(!arguments.length) return interactive;
+    interactive = false;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/historicalBarChart.js b/src/models/historicalBarChart.js
new file mode 100644
index 0000000..07aab36
--- /dev/null
+++ b/src/models/historicalBarChart.js
@@ -0,0 +1,419 @@
+
+nv.models.historicalBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var bars = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    ;
+
+
+  var margin = {top: 30, right: 90, bottom: 50, left: 90}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = false
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x
+    , y
+    , state = {}
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient( (rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+
+    // New addition to calculate position if SVG is scaled with viewBox, may move TODO: consider implementing everywhere else
+    if (offsetElement) {
+      var svg = d3.select(offsetElement).select('svg');
+      var viewBox = (svg.node()) ? svg.attr('viewBox') : null;
+      if (viewBox) {
+        viewBox = viewBox.split(' ');
+        var ratio = parseInt(svg.style('width')) / viewBox[2];
+        e.pos[0] = e.pos[0] * ratio;
+        e.pos[1] = e.pos[1] * ratio;
+      }
+    }
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(bars.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(bars.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = bars.xScale();
+      y = bars.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-historicalBarChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-historicalBarChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+        g.select(".nv-y.nv-axis")
+            .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      bars
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }));
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(bars);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        g.select('.nv-x.nv-axis')
+            .transition()
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+          .transition()
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.nv-series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        state.disabled = data.map(function(d) { return !!d.disabled });
+        dispatch.stateChange(state);
+
+        selection.transition().call(chart);
+      });
+
+      legend.dispatch.on('legendDblclick', function(d) {
+          //Double clicking should always enable current series, and disabled all others.
+          data.forEach(function(d) {
+             d.disabled = true;
+          });
+          d.disabled = false;
+
+          state.disabled = data.map(function(d) { return !!d.disabled });
+          dispatch.stateChange(state);
+          chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.bars = bars;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, bars, 'defined', 'isArea', 'x', 'y', 'size', 'xScale', 'yScale',
+    'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id', 'interpolate','highlightPoint','clearHighlights', 'interactive');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/indentedTree.js b/src/models/indentedTree.js
new file mode 100644
index 0000000..18c2700
--- /dev/null
+++ b/src/models/indentedTree.js
@@ -0,0 +1,337 @@
+nv.models.indentedTree = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0} //TODO: implement, maybe as margin on the containing div
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor()
+    , id = Math.floor(Math.random() * 10000)
+    , header = true
+    , filterZero = false
+    , noData = "No Data Available."
+    , childIndent = 20
+    , columns = [{key:'key', label: 'Name', type:'text'}] //TODO: consider functions like chart.addColumn, chart.removeColumn, instead of a block like this
+    , tableClass = null
+    , iconOpen = 'images/grey-plus.png' //TODO: consider removing this and replacing with a '+' or '-' unless user defines images
+    , iconClose = 'images/grey-minus.png'
+    , dispatch = d3.dispatch('elementClick', 'elementDblclick', 'elementMouseover', 'elementMouseout')
+    , getUrl = function(d) { return d.url }
+    ;
+
+  //============================================================
+
+  var idx = 0;
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var depth = 1,
+          container = d3.select(this);
+
+      var tree = d3.layout.tree()
+          .children(function(d) { return d.values })
+          .size([height, childIndent]); //Not sure if this is needed now that the result is HTML
+
+      chart.update = function() { container.transition().duration(600).call(chart) };
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+      if (!data[0]) data[0] = {key: noData};
+
+      //------------------------------------------------------------
+
+
+      var nodes = tree.nodes(data[0]);
+
+      // nodes.map(function(d) {
+      //   d.id = i++;
+      // })
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('div').data([[nodes]]);
+      var wrapEnter = wrap.enter().append('div').attr('class', 'nvd3 nv-wrap nv-indentedtree');
+      var tableEnter = wrapEnter.append('table');
+      var table = wrap.select('table').attr('width', '100%').attr('class', tableClass);
+
+      //------------------------------------------------------------
+
+
+      if (header) {
+        var thead = tableEnter.append('thead');
+
+        var theadRow1 = thead.append('tr');
+
+        columns.forEach(function(column) {
+          theadRow1
+            .append('th')
+              .attr('width', column.width ? column.width : '10%')
+              .style('text-align', column.type == 'numeric' ? 'right' : 'left')
+            .append('span')
+              .text(column.label);
+        });
+      }
+
+
+      var tbody = table.selectAll('tbody')
+                    .data(function(d) { return d });
+      tbody.enter().append('tbody');
+
+
+
+      //compute max generations
+      depth = d3.max(nodes, function(node) { return node.depth });
+      tree.size([height, depth * childIndent]); //TODO: see if this is necessary at all
+
+
+      // Update the nodes…
+      var node = tbody.selectAll('tr')
+          // .data(function(d) { return d; }, function(d) { return d.id || (d.id == ++i)});
+          .data(function(d) { return d.filter(function(d) { return (filterZero && !d.children) ? filterZero(d) :  true; } )}, function(d,i) { return d.id || (d.id || ++idx)});
+          //.style('display', 'table-row'); //TODO: see if this does anything
+
+      node.exit().remove();
+
+      node.select('img.nv-treeicon')
+          .attr('src', icon)
+          .classed('folded', folded);
+
+      var nodeEnter = node.enter().append('tr');
+
+
+      columns.forEach(function(column, index) {
+
+        var nodeName = nodeEnter.append('td')
+            .style('padding-left', function(d) { return (index ? 0 : d.depth * childIndent + 12 + (icon(d) ? 0 : 16)) + 'px' }, 'important') //TODO: check why I did the ternary here
+            .style('text-align', column.type == 'numeric' ? 'right' : 'left');
+
+
+        if (index == 0) {
+          nodeName.append('img')
+              .classed('nv-treeicon', true)
+              .classed('nv-folded', folded)
+              .attr('src', icon)
+              .style('width', '14px')
+              .style('height', '14px')
+              .style('padding', '0 1px')
+              .style('display', function(d) { return icon(d) ? 'inline-block' : 'none'; })
+              .on('click', click);
+        }
+
+
+        nodeName.each(function(d) {
+          if (!index && getUrl(d))
+            d3.select(this)
+              .append('a')
+              .attr('href',getUrl)
+              .attr('class', d3.functor(column.classes))
+              .append('span')
+          else
+            d3.select(this)
+              .append('span')
+
+            d3.select(this).select('span')
+              .attr('class', d3.functor(column.classes) )
+              .text(function(d) { return column.format ? column.format(d) :
+                                        (d[column.key] || '-') });
+          });
+
+        if  (column.showCount) {
+          nodeName.append('span')
+              .attr('class', 'nv-childrenCount');
+
+          node.selectAll('span.nv-childrenCount').text(function(d) {
+                return ((d.values && d.values.length) || (d._values && d._values.length)) ?                                   //If this is a parent
+                    '(' + ((d.values && (d.values.filter(function(d) { return filterZero ? filterZero(d) :  true; }).length)) //If children are in values check its children and filter
+                    || (d._values && d._values.filter(function(d) { return filterZero ? filterZero(d) :  true; }).length)     //Otherwise, do the same, but with the other name, _values...
+                    || 0) + ')'                                                                                               //This is the catch-all in case there are no children after a filter
+                    : ''                                                                                                     //If this is not a parent, just give an empty string
+            });
+        }
+
+        // if (column.click)
+        //   nodeName.select('span').on('click', column.click);
+
+      });
+
+      node
+        .order()
+        .on('click', function(d) { 
+          dispatch.elementClick({
+            row: this, //TODO: decide whether or not this should be consistent with scatter/line events or should be an html link (a href)
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('dblclick', function(d) { 
+          dispatch.elementDblclick({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('mouseover', function(d) { 
+          dispatch.elementMouseover({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        })
+        .on('mouseout', function(d) { 
+          dispatch.elementMouseout({
+            row: this,
+            data: d,
+            pos: [d.x, d.y]
+          });
+        });
+
+
+
+
+      // Toggle children on click.
+      function click(d, _, unshift) {
+        d3.event.stopPropagation();
+
+        if(d3.event.shiftKey && !unshift) {
+          //If you shift-click, it'll toggle fold all the children, instead of itself
+          d3.event.shiftKey = false;
+          d.values && d.values.forEach(function(node){
+            if (node.values || node._values) {
+              click(node, 0, true);
+            }
+          });
+          return true;
+        }
+        if(!hasChildren(d)) {
+          //download file
+          //window.location.href = d.url;
+          return true;
+        }
+        if (d.values) {
+          d._values = d.values;
+          d.values = null;
+        } else {
+          d.values = d._values;
+          d._values = null;
+        }
+        chart.update();
+      }
+
+
+      function icon(d) {
+        return (d._values && d._values.length) ? iconOpen : (d.values && d.values.length) ? iconClose : '';
+      }
+
+      function folded(d) {
+        return (d._values && d._values.length);
+      }
+
+      function hasChildren(d) {
+        var values = d.values || d._values;
+
+        return (values && values.length);
+      }
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    scatter.color(color);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.header = function(_) {
+    if (!arguments.length) return header;
+    header = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.filterZero = function(_) {
+    if (!arguments.length) return filterZero;
+    filterZero = _;
+    return chart;
+  };
+
+  chart.columns = function(_) {
+    if (!arguments.length) return columns;
+    columns = _;
+    return chart;
+  };
+
+  chart.tableClass = function(_) {
+    if (!arguments.length) return tableClass;
+    tableClass = _;
+    return chart;
+  };
+
+  chart.iconOpen = function(_){
+     if (!arguments.length) return iconOpen;
+    iconOpen = _;
+    return chart;
+  }
+
+  chart.iconClose = function(_){
+     if (!arguments.length) return iconClose;
+    iconClose = _;
+    return chart;
+  }
+
+  chart.getUrl = function(_){
+     if (!arguments.length) return getUrl;
+    getUrl = _;
+    return chart;
+  }
+
+  //============================================================
+
+
+  return chart;
+};
\ No newline at end of file
diff --git a/src/models/legend.js b/src/models/legend.js
new file mode 100644
index 0000000..21f9f9a
--- /dev/null
+++ b/src/models/legend.js
@@ -0,0 +1,270 @@
+nv.models.legend = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 5, right: 0, bottom: 5, left: 0}
+    , width = 400
+    , height = 20
+    , getKey = function(d) { return d.key }
+    , color = nv.utils.defaultColor()
+    , align = true
+    , rightAlign = true
+    , updateState = true   //If true, legend will update data.disabled and trigger a 'stateChange' dispatch.
+    , radioButtonMode = false   //If true, clicking legend items will cause it to behave like a radio button. (only one can be selected at a time)
+    , dispatch = d3.dispatch('legendClick', 'legendDblclick', 'legendMouseover', 'legendMouseout', 'stateChange')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-legend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-legend').append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      var series = g.selectAll('.nv-series')
+          .data(function(d) { return d });
+      var seriesEnter = series.enter().append('g').attr('class', 'nv-series')
+          .on('mouseover', function(d,i) {
+            dispatch.legendMouseover(d,i);  //TODO: Make consistent with other event objects
+          })
+          .on('mouseout', function(d,i) {
+            dispatch.legendMouseout(d,i);
+          })
+          .on('click', function(d,i) {
+            dispatch.legendClick(d,i);
+            if (updateState) {
+               if (radioButtonMode) {
+                   //Radio button mode: set every series to disabled,
+                   //  and enable the clicked series.
+                   data.forEach(function(series) { series.disabled = true});
+                   d.disabled = false;
+               }
+               else {
+                   d.disabled = !d.disabled;
+                   if (data.every(function(series) { return series.disabled})) {
+                       //the default behavior of NVD3 legends is, if every single series
+                       // is disabled, turn all series' back on.
+                       data.forEach(function(series) { series.disabled = false});
+                   }
+               }
+               dispatch.stateChange({
+                  disabled: data.map(function(d) { return !!d.disabled })
+               });
+            }
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.legendDblclick(d,i);
+            if (updateState) {
+                //the default behavior of NVD3 legends, when double clicking one,
+                // is to set all other series' to false, and make the double clicked series enabled.
+                data.forEach(function(series) {
+                   series.disabled = true;
+                });
+                d.disabled = false; 
+                dispatch.stateChange({
+                    disabled: data.map(function(d) { return !!d.disabled })
+                });
+            }
+          });
+      seriesEnter.append('circle')
+          .style('stroke-width', 2)
+          .attr('class','nv-legend-symbol')
+          .attr('r', 5);
+      seriesEnter.append('text')
+          .attr('text-anchor', 'start')
+          .attr('class','nv-legend-text')
+          .attr('dy', '.32em')
+          .attr('dx', '8');
+      series.classed('disabled', function(d) { return d.disabled });
+      series.exit().remove();
+      series.select('circle')
+          .style('fill', function(d,i) { return d.color || color(d,i)})
+          .style('stroke', function(d,i) { return d.color || color(d, i) });
+      series.select('text').text(getKey);
+
+
+      //TODO: implement fixed-width and max-width options (max-width is especially useful with the align option)
+
+      // NEW ALIGNING CODE, TODO: clean up
+      if (align) {
+
+        var seriesWidths = [];
+        series.each(function(d,i) {
+              var legendText = d3.select(this).select('text');
+              var nodeTextLength;
+              try {
+                nodeTextLength = legendText.node().getComputedTextLength();
+              }
+              catch(e) {
+                nodeTextLength = nv.utils.calcApproxTextWidth(legendText);
+              }
+             
+              seriesWidths.push(nodeTextLength + 28); // 28 is ~ the width of the circle plus some padding
+            });
+
+        var seriesPerRow = 0;
+        var legendWidth = 0;
+        var columnWidths = [];
+
+        while ( legendWidth < availableWidth && seriesPerRow < seriesWidths.length) {
+          columnWidths[seriesPerRow] = seriesWidths[seriesPerRow];
+          legendWidth += seriesWidths[seriesPerRow++];
+        }
+        if (seriesPerRow === 0) seriesPerRow = 1; //minimum of one series per row
+
+
+        while ( legendWidth > availableWidth && seriesPerRow > 1 ) {
+          columnWidths = [];
+          seriesPerRow--;
+
+          for (var k = 0; k < seriesWidths.length; k++) {
+            if (seriesWidths[k] > (columnWidths[k % seriesPerRow] || 0) )
+              columnWidths[k % seriesPerRow] = seriesWidths[k];
+          }
+
+          legendWidth = columnWidths.reduce(function(prev, cur, index, array) {
+                          return prev + cur;
+                        });
+        }
+
+        var xPositions = [];
+        for (var i = 0, curX = 0; i < seriesPerRow; i++) {
+            xPositions[i] = curX;
+            curX += columnWidths[i];
+        }
+
+        series
+            .attr('transform', function(d, i) {
+              return 'translate(' + xPositions[i % seriesPerRow] + ',' + (5 + Math.floor(i / seriesPerRow) * 20) + ')';
+            });
+
+        //position legend as far right as possible within the total width
+        if (rightAlign) {
+           g.attr('transform', 'translate(' + (width - margin.right - legendWidth) + ',' + margin.top + ')');
+        }
+        else {
+           g.attr('transform', 'translate(0' + ',' + margin.top + ')');
+        }
+
+        height = margin.top + margin.bottom + (Math.ceil(seriesWidths.length / seriesPerRow) * 20);
+
+      } else {
+
+        var ypos = 5,
+            newxpos = 5,
+            maxwidth = 0,
+            xpos;
+        series
+            .attr('transform', function(d, i) {
+              var length = d3.select(this).select('text').node().getComputedTextLength() + 28;
+              xpos = newxpos;
+
+              if (width < margin.left + margin.right + xpos + length) {
+                newxpos = xpos = 5;
+                ypos += 20;
+              }
+
+              newxpos += length;
+              if (newxpos > maxwidth) maxwidth = newxpos;
+
+              return 'translate(' + xpos + ',' + ypos + ')';
+            });
+
+        //position legend as far right as possible within the total width
+        g.attr('transform', 'translate(' + (width - margin.right - maxwidth) + ',' + margin.top + ')');
+
+        height = margin.top + margin.bottom + ypos + 15;
+
+      }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.key = function(_) {
+    if (!arguments.length) return getKey;
+    getKey = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.align = function(_) {
+    if (!arguments.length) return align;
+    align = _;
+    return chart;
+  };
+
+  chart.rightAlign = function(_) {
+    if (!arguments.length) return rightAlign;
+    rightAlign = _;
+    return chart;
+  };
+
+  chart.updateState = function(_) {
+    if (!arguments.length) return updateState;
+    updateState = _;
+    return chart;
+  };
+
+  chart.radioButtonMode = function(_) {
+    if (!arguments.length) return radioButtonMode;
+    radioButtonMode = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/line.js b/src/models/line.js
new file mode 100644
index 0000000..7203d15
--- /dev/null
+++ b/src/models/line.js
@@ -0,0 +1,274 @@
+
+nv.models.line = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var  scatter = nv.models.scatter()
+    ;
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor() // a function that returns a color
+    , getX = function(d) { return d.x } // accessor to get the x value from a data point
+    , getY = function(d) { return d.y } // accessor to get the y value from a data point
+    , defined = function(d,i) { return !isNaN(getY(d,i)) && getY(d,i) !== null } // allows a line to be not continuous when it is not defined
+    , isArea = function(d) { return d.area } // decides if a line is an area or just a line
+    , clipEdge = false // if true, masks lines within x and y scale
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , interpolate = "linear" // controls the line interpolation
+    ;
+
+  scatter
+    .size(16) // default size
+    .sizeDomain([16,256]) //set to speed up calculation, needs to be unset if there is a custom size accessor
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-line').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-line');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-groups');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var scatterWrap = wrap.select('.nv-scatterWrap');
+          //.datum(data); // Data automatically trickles down from the wrap
+
+      scatterWrap.transition().call(scatter);
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + scatter.id())
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + scatter.id() + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');
+      scatterWrap
+          .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + scatter.id() + ')' : '');
+
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+
+      groups.exit().remove();
+
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i)});
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .5);
+
+
+
+      var areaPaths = groups.selectAll('path.nv-area')
+          .data(function(d) { return isArea(d) ? [d] : [] }); // this is done differently than lines because I need to check if series is an area
+      areaPaths.enter().append('path')
+          .attr('class', 'nv-area')
+          .attr('d', function(d) {
+            return d3.svg.area()
+                .interpolate(interpolate)
+                .defined(defined)
+                .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+                .y0(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+                .y1(function(d,i) { return y0( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })
+                //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this
+                .apply(this, [d.values])
+          });
+      groups.exit().selectAll('path.nv-area')
+           .remove();
+
+      areaPaths
+          .transition()
+          .attr('d', function(d) {
+            return d3.svg.area()
+                .interpolate(interpolate)
+                .defined(defined)
+                .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+                .y0(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+                .y1(function(d,i) { return y( y.domain()[0] <= 0 ? y.domain()[1] >= 0 ? 0 : y.domain()[1] : y.domain()[0] ) })
+                //.y1(function(d,i) { return y0(0) }) //assuming 0 is within y domain.. may need to tweak this
+                .apply(this, [d.values])
+          });
+
+
+
+      var linePaths = groups.selectAll('path.nv-line')
+          .data(function(d) { return [d.values] });
+      linePaths.enter().append('path')
+          .attr('class', 'nv-line')
+          .attr('d',
+            d3.svg.line()
+              .interpolate(interpolate)
+              .defined(defined)
+              .x(function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+              .y(function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+          );
+
+      linePaths
+          .transition()
+          .attr('d',
+            d3.svg.line()
+              .interpolate(interpolate)
+              .defined(defined)
+              .x(function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+              .y(function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+          );
+
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = scatter.dispatch;
+  chart.scatter = scatter;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange',
+    'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi', 'clipRadius', 'padData','highlightPoint','clearHighlights');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    scatter.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    scatter.y(_);
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    scatter.color(color);
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+    if (!arguments.length) return interpolate;
+    interpolate = _;
+    return chart;
+  };
+
+  chart.defined = function(_) {
+    if (!arguments.length) return defined;
+    defined = _;
+    return chart;
+  };
+
+  chart.isArea = function(_) {
+    if (!arguments.length) return isArea;
+    isArea = d3.functor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/lineChart.js b/src/models/lineChart.js
new file mode 100644
index 0000000..a4ffcf6
--- /dev/null
+++ b/src/models/lineChart.js
@@ -0,0 +1,465 @@
+
+nv.models.lineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , useInteractiveGuideline = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , x
+    , y
+    , state = {}
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+    
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-lineChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append("rect").style("opacity",0);
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-linesWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-interactive');
+
+      g.select("rect").attr("width",availableWidth).attr("height",availableHeight);
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+           .width(availableWidth)
+           .height(availableHeight)
+           .margin({left:margin.left, top:margin.top})
+           .svgContainer(container)
+           .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }));
+
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      linesWrap.transition().call(lines);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .ticks( availableWidth / 100 )
+          .tickSize(-availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')');
+        g.select('.nv-x.nv-axis')
+            .transition()
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks( availableHeight / 36 )
+          .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .transition()
+            .call(yAxis);
+      }
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+          state = newState;
+          dispatch.stateChange(state);
+          chart.update();
+      });
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          lines.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          data
+          .filter(function(series, i) { 
+            series.seriesIndex = i;
+            return !series.disabled; 
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              lines.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+              allData.push({
+                  key: series.key,
+                  value: chart.y()(point, pointIndex),
+                  color: color(series,series.seriesIndex)
+              });
+          });
+          //Highlight the tooltip entry based on which point the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var domainExtent = Math.abs(chart.yScale().domain()[0] - chart.yScale().domain()[1]);
+            var threshold = 0.03 * domainExtent;
+            var indexToHighlight = nv.nearestValueIndex(allData.map(function(d){return d.value}),yValue,threshold);
+            if (indexToHighlight !== null)
+              allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex));
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(function(d,i) {
+                     return yAxis.tickFormat()(d);
+                  })
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          lines.clearHighlights();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.lines = lines;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'x', 'y', 'size', 'xScale', 'yScale', 'xDomain', 'yDomain', 'xRange', 'yRange'
+    , 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'useVoronoi','id', 'interpolate');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/linePlusBarChart.js b/src/models/linePlusBarChart.js
new file mode 100644
index 0000000..77fcbab
--- /dev/null
+++ b/src/models/linePlusBarChart.js
@@ -0,0 +1,433 @@
+
+nv.models.linePlusBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , bars = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , y1Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 60, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.defaultColor()
+    , showLegend = true
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>';
+      }
+    , x
+    , y1
+    , y2
+    , state = {}
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    ;
+
+  bars
+    .padData(true)
+    ;
+  lines
+    .clipEdge(false)
+    .padData(true)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    .highlightZero(false)
+    ;
+  y1Axis
+    .orient('left')
+    ;
+  y2Axis
+    .orient('right')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+      var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+          top = e.pos[1] + ( offsetElement.offsetTop || 0),
+          x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+          y = (e.series.bar ? y1Axis : y2Axis).tickFormat()(lines.y()(e.point, e.pointIndex)),
+          content = tooltip(e.series.key, x, y, e, chart);
+
+      nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+    }
+    ;
+
+  //------------------------------------------------------------
+
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().call(chart); };
+      // chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      var dataBars = data.filter(function(d) { return !d.disabled && d.bar });
+      var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240
+
+      //x = xAxis.scale();
+       x = dataLines.filter(function(d) { return !d.disabled; }).length && dataLines.filter(function(d) { return !d.disabled; })[0].values.length ? lines.xScale() : bars.xScale();
+      //x = dataLines.filter(function(d) { return !d.disabled; }).length ? lines.xScale() : bars.xScale(); //old code before change above
+      y1 = bars.yScale();
+      y2 = lines.yScale();
+
+      //------------------------------------------------------------
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-linePlusBar').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-linePlusBar').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      gEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-linesWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.nv-legendWrap')
+            .datum(data.map(function(series) {
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.bar ? ' (left axis)' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }))
+
+      bars
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }))
+
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(dataBars.length ? dataBars : [{values:[]}])
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(dataLines[0] && !dataLines[0].disabled ? dataLines : [{values:[]}] );
+          //.datum(!dataLines[0].disabled ? dataLines : [{values:dataLines[0].values.map(function(d) { return [d[0], null] }) }] );
+
+      d3.transition(barsWrap).call(bars);
+      d3.transition(linesWrap).call(lines);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y1.range()[0] + ')');
+      d3.transition(g.select('.nv-x.nv-axis'))
+          .call(xAxis);
+
+
+      y1Axis
+        .scale(y1)
+        .ticks( availableHeight / 36 )
+        .tickSize(-availableWidth, 0);
+
+      d3.transition(g.select('.nv-y1.nv-axis'))
+          .style('opacity', dataBars.length ? 1 : 0)
+          .call(y1Axis);
+
+
+      y2Axis
+        .scale(y2)
+        .ticks( availableHeight / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+      g.select('.nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + availableWidth + ',0)');
+          //.attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+      d3.transition(g.select('.nv-y2.nv-axis'))
+          .call(y2Axis);
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.bars = bars;
+  chart.xAxis = xAxis;
+  chart.y1Axis = y1Axis;
+  chart.y2Axis = y2Axis;
+
+  d3.rebind(chart, lines, 'defined', 'size', 'clipVoronoi', 'interpolate');
+  //TODO: consider rebinding x, y and some other stuff, and simply do soemthign lile bars.x(lines.x()), etc.
+  //d3.rebind(chart, lines, 'x', 'y', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    bars.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    bars.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/linePlusBarWithFocusChart.js b/src/models/linePlusBarWithFocusChart.js
new file mode 100644
index 0000000..2ef3113
--- /dev/null
+++ b/src/models/linePlusBarWithFocusChart.js
@@ -0,0 +1,658 @@
+
+nv.models.linePlusBarWithFocusChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , lines2 = nv.models.line()
+    , bars = nv.models.historicalBar()
+    , bars2 = nv.models.historicalBar()
+    , xAxis = nv.models.axis()
+    , x2Axis = nv.models.axis()
+    , y1Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , y3Axis = nv.models.axis()
+    , y4Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    , brush = d3.svg.brush()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 30, left: 60}
+    , margin2 = {top: 0, right: 30, bottom: 20, left: 60}
+    , width = null
+    , height = null
+    , height2 = 100
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.defaultColor()
+    , showLegend = true
+    , extent
+    , brushExtent = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>';
+      }
+    , x
+    , x2
+    , y1
+    , y2
+    , y3
+    , y4
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'brush')
+    , transitionDuration = 0
+    ;
+
+  lines
+    .clipEdge(true)
+    ;
+  lines2
+    .interactive(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y1Axis
+    .orient('left')
+    ;
+  y2Axis
+    .orient('right')
+    ;
+  x2Axis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y3Axis
+    .orient('left')
+    ;
+  y4Axis
+    .orient('right')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    if (extent) {
+        e.pointIndex += Math.ceil(extent[0]);
+    }
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = (e.series.bar ? y1Axis : y2Axis).tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //------------------------------------------------------------
+
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2,
+          availableHeight2 = height2 - margin2.top - margin2.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight1 / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      var dataBars = data.filter(function(d) { return !d.disabled && d.bar });
+      var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240
+
+      x = bars.xScale();
+      x2 = x2Axis.scale();
+      y1 = bars.yScale();
+      y2 = lines.yScale();
+      y3 = bars2.yScale();
+      y4 = lines2.yScale();
+
+      var series1 = data
+        .filter(function(d) { return !d.disabled && d.bar })
+        .map(function(d) {
+          return d.values.map(function(d,i) {
+            return { x: getX(d,i), y: getY(d,i) }
+          })
+        });
+
+      var series2 = data
+        .filter(function(d) { return !d.disabled && !d.bar })
+        .map(function(d) {
+          return d.values.map(function(d,i) {
+            return { x: getX(d,i), y: getY(d,i) }
+          })
+        });
+
+      x   .range([0, availableWidth]);
+      
+      x2  .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-linePlusBar').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-linePlusBar').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      
+      var focusEnter = gEnter.append('g').attr('class', 'nv-focus');
+      focusEnter.append('g').attr('class', 'nv-x nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      focusEnter.append('g').attr('class', 'nv-barsWrap');
+      focusEnter.append('g').attr('class', 'nv-linesWrap');
+
+      var contextEnter = gEnter.append('g').attr('class', 'nv-context');
+      contextEnter.append('g').attr('class', 'nv-x nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y1 nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y2 nv-axis');
+      contextEnter.append('g').attr('class', 'nv-barsWrap');
+      contextEnter.append('g').attr('class', 'nv-linesWrap');
+      contextEnter.append('g').attr('class', 'nv-brushBackground');
+      contextEnter.append('g').attr('class', 'nv-x nv-brush');
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.nv-legendWrap')
+            .datum(data.map(function(series) {
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.bar ? ' (left axis)' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Context Components
+
+      bars2
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }));
+
+      lines2
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }));
+        
+      var bars2Wrap = g.select('.nv-context .nv-barsWrap')
+          .datum(dataBars.length ? dataBars : [{values:[]}]);
+
+      var lines2Wrap = g.select('.nv-context .nv-linesWrap')
+          .datum(!dataLines[0].disabled ? dataLines : [{values:[]}]);
+          
+      g.select('.nv-context')
+          .attr('transform', 'translate(0,' + ( availableHeight1 + margin.bottom + margin2.top) + ')')
+
+      bars2Wrap.transition().call(bars2);
+      lines2Wrap.transition().call(lines2);
+
+      //------------------------------------------------------------
+
+
+
+      //------------------------------------------------------------
+      // Setup Brush
+
+      brush
+        .x(x2)
+        .on('brush', onBrush);
+
+      if (brushExtent) brush.extent(brushExtent);
+
+      var brushBG = g.select('.nv-brushBackground').selectAll('g')
+          .data([brushExtent || brush.extent()])
+
+      var brushBGenter = brushBG.enter()
+          .append('g');
+
+      brushBGenter.append('rect')
+          .attr('class', 'left')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      brushBGenter.append('rect')
+          .attr('class', 'right')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      var gBrush = g.select('.nv-x.nv-brush')
+          .call(brush);
+      gBrush.selectAll('rect')
+          //.attr('y', -5)
+          .attr('height', availableHeight2);
+      gBrush.selectAll('.resize').append('path').attr('d', resizePath);
+
+      //------------------------------------------------------------
+
+      //------------------------------------------------------------
+      // Setup Secondary (Context) Axes
+
+      x2Axis
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight2, 0);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y3.range()[0] + ')');
+      g.select('.nv-context .nv-x.nv-axis').transition()
+          .call(x2Axis);
+
+
+      y3Axis
+        .scale(y3)
+        .ticks( availableHeight2 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      g.select('.nv-context .nv-y1.nv-axis')
+          .style('opacity', dataBars.length ? 1 : 0)
+          .attr('transform', 'translate(0,' + x2.range()[0] + ')');
+          
+      g.select('.nv-context .nv-y1.nv-axis').transition()
+          .call(y3Axis);
+          
+
+      y4Axis
+        .scale(y4)
+        .ticks( availableHeight2 / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+      g.select('.nv-context .nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + x2.range()[1] + ',0)');
+
+      g.select('.nv-context .nv-y2.nv-axis').transition()
+          .call(y4Axis);
+          
+      //------------------------------------------------------------
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+      //============================================================
+      // Functions
+      //------------------------------------------------------------
+
+      // Taken from crossfilter (http://square.github.com/crossfilter/)
+      function resizePath(d) {
+        var e = +(d == 'e'),
+            x = e ? 1 : -1,
+            y = availableHeight2 / 3;
+        return 'M' + (.5 * x) + ',' + y
+            + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)
+            + 'V' + (2 * y - 6)
+            + 'A6,6 0 0 ' + e + ' ' + (.5 * x) + ',' + (2 * y)
+            + 'Z'
+            + 'M' + (2.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8)
+            + 'M' + (4.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8);
+      }
+
+
+      function updateBrushBG() {
+        if (!brush.empty()) brush.extent(brushExtent);
+        brushBG
+            .data([brush.empty() ? x2.domain() : brushExtent])
+            .each(function(d,i) {
+              var leftWidth = x2(d[0]) - x2.range()[0],
+                  rightWidth = x2.range()[1] - x2(d[1]);
+              d3.select(this).select('.left')
+                .attr('width',  leftWidth < 0 ? 0 : leftWidth);
+
+              d3.select(this).select('.right')
+                .attr('x', x2(d[1]))
+                .attr('width', rightWidth < 0 ? 0 : rightWidth);
+            });
+      }
+
+
+      function onBrush() {
+        brushExtent = brush.empty() ? null : brush.extent();
+        extent = brush.empty() ? x2.domain() : brush.extent();
+
+
+        dispatch.brush({extent: extent, brush: brush});
+
+        updateBrushBG();
+
+
+        //------------------------------------------------------------
+        // Prepare Main (Focus) Bars and Lines
+        
+        bars
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && data[i].bar }));
+
+
+        lines
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled && !data[i].bar }));
+
+        var focusBarsWrap = g.select('.nv-focus .nv-barsWrap')
+            .datum(!dataBars.length ? [{values:[]}] :
+              dataBars
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return bars.x()(d,i) >= extent[0] && bars.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+            );
+        
+        var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+            .datum(dataLines[0].disabled ? [{values:[]}] :
+              dataLines
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+             );
+                 
+        //------------------------------------------------------------
+        
+        
+        //------------------------------------------------------------
+        // Update Main (Focus) X Axis
+
+        if (dataBars.length) {
+            x = bars.xScale();
+        } else {
+            x = lines.xScale();
+        }
+        
+        xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight1, 0);
+
+        xAxis.domain([Math.ceil(extent[0]), Math.floor(extent[1])]);
+        
+        g.select('.nv-x.nv-axis').transition().duration(transitionDuration)
+          .call(xAxis);
+        //------------------------------------------------------------
+        
+        
+        //------------------------------------------------------------
+        // Update Main (Focus) Bars and Lines
+
+        focusBarsWrap.transition().duration(transitionDuration).call(bars);
+        focusLinesWrap.transition().duration(transitionDuration).call(lines);
+        
+        //------------------------------------------------------------
+        
+          
+        //------------------------------------------------------------
+        // Setup and Update Main (Focus) Y Axes
+        
+        g.select('.nv-focus .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y1.range()[0] + ')');
+
+
+        y1Axis
+        .scale(y1)
+        .ticks( availableHeight1 / 36 )
+        .tickSize(-availableWidth, 0);
+
+        g.select('.nv-focus .nv-y1.nv-axis')
+          .style('opacity', dataBars.length ? 1 : 0);
+
+
+        y2Axis
+        .scale(y2)
+        .ticks( availableHeight1 / 36 )
+        .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+
+        g.select('.nv-focus .nv-y2.nv-axis')
+          .style('opacity', dataLines.length ? 1 : 0)
+          .attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+        g.select('.nv-focus .nv-y1.nv-axis').transition().duration(transitionDuration)
+            .call(y1Axis);
+        g.select('.nv-focus .nv-y2.nv-axis').transition().duration(transitionDuration)
+            .call(y2Axis);
+      }
+
+      //============================================================
+
+      onBrush();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.lines2 = lines2;
+  chart.bars = bars;
+  chart.bars2 = bars2;
+  chart.xAxis = xAxis;
+  chart.x2Axis = x2Axis;
+  chart.y1Axis = y1Axis;
+  chart.y2Axis = y2Axis;
+  chart.y3Axis = y3Axis;
+  chart.y4Axis = y4Axis;
+
+  d3.rebind(chart, lines, 'defined', 'size', 'clipVoronoi', 'interpolate');
+  //TODO: consider rebinding x, y and some other stuff, and simply do soemthign lile bars.x(lines.x()), etc.
+  //d3.rebind(chart, lines, 'x', 'y', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines.x(_);
+    bars.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines.y(_);
+    bars.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.brushExtent = function(_) {
+    if (!arguments.length) return brushExtent;
+    brushExtent = _;
+    return chart;
+  };
+
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/lineWithFisheye.js b/src/models/lineWithFisheye.js
new file mode 100644
index 0000000..2b41167
--- /dev/null
+++ b/src/models/lineWithFisheye.js
@@ -0,0 +1,200 @@
+
+nv.models.line = function() {
+  "use strict";
+  //Default Settings
+  var margin = {top: 0, right: 0, bottom: 0, left: 0},
+      width = 960,
+      height = 500,
+      color = nv.utils.defaultColor(), // function that returns colors
+      id = Math.floor(Math.random() * 10000), //Create semi-unique ID incase user doesn't select one
+      getX = function(d) { return d.x }, // accessor to get the x value from a data point
+      getY = function(d) { return d.y }, // accessor to get the y value from a data point
+      clipEdge = false, // if true, masks lines within x and y scale
+      interpolate = "linear"; // controls the line interpolation
+
+
+  var scatter = nv.models.scatter()
+                  .id(id)
+                  .size(16) // default size
+                  .sizeDomain([16,256]), //set to speed up calculation, needs to be unset if there is a custom size accessor
+      //x = scatter.xScale(),
+      //y = scatter.yScale(),
+      x, y,
+      x0, y0, timeoutID;
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom;
+
+      //get the scales inscase scatter scale was set manually
+      x = x || scatter.xScale();
+      y = y || scatter.yScale();
+
+      //store old scales if they exist
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-line').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-line');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      wrapEnter.append('g').attr('class', 'nv-scatterWrap');
+      var scatterWrap = wrap.select('.nv-scatterWrap').datum(data);
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+
+      d3.transition(scatterWrap).call(scatter);
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+      scatterWrap
+          .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      d3.transition(groups.exit())
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) })
+      d3.transition(groups)
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .5)
+
+
+      var paths = groups.selectAll('path')
+          .data(function(d, i) { return [d.values] });
+      paths.enter().append('path')
+          .attr('class', 'nv-line')
+          .attr('d', d3.svg.line()
+            .interpolate(interpolate)
+            .x(function(d,i) { return x0(getX(d,i)) })
+            .y(function(d,i) { return y0(getY(d,i)) })
+          );
+      d3.transition(groups.exit().selectAll('path'))
+          .attr('d', d3.svg.line()
+            .interpolate(interpolate)
+            .x(function(d,i) { return x(getX(d,i)) })
+            .y(function(d,i) { return y(getY(d,i)) })
+          )
+          .remove(); // redundant? line is already being removed
+      d3.transition(paths)
+          .attr('d', d3.svg.line()
+            .interpolate(interpolate)
+            .x(function(d,i) { return x(getX(d,i)) })
+            .y(function(d,i) { return y(getY(d,i)) })
+          );
+
+
+      //store old scales for use in transitions on update, to animate from old to new positions
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = scatter.dispatch;
+
+  d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    scatter.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    scatter.y(_);
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    scatter.color(color);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+    if (!arguments.length) return interpolate;
+    interpolate = _;
+    return chart;
+  };
+
+  chart.defined = function(_) {
+    if (!arguments.length) return defined;
+    defined = _;
+    return chart;
+  };
+
+  return chart;
+}
diff --git a/src/models/lineWithFisheyeChart.js b/src/models/lineWithFisheyeChart.js
new file mode 100644
index 0000000..ad89419
--- /dev/null
+++ b/src/models/lineWithFisheyeChart.js
@@ -0,0 +1,297 @@
+
+nv.models.lineChart = function() {
+  "use strict";
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      color = nv.utils.defaultColor(),
+      width = null, 
+      height = null,
+      showLegend = true,
+      showControls = true,
+      fisheye = 0,
+      pauseFisheye = false,
+      tooltips = true,
+      tooltip = function(key, x, y, e, graph) { 
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      },
+      noData = "No Data Available."
+      ;
+
+
+  var x = d3.fisheye.scale(d3.scale.linear).distortion(0);
+
+  var lines = nv.models.line().xScale(x),
+      //x = lines.xScale(),
+      y = lines.yScale(),
+      xAxis = nv.models.axis().scale(x).orient('bottom').tickPadding(5),
+      yAxis = nv.models.axis().scale(y).orient('left'),
+      legend = nv.models.legend().height(30),
+      controls = nv.models.legend().height(30).updateState(false),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+    chart.update = function() { container.transition().call(chart) };
+    chart.container = this; // I need a reference to the container in order to have outside code check if the chart is visible or not
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        container.append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('x', availableWidth / 2)
+          .attr('y', availableHeight / 2)
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle')
+          .text(noData);
+          return chart;
+      } else {
+        container.select('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+
+      var wrap = container.selectAll('g.nv-wrap.nv-lineChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineChart').append('g');
+
+
+      gEnter.append('rect')
+          .attr('class', 'nvd3 nv-background')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-linesWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+
+      var g = wrap.select('g');
+
+
+
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }));
+
+
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var linesWrap = g.select('.nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(linesWrap).call(lines);
+
+
+
+      xAxis
+        //.scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.nv-x.nv-axis'))
+          .call(xAxis);
+
+
+      yAxis
+        //.scale(y)
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.nv-y.nv-axis'))
+          .call(yAxis);
+
+
+
+      g.select('.nv-background').on('mousemove', updateFisheye);
+      g.select('.nv-background').on('click', function() { pauseFisheye = !pauseFisheye; });
+      //g.select('.point-paths').on('mousemove', updateFisheye);
+
+
+      function updateFisheye() {
+        if (pauseFisheye) {
+          //g.select('.background') .style('pointer-events', 'none');
+          g.select('.nv-point-paths').style('pointer-events', 'all');
+          return false;
+        }
+
+        g.select('.nv-background') .style('pointer-events', 'all');
+        g.select('.nv-point-paths').style('pointer-events', 'none' );
+
+        var mouse = d3.mouse(this);
+        linesWrap.call(lines);
+        g.select('.nv-x.nv-axis').call(xAxis);
+        x.distortion(fisheye).focus(mouse[0]);
+      }
+
+
+      controls.dispatch.on('legendClick', function(d,i) { 
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 5;
+        g.select('.nv-background') .style('pointer-events', d.disabled ? 'none' : 'all');
+        g.select('.nv-point-paths').style('pointer-events', d.disabled ? 'all' : 'none' );
+
+        //scatter.interactive(d.disabled);
+        //tooltips = d.disabled;
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+
+          linesWrap.call(lines);
+          g.select('.nv-x.nv-axis').call(xAxis);
+        } else {
+          pauseFisheye = false;
+        }
+
+        chart.update();
+      });
+
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+
+      lines.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+      if (tooltips) dispatch.on('tooltipShow', function(e) { showTooltip(e, that.parentNode) } ); // TODO: maybe merge with above?
+
+      lines.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+      if (tooltips) dispatch.on('tooltipHide', nv.tooltip.cleanup);
+
+    });
+
+    return chart;
+  }
+
+
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, lines, 'defined', 'x', 'y', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id', 'interpolate');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+
+  return chart;
+}
diff --git a/src/models/lineWithFocusChart.js b/src/models/lineWithFocusChart.js
new file mode 100644
index 0000000..0afd28b
--- /dev/null
+++ b/src/models/lineWithFocusChart.js
@@ -0,0 +1,574 @@
+nv.models.lineWithFocusChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var lines = nv.models.line()
+    , lines2 = nv.models.line()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , x2Axis = nv.models.axis()
+    , y2Axis = nv.models.axis()
+    , legend = nv.models.legend()
+    , brush = d3.svg.brush()
+    ;
+
+  var margin = {top: 30, right: 30, bottom: 30, left: 60}
+    , margin2 = {top: 0, right: 30, bottom: 20, left: 60}
+    , color = nv.utils.defaultColor()
+    , width = null
+    , height = null
+    , height2 = 100
+    , x
+    , y
+    , x2
+    , y2
+    , showLegend = true
+    , brushExtent = null
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      }
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'brush')
+    , transitionDuration = 250
+    ;
+
+  lines
+    .clipEdge(true)
+    ;
+  lines2
+    .interactive(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  yAxis
+    .orient('left')
+    ;
+  x2Axis
+    .orient('bottom')
+    .tickPadding(5)
+    ;
+  y2Axis
+    .orient('left')
+    ;
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(lines.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, null, null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2,
+          availableHeight2 = height2 - margin2.top - margin2.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight1 / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = lines.xScale();
+      y = lines.yScale();
+      x2 = lines2.xScale();
+      y2 = lines2.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-lineWithFocusChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-lineWithFocusChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      var focusEnter = gEnter.append('g').attr('class', 'nv-focus');
+      focusEnter.append('g').attr('class', 'nv-x nv-axis');
+      focusEnter.append('g').attr('class', 'nv-y nv-axis');
+      focusEnter.append('g').attr('class', 'nv-linesWrap');
+
+      var contextEnter = gEnter.append('g').attr('class', 'nv-context');
+      contextEnter.append('g').attr('class', 'nv-x nv-axis');
+      contextEnter.append('g').attr('class', 'nv-y nv-axis');
+      contextEnter.append('g').attr('class', 'nv-linesWrap');
+      contextEnter.append('g').attr('class', 'nv-brushBackground');
+      contextEnter.append('g').attr('class', 'nv-x nv-brush');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight1 = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom - height2;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      lines
+        .width(availableWidth)
+        .height(availableHeight1)
+        .color(
+          data
+            .map(function(d,i) {
+              return d.color || color(d, i);
+            })
+            .filter(function(d,i) {
+              return !data[i].disabled;
+          })
+        );
+
+      lines2
+        .defined(lines.defined())
+        .width(availableWidth)
+        .height(availableHeight2)
+        .color(
+          data
+            .map(function(d,i) {
+              return d.color || color(d, i);
+            })
+            .filter(function(d,i) {
+              return !data[i].disabled;
+          })
+        );
+
+      g.select('.nv-context')
+          .attr('transform', 'translate(0,' + ( availableHeight1 + margin.bottom + margin2.top) + ')')
+
+      var contextLinesWrap = g.select('.nv-context .nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(contextLinesWrap).call(lines2);
+
+      //------------------------------------------------------------
+
+
+      /*
+      var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(focusLinesWrap).call(lines);
+     */
+
+
+      //------------------------------------------------------------
+      // Setup Main (Focus) Axes
+
+      xAxis
+        .scale(x)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight1, 0);
+
+      yAxis
+        .scale(y)
+        .ticks( availableHeight1 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      g.select('.nv-focus .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + availableHeight1 + ')');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Brush
+
+      brush
+        .x(x2)
+        .on('brush', function() {
+            //When brushing, turn off transitions because chart needs to change immediately.
+            var oldTransition = chart.transitionDuration();
+            chart.transitionDuration(0); 
+            onBrush();
+            chart.transitionDuration(oldTransition);
+        });
+
+      if (brushExtent) brush.extent(brushExtent);
+
+      var brushBG = g.select('.nv-brushBackground').selectAll('g')
+          .data([brushExtent || brush.extent()])
+
+      var brushBGenter = brushBG.enter()
+          .append('g');
+
+      brushBGenter.append('rect')
+          .attr('class', 'left')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      brushBGenter.append('rect')
+          .attr('class', 'right')
+          .attr('x', 0)
+          .attr('y', 0)
+          .attr('height', availableHeight2);
+
+      var gBrush = g.select('.nv-x.nv-brush')
+          .call(brush);
+      gBrush.selectAll('rect')
+          //.attr('y', -5)
+          .attr('height', availableHeight2);
+      gBrush.selectAll('.resize').append('path').attr('d', resizePath);
+
+      onBrush();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Secondary (Context) Axes
+
+      x2Axis
+        .scale(x2)
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight2, 0);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y2.range()[0] + ')');
+      d3.transition(g.select('.nv-context .nv-x.nv-axis'))
+          .call(x2Axis);
+
+
+      y2Axis
+        .scale(y2)
+        .ticks( availableHeight2 / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.nv-context .nv-y.nv-axis'))
+          .call(y2Axis);
+
+      g.select('.nv-context .nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y2.range()[0] + ')');
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      //============================================================
+
+
+      //============================================================
+      // Functions
+      //------------------------------------------------------------
+
+      // Taken from crossfilter (http://square.github.com/crossfilter/)
+      function resizePath(d) {
+        var e = +(d == 'e'),
+            x = e ? 1 : -1,
+            y = availableHeight2 / 3;
+        return 'M' + (.5 * x) + ',' + y
+            + 'A6,6 0 0 ' + e + ' ' + (6.5 * x) + ',' + (y + 6)
+            + 'V' + (2 * y - 6)
+            + 'A6,6 0 0 ' + e + ' ' + (.5 * x) + ',' + (2 * y)
+            + 'Z'
+            + 'M' + (2.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8)
+            + 'M' + (4.5 * x) + ',' + (y + 8)
+            + 'V' + (2 * y - 8);
+      }
+
+
+      function updateBrushBG() {
+        if (!brush.empty()) brush.extent(brushExtent);
+        brushBG
+            .data([brush.empty() ? x2.domain() : brushExtent])
+            .each(function(d,i) {
+              var leftWidth = x2(d[0]) - x.range()[0],
+                  rightWidth = x.range()[1] - x2(d[1]);
+              d3.select(this).select('.left')
+                .attr('width',  leftWidth < 0 ? 0 : leftWidth);
+
+              d3.select(this).select('.right')
+                .attr('x', x2(d[1]))
+                .attr('width', rightWidth < 0 ? 0 : rightWidth);
+            });
+      }
+
+
+      function onBrush() {
+        brushExtent = brush.empty() ? null : brush.extent();
+        var extent = brush.empty() ? x2.domain() : brush.extent();
+
+        //The brush extent cannot be less than one.  If it is, don't update the line chart.
+        if (Math.abs(extent[0] - extent[1]) <= 1) {
+          return;
+        }
+
+        dispatch.brush({extent: extent, brush: brush});
+
+
+        updateBrushBG();
+
+        // Update Main (Focus)
+        var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
+            .datum(
+              data
+                .filter(function(d) { return !d.disabled })
+                .map(function(d,i) {
+                  return {
+                    key: d.key,
+                    values: d.values.filter(function(d,i) {
+                      return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];
+                    })
+                  }
+                })
+            );
+        focusLinesWrap.transition().duration(transitionDuration).call(lines);
+
+
+        // Update Main (Focus) Axes
+        g.select('.nv-focus .nv-x.nv-axis').transition().duration(transitionDuration)
+            .call(xAxis);
+        g.select('.nv-focus .nv-y.nv-axis').transition().duration(transitionDuration)
+            .call(yAxis);
+      }
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.legend = legend;
+  chart.lines = lines;
+  chart.lines2 = lines2;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.x2Axis = x2Axis;
+  chart.y2Axis = y2Axis;
+
+  d3.rebind(chart, lines, 'defined', 'isArea', 'size', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'interactive', 'clipEdge', 'clipVoronoi', 'id');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.x = function(_) {
+    if (!arguments.length) return lines.x;
+    lines.x(_);
+    lines2.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return lines.y;
+    lines.y(_);
+    lines2.y(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.margin2 = function(_) {
+    if (!arguments.length) return margin2;
+    margin2 = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.height2 = function(_) {
+    if (!arguments.length) return height2;
+    height2 = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color =nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+    if (!arguments.length) return lines.interpolate();
+    lines.interpolate(_);
+    lines2.interpolate(_);
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  // Chart has multiple similar Axes, to prevent code duplication, probably need to link all axis functions manually like below
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return xAxis.tickFormat();
+    xAxis.tickFormat(_);
+    x2Axis.tickFormat(_);
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return yAxis.tickFormat();
+    yAxis.tickFormat(_);
+    y2Axis.tickFormat(_);
+    return chart;
+  };
+  
+  chart.brushExtent = function(_) {
+    if (!arguments.length) return brushExtent;
+    brushExtent = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/multiBar.js b/src/models/multiBar.js
new file mode 100644
index 0000000..1085919
--- /dev/null
+++ b/src/models/multiBar.js
@@ -0,0 +1,461 @@
+
+nv.models.multiBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , clipEdge = true
+    , stacked = false
+    , stackOffset = 'zero' // options include 'silhouette', 'wiggle', 'expand', 'zero', or a custom function
+    , color = nv.utils.defaultColor()
+    , hideable = false
+    , barColor = null // adding the ability to set the color for each rather than the whole group
+    , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled
+    , delay = 1200
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , groupSpacing = 0.1
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      if(hideable && data.length) hideable = [{
+        values: data[0].values.map(function(d) {
+        return {
+          x: d.x,
+          y: 0,
+          series: d.series,
+          size: 0.01
+        };}
+      )}];
+
+      if (stacked)
+        data = d3.layout.stack()
+                 .offset(stackOffset)
+                 .values(function(d){ return d.values })
+                 .y(getY)
+                 (!data.length && hideable ? hideable : data);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+      //------------------------------------------------------------
+      // HACK for negative value stacking
+      if (stacked)
+        data[0].values.map(function(d,i) {
+          var posBase = 0, negBase = 0;
+          data.map(function(d) {
+            var f = d.values[i]
+            f.size = Math.abs(f.y);
+            if (f.y<0)  {
+              f.y1 = negBase;
+              negBase = negBase - f.size;
+            } else
+            {
+              f.y1 = f.size + posBase;
+              posBase = posBase + f.size;
+            }
+          });
+        });
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableWidth], groupSpacing);
+
+      //y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y + (stacked ? d.y1 : 0) }).concat(forceY)))
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return stacked ? (d.y > 0 ? d.y1 : d.y1 + d.y ) : d.y }).concat(forceY)))
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multibar').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibar');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d,i) { return i });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+        .transition()
+        .selectAll('rect.nv-bar')
+        .delay(function(d,i) {
+             return i * delay/ data[0].values.length;
+        })
+          .attr('y', function(d) { return stacked ? y0(d.y0) : y0(0) })
+          .attr('height', 0)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) });
+      groups
+          .transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('rect.nv-bar')
+          .data(function(d) { return (hideable && !data.length) ? hideable.values : d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('rect')
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .attr('x', function(d,i,j) {
+              return stacked ? 0 : (j * x.rangeBand() / data.length )
+          })
+          .attr('y', function(d) { return y0(stacked ? d.y0 : 0) })
+          .attr('height', 0)
+          .attr('width', x.rangeBand() / (stacked ? 1 : data.length) )
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })
+          ;
+      bars
+          .style('fill', function(d,i,j){ return color(d, j, i);  })
+          .style('stroke', function(d,i,j){ return color(d, j, i); })
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .transition()
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })
+
+      if (barColor) {
+        if (!disabled) disabled = data.map(function() { return true });
+        bars
+          .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })
+          .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });
+      }
+
+
+      if (stacked)
+          bars.transition()
+            .delay(function(d,i) {
+
+                  return i * delay / data[0].values.length;
+            })
+            .attr('y', function(d,i) {
+
+              return y((stacked ? d.y1 : 0));
+            })
+            .attr('height', function(d,i) {
+              return Math.max(Math.abs(y(d.y + (stacked ? d.y0 : 0)) - y((stacked ? d.y0 : 0))),1);
+            })
+            .attr('x', function(d,i) {
+                  return stacked ? 0 : (d.series * x.rangeBand() / data.length )
+            })
+            .attr('width', x.rangeBand() / (stacked ? 1 : data.length) );
+      else
+          bars.transition()
+            .delay(function(d,i) {
+                return i * delay/ data[0].values.length;
+            })
+            .attr('x', function(d,i) {
+              return d.series * x.rangeBand() / data.length
+            })
+            .attr('width', x.rangeBand() / data.length)
+            .attr('y', function(d,i) {
+                return getY(d,i) < 0 ?
+                        y(0) :
+                        y(0) - y(getY(d,i)) < 1 ?
+                          y(0) - 1 :
+                        y(getY(d,i)) || 0;
+            })
+            .attr('height', function(d,i) {
+                return Math.max(Math.abs(y(getY(d,i)) - y(0)),1) || 0;
+            });
+
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.stacked = function(_) {
+    if (!arguments.length) return stacked;
+    stacked = _;
+    return chart;
+  };
+
+  chart.stackOffset = function(_) {
+    if (!arguments.length) return stackOffset;
+    stackOffset = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.barColor = function(_) {
+    if (!arguments.length) return barColor;
+    barColor = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.disabled = function(_) {
+    if (!arguments.length) return disabled;
+    disabled = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.hideable = function(_) {
+    if (!arguments.length) return hideable;
+    hideable = _;
+    return chart;
+  };
+
+  chart.delay = function(_) {
+    if (!arguments.length) return delay;
+    delay = _;
+    return chart;
+  };
+
+  chart.groupSpacing = function(_) {
+    if (!arguments.length) return groupSpacing;
+    groupSpacing = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/multiBarChart.js b/src/models/multiBarChart.js
new file mode 100644
index 0000000..0323063
--- /dev/null
+++ b/src/models/multiBarChart.js
@@ -0,0 +1,524 @@
+
+nv.models.multiBarChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var multibar = nv.models.multiBar()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor()
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , reduceXTicks = true // if false a tick will show for every data point
+    , staggerLabels = false
+    , rotateLabels = 0
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' on ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , state = { stacked: false }
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = function() { return showControls ? 180 : 0 }
+    , transitionDuration = 250
+    ;
+
+  multibar
+    .stacked(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    .highlightZero(true)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = multibar.xScale();
+      y = multibar.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multiBarWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarWithLegend').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth - controlWidth());
+
+        if (multibar.barColor())
+          data.forEach(function(series,i) {
+            series.color = d3.rgb('#ccc').darker(i * 1.5).toString();
+          })
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Grouped', disabled: multibar.stacked() },
+          { key: 'Stacked', disabled: !multibar.stacked() }
+        ];
+
+        controls.width(controlWidth()).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      multibar
+        .disabled(data.map(function(series) { return series.disabled }))
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(multibar);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableWidth / 100 )
+            .tickSize(-availableHeight, 0);
+
+          g.select('.nv-x.nv-axis')
+              .attr('transform', 'translate(0,' + y.range()[0] + ')');
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+          var xTicks = g.select('.nv-x.nv-axis > g').selectAll('g');
+
+          xTicks
+              .selectAll('line, text')
+              .style('opacity', 1)
+
+          if (staggerLabels) {
+              var getTranslate = function(x,y) {
+                  return "translate(" + x + "," + y + ")";
+              };
+
+              var staggerUp = 5, staggerDown = 17;  //pixels to stagger by
+              // Issue #140
+              xTicks
+                .selectAll("text")
+                .attr('transform', function(d,i,j) { 
+                    return  getTranslate(0, (j % 2 == 0 ? staggerUp : staggerDown));
+                  });
+
+              var totalInBetweenTicks = d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;
+              g.selectAll(".nv-x.nv-axis .nv-axisMaxMin text")
+                .attr("transform", function(d,i) {
+                    return getTranslate(0, (i === 0 || totalInBetweenTicks % 2 !== 0) ? staggerDown : staggerUp);
+                });
+          }
+
+          if (reduceXTicks)
+            xTicks
+              .filter(function(d,i) {
+                  return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+                })
+              .selectAll('text, line')
+              .style('opacity', 0);
+
+          if(rotateLabels)
+            xTicks
+              .selectAll('.tick text')
+              .attr('transform', 'rotate(' + rotateLabels + ' 0,0)')
+              .style('text-anchor', rotateLabels > 0 ? 'start' : 'end');
+          
+          g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')
+              .style('opacity', 1);
+      }
+
+
+      if (showYAxis) {      
+          yAxis
+            .scale(y)
+            .ticks( availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+
+      //------------------------------------------------------------
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        state.stacked = multibar.stacked();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode)
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.stacked !== 'undefined') {
+          multibar.stacked(e.stacked);
+          state.stacked = e.stacked;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.multibar = multibar;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'clipEdge',
+   'id', 'stacked', 'stackOffset', 'delay', 'barColor','groupSpacing');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.reduceXTicks= function(_) {
+    if (!arguments.length) return reduceXTicks;
+    reduceXTicks = _;
+    return chart;
+  };
+
+  chart.rotateLabels = function(_) {
+    if (!arguments.length) return rotateLabels;
+    rotateLabels = _;
+    return chart;
+  }
+
+  chart.staggerLabels = function(_) {
+    if (!arguments.length) return staggerLabels;
+    staggerLabels = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+  
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/multiBarHorizontal.js b/src/models/multiBarHorizontal.js
new file mode 100644
index 0000000..d617ae1
--- /dev/null
+++ b/src/models/multiBarHorizontal.js
@@ -0,0 +1,447 @@
+
+nv.models.multiBarHorizontal = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.ordinal()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , color = nv.utils.defaultColor()
+    , barColor = null // adding the ability to set the color for each rather than the whole group
+    , disabled // used in conjunction with barColor to communicate from multiBarHorizontalChart what series are disabled
+    , stacked = false
+    , showValues = false
+    , showBarLabels = false
+    , valuePadding = 60
+    , valueFormat = d3.format(',.2f')
+    , delay = 1200
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      if (stacked)
+        data = d3.layout.stack()
+                 .offset('zero')
+                 .values(function(d){ return d.values })
+                 .y(getY)
+                 (data);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+
+
+      //------------------------------------------------------------
+      // HACK for negative value stacking
+      if (stacked)
+        data[0].values.map(function(d,i) {
+          var posBase = 0, negBase = 0;
+          data.map(function(d) {
+            var f = d.values[i]
+            f.size = Math.abs(f.y);
+            if (f.y<0)  {
+              f.y1 = negBase - f.size;
+              negBase = negBase - f.size;
+            } else
+            {
+              f.y1 = posBase;
+              posBase = posBase + f.size;
+            }
+          });
+        });
+
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0, y1: d.y1 }
+              })
+            });
+
+      x   .domain(xDomain || d3.merge(seriesData).map(function(d) { return d.x }))
+          .rangeBands(xRange || [0, availableHeight], .1);
+
+      //y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y + (stacked ? d.y0 : 0) }).concat(forceY)))
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return stacked ? (d.y > 0 ? d.y1 + d.y : d.y1 ) : d.y }).concat(forceY)))
+
+      if (showValues && !stacked)
+        y.range(yRange || [(y.domain()[0] < 0 ? valuePadding : 0), availableWidth - (y.domain()[1] > 0 ? valuePadding : 0) ]);
+      else
+        y.range(yRange || [0, availableWidth]);
+
+      x0 = x0 || x;
+      y0 = y0 || d3.scale.linear().domain(y.domain()).range([y(0),y(0)]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-multibarHorizontal').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibarHorizontal');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d,i) { return i });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit().transition()
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) });
+      groups.transition()
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('g.nv-bar')
+          .data(function(d) { return d.values });
+
+      bars.exit().remove();
+
+
+      var barsEnter = bars.enter().append('g')
+          .attr('transform', function(d,i,j) {
+              return 'translate(' + y0(stacked ? d.y0 : 0) + ',' + (stacked ? 0 : (j * x.rangeBand() / data.length ) + x(getX(d,i))) + ')'
+          });
+
+      barsEnter.append('rect')
+          .attr('width', 0)
+          .attr('height', x.rangeBand() / (stacked ? 1 : data.length) )
+
+      bars
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [ y(getY(d,i) + (stacked ? d.y0 : 0)), x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length) ],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (x.rangeBand() * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+
+
+      barsEnter.append('text');
+
+      if (showValues && !stacked) {
+        bars.select('text')
+            .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'end' : 'start' })
+            .attr('y', x.rangeBand() / (data.length * 2))
+            .attr('dy', '.32em')
+            .text(function(d,i) { return valueFormat(getY(d,i)) })
+        bars.transition()
+          .select('text')
+            .attr('x', function(d,i) { return getY(d,i) < 0 ? -4 : y(getY(d,i)) - y(0) + 4 })
+      } else {
+        bars.selectAll('text').text('');
+      }
+
+      if (showBarLabels && !stacked) {
+        barsEnter.append('text').classed('nv-bar-label',true);
+        bars.select('text.nv-bar-label')
+            .attr('text-anchor', function(d,i) { return getY(d,i) < 0 ? 'start' : 'end' })
+            .attr('y', x.rangeBand() / (data.length * 2))
+            .attr('dy', '.32em')
+            .text(function(d,i) { return getX(d,i) });
+        bars.transition()
+          .select('text.nv-bar-label')
+            .attr('x', function(d,i) { return getY(d,i) < 0 ? y(0) - y(getY(d,i)) + 4 : -4 });
+      }
+      else {
+        bars.selectAll('text.nv-bar-label').text('');
+      }
+
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+
+      if (barColor) {
+        if (!disabled) disabled = data.map(function() { return true });
+        bars
+          .style('fill', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); })
+          .style('stroke', function(d,i,j) { return d3.rgb(barColor(d,i)).darker(  disabled.map(function(d,i) { return i }).filter(function(d,i){ return !disabled[i]  })[j]   ).toString(); });
+      }
+
+      if (stacked)
+        bars.transition()
+            .attr('transform', function(d,i) {
+              return 'translate(' + y(d.y1) + ',' + x(getX(d,i)) + ')'
+            })
+          .select('rect')
+            .attr('width', function(d,i) {
+              return Math.abs(y(getY(d,i) + d.y0) - y(d.y0))
+            })
+            .attr('height', x.rangeBand() );
+      else
+        bars.transition()
+            .attr('transform', function(d,i) {
+              //TODO: stacked must be all positive or all negative, not both?
+              return 'translate(' +
+              (getY(d,i) < 0 ? y(getY(d,i)) : y(0))
+              + ',' +
+              (d.series * x.rangeBand() / data.length
+              +
+              x(getX(d,i)) )
+              + ')'
+            })
+          .select('rect')
+            .attr('height', x.rangeBand() / data.length )
+            .attr('width', function(d,i) {
+              return Math.max(Math.abs(y(getY(d,i)) - y(0)),1)
+            });
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.stacked = function(_) {
+    if (!arguments.length) return stacked;
+    stacked = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.barColor = function(_) {
+    if (!arguments.length) return barColor;
+    barColor = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.disabled = function(_) {
+    if (!arguments.length) return disabled;
+    disabled = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.delay = function(_) {
+    if (!arguments.length) return delay;
+    delay = _;
+    return chart;
+  };
+
+  chart.showValues = function(_) {
+    if (!arguments.length) return showValues;
+    showValues = _;
+    return chart;
+  };
+
+  chart.showBarLabels = function(_) {
+    if (!arguments.length) return showBarLabels;
+    showBarLabels = _;
+    return chart;
+  };
+
+
+  chart.valueFormat= function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.valuePadding = function(_) {
+    if (!arguments.length) return valuePadding;
+    valuePadding = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/multiBarHorizontalChart.js b/src/models/multiBarHorizontalChart.js
new file mode 100644
index 0000000..4b54559
--- /dev/null
+++ b/src/models/multiBarHorizontalChart.js
@@ -0,0 +1,461 @@
+
+nv.models.multiBarHorizontalChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var multibar = nv.models.multiBarHorizontal()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend().height(30)
+    , controls = nv.models.legend().height(30)
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor()
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , stacked = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + ' - ' + x + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , state = { stacked: stacked }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = function() { return showControls ? 180 : 0 }
+    , transitionDuration = 250
+    ;
+
+  multibar
+    .stacked(stacked)
+    ;
+  xAxis
+    .orient('left')
+    .tickPadding(5)
+    .highlightZero(false)
+    .showMaxMin(false)
+    .tickFormat(function(d) { return d })
+    ;
+  yAxis
+    .orient('bottom')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'e' : 'w', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart) };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = multibar.xScale();
+      y = multibar.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multiBarHorizontalChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarHorizontalChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis')
+            .append('g').attr('class', 'nv-zeroLine')
+            .append('line');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth - controlWidth());
+
+        if (multibar.barColor())
+          data.forEach(function(series,i) {
+            series.color = d3.rgb('#ccc').darker(i * 1.5).toString();
+          })
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + controlWidth() + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Grouped', disabled: multibar.stacked() },
+          { key: 'Stacked', disabled: !multibar.stacked() }
+        ];
+
+        controls.width(controlWidth()).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      multibar
+        .disabled(data.map(function(series) { return series.disabled }))
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      barsWrap.transition().call(multibar);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+          xAxis
+            .scale(x)
+            .ticks( availableHeight / 24 )
+            .tickSize(-availableWidth, 0);
+
+          g.select('.nv-x.nv-axis').transition()
+              .call(xAxis);
+
+          var xTicks = g.select('.nv-x.nv-axis').selectAll('g');
+
+          xTicks
+              .selectAll('line, text');
+      }
+
+      if (showYAxis) {
+          yAxis
+            .scale(y)
+            .ticks( availableWidth / 100 )
+            .tickSize( -availableHeight, 0);
+
+          g.select('.nv-y.nv-axis')
+              .attr('transform', 'translate(0,' + availableHeight + ')');
+          g.select('.nv-y.nv-axis').transition()
+              .call(yAxis);
+      }
+
+      // Zero line
+      g.select(".nv-zeroLine line")
+        .attr("x1", y(0))
+        .attr("x2", y(0))
+        .attr("y1", 0)
+        .attr("y2", -availableHeight)
+        ;
+
+      //------------------------------------------------------------
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        state.stacked = multibar.stacked();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.stacked !== 'undefined') {
+          multibar.stacked(e.stacked);
+          state.stacked = e.stacked;
+        }
+
+        chart.update();
+      });
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.multibar = multibar;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY',
+    'clipEdge', 'id', 'delay', 'showValues','showBarLabels', 'valueFormat', 'stacked', 'barColor');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/multiBarTimeSeries.js b/src/models/multiBarTimeSeries.js
new file mode 100644
index 0000000..abc062c
--- /dev/null
+++ b/src/models/multiBarTimeSeries.js
@@ -0,0 +1,384 @@
+nv.models.multiBarTimeSeries = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , x = d3.time.scale()
+    , y = d3.scale.linear()
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , forceY = [0] // 0 is forced by default.. this makes sense for the majority of bar graphs... user can always do chart.forceY([]) to remove
+    , clipEdge = true
+    , stacked = false
+    , color = nv.utils.defaultColor()
+    , delay = 1200
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0 //used to store previous scales
+      ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      if (stacked)
+        data = d3.layout.stack()
+                 .offset('zero')
+                 .values(function(d){ return d.values })
+                 .y(getY)
+                 (data);
+
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain) ? [] : // if we know xDomain and yDomain, no need to calculate
+            data.map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: getX(d,i), y: getY(d,i), y0: d.y0 }
+              })
+            });
+
+      x   .domain(xDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.x })))
+          .range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(d3.merge(seriesData).map(function(d) { return d.y + (stacked ? d.y0 : 0) }).concat(forceY)))
+          .range(yRange || [availableHeight, 0]);
+
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multibar').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multibar');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-groups');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      d3.transition(groups.exit())
+          //.style('stroke-opacity', 1e-6)
+          //.style('fill-opacity', 1e-6)
+        .selectAll('rect.nv-bar')
+        .delay(function(d,i) { return i * delay/ data[0].values.length })
+          .attr('y', function(d) { return stacked ? y0(d.y0) : y0(0) })
+          .attr('height', 0)
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover })
+          .style('fill', function(d,i){ return color(d, i) })
+          .style('stroke', function(d,i){ return color(d, i) });
+      d3.transition(groups)
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .75);
+
+
+      var bars = groups.selectAll('rect.nv-bar')
+          .data(function(d) { return d.values });
+
+      bars.exit().remove();
+
+      var maxElements = 0;
+      for(var ei=0; ei<seriesData.length; ei+=1) {
+          maxElements = Math.max(seriesData[ei].length, maxElements);
+      }
+
+      var bandWidth = (availableWidth / maxElements)-0.1;
+      var barWidth = bandWidth / data.length;
+
+      var barsEnter = bars.enter().append('rect')
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .attr('x', function(d,i,j) {
+              return stacked ? 0 : (i * bandWidth) + ( j * barWidth )
+          })
+          .attr('y', function(d) { return y0(stacked ? d.y0 : 0) })
+          .attr('height', 0)
+          .attr('width', stacked ? bandWidth : barWidth );
+      bars
+          .on('mouseover', function(d,i) { //TODO: figure out why j works above, but not here
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (barWidth * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.elementMouseout({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+          })
+          .on('click', function(d,i) {
+            dispatch.elementClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (barWidth * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+            dispatch.elementDblClick({
+              value: getY(d,i),
+              point: d,
+              series: data[d.series],
+              pos: [x(getX(d,i)) + (barWidth * (stacked ? data.length / 2 : d.series + .5) / data.length), y(getY(d,i) + (stacked ? d.y0 : 0))],  // TODO: Figure out why the value appears to be shifted
+              pointIndex: i,
+              seriesIndex: d.series,
+              e: d3.event
+            });
+            d3.event.stopPropagation();
+          });
+      bars
+          .attr('class', function(d,i) { return getY(d,i) < 0 ? 'nv-bar negative' : 'nv-bar positive'})
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',0)'; })
+      if (stacked)
+        d3.transition(bars)
+            .delay(function(d,i) { return i * delay / data[0].values.length })
+            .attr('y', function(d,i) {
+              return y(getY(d,i) + (stacked ? d.y0 : 0));
+            })
+            .attr('height', function(d,i) {
+              return Math.abs(y(d.y + (stacked ? d.y0 : 0)) - y((stacked ? d.y0 : 0)))
+            })
+            .each('end', function() {
+              d3.transition(d3.select(this))
+                .attr('x', function(d,i) {
+                  return stacked ? 0 : (i * bandWidth) + ( j * barWidth )
+                })
+                .attr('width', stacked ? bandWidth : barWidth );
+            })
+      else
+        d3.transition(bars)
+          .delay(function(d,i) { return i * delay/ data[0].values.length })
+            .attr('x', function(d,i) {
+              return d.series * barWidth
+            })
+            .attr('width', barWidth)
+            .each('end', function() {
+              d3.transition(d3.select(this))
+                .attr('y', function(d,i) {
+                  return getY(d,i) < 0 ?
+                    y(0) :
+                    y(getY(d,i))
+                })
+                .attr('height', function(d,i) {
+                  return Math.abs(y(getY(d,i)) - y(0))
+                });
+            })
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.stacked = function(_) {
+    if (!arguments.length) return stacked;
+    stacked = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.delay = function(_) {
+    if (!arguments.length) return delay;
+    delay = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
diff --git a/src/models/multiBarTimeSeriesChart.js b/src/models/multiBarTimeSeriesChart.js
new file mode 100644
index 0000000..5aebafa
--- /dev/null
+++ b/src/models/multiBarTimeSeriesChart.js
@@ -0,0 +1,405 @@
+nv.models.multiBarTimeSeriesChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var multibar = nv.models.multiBarTimeSeries()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor()
+    , showControls = true
+    , showLegend = true
+    , reduceXTicks = true // if false a tick will show for every data point
+    , rotateLabels = 0
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' on ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide')
+    ;
+
+  multibar
+    .stacked(false)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    .highlightZero(false)
+    .showMaxMin(false)
+    ;
+  yAxis
+    .orient('left')
+    .tickFormat(d3.format(',.1f'))
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(multibar.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(multibar.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { selection.transition().call(chart) };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = multibar.xScale();
+      y = multibar.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-multiBarWithLegend').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-multiBarWithLegend').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-barsWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width(availableWidth / 2);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          { key: 'Grouped', disabled: multibar.stacked() },
+          { key: 'Stacked', disabled: !multibar.stacked() }
+        ];
+
+        controls.width(180).color(['#444', '#444', '#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      multibar
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color(d, i);
+        }).filter(function(d,i) { return !data[i].disabled }))
+
+
+      var barsWrap = g.select('.nv-barsWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+
+      d3.transition(barsWrap).call(multibar);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      xAxis
+        .scale(x)
+        .ticks(availableWidth / 100)        
+        .tickSize(-availableHeight, 0);
+
+      g.select('.nv-x.nv-axis')
+          .attr('transform', 'translate(0,' + y.range()[0] + ')');
+      d3.transition(g.select('.nv-x.nv-axis'))
+          .call(xAxis);
+
+      var xTicks = g.select('.nv-x.nv-axis > g').selectAll('g');
+
+      xTicks
+          .selectAll('line, text')
+          .style('opacity', 1)
+
+      if (reduceXTicks)
+        xTicks
+          .filter(function(d,i) {
+              return i % Math.ceil(data[0].values.length / (availableWidth / 100)) !== 0;
+            })
+          .selectAll('text, line')
+          .style('opacity', 0);
+
+      if(rotateLabels)
+        xTicks
+            .selectAll('text')
+            .attr('transform', function(d,i,j) { return 'rotate('+rotateLabels+' 0,0)' })
+            .attr('text-transform', rotateLabels > 0 ? 'start' : 'end');
+
+      yAxis
+        .scale(y)
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.nv-y.nv-axis'))
+          .call(yAxis);
+
+      //------------------------------------------------------------
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        if (!data.filter(function(d) { return !d.disabled }).length) {
+          data.map(function(d) {
+            d.disabled = false;
+            wrap.selectAll('.nv-series').classed('disabled', false);
+            return d;
+          });
+        }
+
+        selection.transition().call(chart);
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        switch (d.key) {
+          case 'Grouped':
+            multibar.stacked(false);
+            break;
+          case 'Stacked':
+            multibar.stacked(true);
+            break;
+        }
+
+        selection.transition().call(chart);
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode)
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  multibar.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  multibar.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.multibar = multibar;
+  chart.legend = legend;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+
+  d3.rebind(chart, multibar, 'x', 'y', 'xDomain', 'yDomain', 'xRange', 'yRange', 'forceX', 'forceY', 'clipEdge', 'id', 'stacked', 'delay');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.reduceXTicks= function(_) {
+    if (!arguments.length) return reduceXTicks;
+    reduceXTicks = _;
+    return chart;
+  };
+
+  chart.rotateLabels = function(_) {
+    if (!arguments.length) return rotateLabels;
+    rotateLabels = _;
+    return chart;
+  }
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
+
diff --git a/src/models/multiChart.js b/src/models/multiChart.js
new file mode 100644
index 0000000..e3e2c5e
--- /dev/null
+++ b/src/models/multiChart.js
@@ -0,0 +1,452 @@
+nv.models.multiChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 30, right: 20, bottom: 50, left: 60},
+      color = d3.scale.category20().range(),
+      width = null, 
+      height = null,
+      showLegend = true,
+      tooltips = true,
+      tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' at ' + x + '</p>'
+      },
+      x,
+      y,
+      yDomain1,
+      yDomain2
+      ; //can be accessed via chart.lines.[x/y]Scale()
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x = d3.scale.linear(),
+      yScale1 = d3.scale.linear(),
+      yScale2 = d3.scale.linear(),
+
+      lines1 = nv.models.line().yScale(yScale1),
+      lines2 = nv.models.line().yScale(yScale2),
+
+      bars1 = nv.models.multiBar().stacked(false).yScale(yScale1),
+      bars2 = nv.models.multiBar().stacked(false).yScale(yScale2),
+
+      stack1 = nv.models.stackedArea().yScale(yScale1),
+      stack2 = nv.models.stackedArea().yScale(yScale2),
+
+      xAxis = nv.models.axis().scale(x).orient('bottom').tickPadding(5),
+      yAxis1 = nv.models.axis().scale(yScale1).orient('left'),
+      yAxis2 = nv.models.axis().scale(yScale2).orient('right'),
+
+      legend = nv.models.legend().height(30),
+      dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(lines1.x()(e.point, e.pointIndex)),
+        y = ((e.series.yAxis == 2) ? yAxis2 : yAxis1).tickFormat()(lines1.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, undefined, undefined, offsetElement.offsetParent);
+  };
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      chart.update = function() { container.transition().call(chart); };
+      chart.container = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      var dataLines1 = data.filter(function(d) {return !d.disabled && d.type == 'line' && d.yAxis == 1})
+      var dataLines2 = data.filter(function(d) {return !d.disabled && d.type == 'line' && d.yAxis == 2})
+      var dataBars1 = data.filter(function(d) {return !d.disabled && d.type == 'bar' && d.yAxis == 1})
+      var dataBars2 = data.filter(function(d) {return !d.disabled && d.type == 'bar' && d.yAxis == 2})
+      var dataStack1 = data.filter(function(d) {return !d.disabled && d.type == 'area' && d.yAxis == 1})
+      var dataStack2 = data.filter(function(d) {return !d.disabled && d.type == 'area' && d.yAxis == 2})
+
+      var series1 = data.filter(function(d) {return !d.disabled && d.yAxis == 1})
+            .map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: d.x, y: d.y }
+              })
+            })
+
+      var series2 = data.filter(function(d) {return !d.disabled && d.yAxis == 2})
+            .map(function(d) {
+              return d.values.map(function(d,i) {
+                return { x: d.x, y: d.y }
+              })
+            })
+
+      x   .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))
+          .range([0, availableWidth]);
+
+      var wrap = container.selectAll('g.wrap.multiChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 multiChart').append('g');
+
+      gEnter.append('g').attr('class', 'x axis');
+      gEnter.append('g').attr('class', 'y1 axis');
+      gEnter.append('g').attr('class', 'y2 axis');
+      gEnter.append('g').attr('class', 'lines1Wrap');
+      gEnter.append('g').attr('class', 'lines2Wrap');
+      gEnter.append('g').attr('class', 'bars1Wrap');
+      gEnter.append('g').attr('class', 'bars2Wrap');
+      gEnter.append('g').attr('class', 'stack1Wrap');
+      gEnter.append('g').attr('class', 'stack2Wrap');
+      gEnter.append('g').attr('class', 'legendWrap');
+
+      var g = wrap.select('g');
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        g.select('.legendWrap')
+            .datum(data.map(function(series) { 
+              series.originalKey = series.originalKey === undefined ? series.key : series.originalKey;
+              series.key = series.originalKey + (series.yAxis == 1 ? '' : ' (right axis)');
+              return series;
+            }))
+          .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.legendWrap')
+            .attr('transform', 'translate(' + ( availableWidth / 2 ) + ',' + (-margin.top) +')');
+      }
+
+
+      lines1
+        .width(availableWidth)
+        .height(availableHeight)
+        .interpolate("monotone")
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'line'}));
+
+      lines2
+        .width(availableWidth)
+        .height(availableHeight)
+        .interpolate("monotone")
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'line'}));
+
+      bars1
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'bar'}));
+
+      bars2
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'bar'}));
+
+      stack1
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'area'}));
+
+      stack2
+        .width(availableWidth)
+        .height(availableHeight)
+        .color(data.map(function(d,i) {
+          return d.color || color[i % color.length];
+        }).filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'area'}));
+
+      g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      var lines1Wrap = g.select('.lines1Wrap')
+          .datum(dataLines1)
+      var bars1Wrap = g.select('.bars1Wrap')
+          .datum(dataBars1)
+      var stack1Wrap = g.select('.stack1Wrap')
+          .datum(dataStack1)
+
+      var lines2Wrap = g.select('.lines2Wrap')
+          .datum(dataLines2)
+      var bars2Wrap = g.select('.bars2Wrap')
+          .datum(dataBars2)
+      var stack2Wrap = g.select('.stack2Wrap')
+          .datum(dataStack2)
+
+      var extraValue1 = dataStack1.length ? dataStack1.map(function(a){return a.values}).reduce(function(a,b){
+        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})
+      }).concat([{x:0, y:0}]) : []
+      var extraValue2 = dataStack2.length ? dataStack2.map(function(a){return a.values}).reduce(function(a,b){
+        return a.map(function(aVal,i){return {x: aVal.x, y: aVal.y + b[i].y}})
+      }).concat([{x:0, y:0}]) : []
+
+      yScale1 .domain(yDomain1 || d3.extent(d3.merge(series1).concat(extraValue1), function(d) { return d.y } ))
+              .range([0, availableHeight])
+
+      yScale2 .domain(yDomain2 || d3.extent(d3.merge(series2).concat(extraValue2), function(d) { return d.y } ))
+              .range([0, availableHeight])
+
+      lines1.yDomain(yScale1.domain())
+      bars1.yDomain(yScale1.domain())
+      stack1.yDomain(yScale1.domain())
+
+      lines2.yDomain(yScale2.domain())
+      bars2.yDomain(yScale2.domain())
+      stack2.yDomain(yScale2.domain())
+
+      if(dataStack1.length){d3.transition(stack1Wrap).call(stack1);}
+      if(dataStack2.length){d3.transition(stack2Wrap).call(stack2);}
+
+      if(dataBars1.length){d3.transition(bars1Wrap).call(bars1);}
+      if(dataBars2.length){d3.transition(bars2Wrap).call(bars2);}
+
+      if(dataLines1.length){d3.transition(lines1Wrap).call(lines1);}
+      if(dataLines2.length){d3.transition(lines2Wrap).call(lines2);}
+      
+
+
+      xAxis
+        .ticks( availableWidth / 100 )
+        .tickSize(-availableHeight, 0);
+
+      g.select('.x.axis')
+          .attr('transform', 'translate(0,' + availableHeight + ')');
+      d3.transition(g.select('.x.axis'))
+          .call(xAxis);
+
+      yAxis1
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+
+      d3.transition(g.select('.y1.axis'))
+          .call(yAxis1);
+
+      yAxis2
+        .ticks( availableHeight / 36 )
+        .tickSize( -availableWidth, 0);
+
+      d3.transition(g.select('.y2.axis'))
+          .call(yAxis2);
+
+      g.select('.y2.axis')
+          .style('opacity', series2.length ? 1 : 0)
+          .attr('transform', 'translate(' + x.range()[1] + ',0)');
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        chart.update();
+      });
+     
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  lines1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  lines2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  bars2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  bars2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  stack1.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    if (!Math.round(stack1.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stack1.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  stack2.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    if (!Math.round(stack2.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stack2.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+    lines1.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines1.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  lines2.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  lines2.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+
+
+  //============================================================
+  // Global getters and setters
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.lines1 = lines1;
+  chart.lines2 = lines2;
+  chart.bars1 = bars1;
+  chart.bars2 = bars2;
+  chart.stack1 = stack1;
+  chart.stack2 = stack2;
+  chart.xAxis = xAxis;
+  chart.yAxis1 = yAxis1;
+  chart.yAxis2 = yAxis2;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    lines1.x(_);
+    bars1.x(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    lines1.y(_);
+    bars1.y(_);
+    return chart;
+  };
+
+  chart.yDomain1 = function(_) {
+    if (!arguments.length) return yDomain1;
+    yDomain1 = _;
+    return chart;
+  };
+
+  chart.yDomain2 = function(_) {
+    if (!arguments.length) return yDomain2;
+    yDomain2 = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin = _;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = _;
+    legend.color(_);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  return chart;
+}
+
diff --git a/src/models/ohlcBar.js b/src/models/ohlcBar.js
new file mode 100644
index 0000000..46f2b60
--- /dev/null
+++ b/src/models/ohlcBar.js
@@ -0,0 +1,380 @@
+
+nv.models.ohlcBar = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , getOpen = function(d) { return d.open }
+    , getClose = function(d) { return d.close }
+    , getHigh = function(d) { return d.high }
+    , getLow = function(d) { return d.low }
+    , forceX = []
+    , forceY = []
+    , padData     = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart
+    , clipEdge = true
+    , color = nv.utils.defaultColor()
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  //TODO: store old scales for transitions
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data[0].values.map(getX).concat(forceX) ));
+
+      if (padData)
+        x.range(xRange || [availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || [
+            d3.min(data[0].values.map(getLow).concat(forceY)),
+            d3.max(data[0].values.map(getHigh).concat(forceY))
+          ])
+          .range(yRange || [availableHeight, 0]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] + y.domain()[0] * 0.01, y.domain()[1] - y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = d3.select(this).selectAll('g.nv-wrap.nv-ohlcBar').data([data[0].values]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-ohlcBar');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-ticks');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+            dispatch.chartClick({
+                data: d,
+                index: i,
+                pos: d3.event,
+                id: id
+            });
+          });
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-chart-clip-path-' + id)
+        .append('rect');
+
+      wrap.select('#nv-chart-clip-path-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-chart-clip-path-' + id + ')' : '');
+
+
+
+      var ticks = wrap.select('.nv-ticks').selectAll('.nv-tick')
+          .data(function(d) { return d });
+
+      ticks.exit().remove();
+
+
+      var ticksEnter = ticks.enter().append('path')
+          .attr('class', function(d,i,j) { return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i })
+          .attr('d', function(d,i) {
+            var w = (availableWidth / data[0].values.length) * .9;
+            return 'm0,0l0,'
+                 + (y(getOpen(d,i))
+                 - y(getHigh(d,i)))
+                 + 'l'
+                 + (-w/2)
+                 + ',0l'
+                 + (w/2)
+                 + ',0l0,'
+                 + (y(getLow(d,i)) - y(getOpen(d,i)))
+                 + 'l0,'
+                 + (y(getClose(d,i))
+                 - y(getLow(d,i)))
+                 + 'l'
+                 + (w/2)
+                 + ',0l'
+                 + (-w/2)
+                 + ',0z';
+          })
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })
+          //.attr('fill', function(d,i) { return color[0]; })
+          //.attr('stroke', function(d,i) { return color[0]; })
+          //.attr('x', 0 )
+          //.attr('y', function(d,i) {  return y(Math.max(0, getY(d,i))) })
+          //.attr('height', function(d,i) { return Math.abs(y(getY(d,i)) - y(0)) })
+          .on('mouseover', function(d,i) {
+            d3.select(this).classed('hover', true);
+            dispatch.elementMouseover({
+                point: d,
+                series: data[0],
+                pos: [x(getX(d,i)), y(getY(d,i))],  // TODO: Figure out why the value appears to be shifted
+                pointIndex: i,
+                seriesIndex: 0,
+                e: d3.event
+            });
+
+          })
+          .on('mouseout', function(d,i) {
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    point: d,
+                    series: data[0],
+                    pointIndex: i,
+                    seriesIndex: 0,
+                    e: d3.event
+                });
+          })
+          .on('click', function(d,i) {
+                dispatch.elementClick({
+                    //label: d[label],
+                    value: getY(d,i),
+                    data: d,
+                    index: i,
+                    pos: [x(getX(d,i)), y(getY(d,i))],
+                    e: d3.event,
+                    id: id
+                });
+              d3.event.stopPropagation();
+          })
+          .on('dblclick', function(d,i) {
+              dispatch.elementDblClick({
+                  //label: d[label],
+                  value: getY(d,i),
+                  data: d,
+                  index: i,
+                  pos: [x(getX(d,i)), y(getY(d,i))],
+                  e: d3.event,
+                  id: id
+              });
+              d3.event.stopPropagation();
+          });
+
+      ticks
+          .attr('class', function(d,i,j) { return (getOpen(d,i) > getClose(d,i) ? 'nv-tick negative' : 'nv-tick positive') + ' nv-tick-' + j + '-' + i })
+      d3.transition(ticks)
+          .attr('transform', function(d,i) { return 'translate(' + x(getX(d,i)) + ',' + y(getHigh(d,i)) + ')'; })
+          .attr('d', function(d,i) {
+            var w = (availableWidth / data[0].values.length) * .9;
+            return 'm0,0l0,'
+                 + (y(getOpen(d,i))
+                 - y(getHigh(d,i)))
+                 + 'l'
+                 + (-w/2)
+                 + ',0l'
+                 + (w/2)
+                 + ',0l0,'
+                 + (y(getLow(d,i))
+                 - y(getOpen(d,i)))
+                 + 'l0,'
+                 + (y(getClose(d,i))
+                 - y(getLow(d,i)))
+                 + 'l'
+                 + (w/2)
+                 + ',0l'
+                 + (-w/2)
+                 + ',0z';
+          })
+          //.attr('width', (availableWidth / data[0].values.length) * .9 )
+
+
+      //d3.transition(ticks)
+          //.attr('y', function(d,i) {  return y(Math.max(0, getY(d,i))) })
+          //.attr('height', function(d,i) { return Math.abs(y(getY(d,i)) - y(0)) });
+          //.order();  // not sure if this makes any sense for this model
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = _;
+    return chart;
+  };
+
+  chart.open = function(_) {
+    if (!arguments.length) return getOpen;
+    getOpen = _;
+    return chart;
+  };
+
+  chart.close = function(_) {
+    if (!arguments.length) return getClose;
+    getClose = _;
+    return chart;
+  };
+
+  chart.high = function(_) {
+    if (!arguments.length) return getHigh;
+    getHigh = _;
+    return chart;
+  };
+
+  chart.low = function(_) {
+    if (!arguments.length) return getLow;
+    getLow = _;
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/parallelCoordinates.js b/src/models/parallelCoordinates.js
new file mode 100644
index 0000000..107154f
--- /dev/null
+++ b/src/models/parallelCoordinates.js
@@ -0,0 +1,239 @@
+
+//Code adapted from Jason Davies' "Parallel Coordinates"
+// http://bl.ocks.org/jasondavies/1341281
+
+nv.models.parallelCoordinates = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+
+  var margin = {top: 30, right: 10, bottom: 10, left: 10}
+    , width = 960
+    , height = 500
+    , x = d3.scale.ordinal()
+    , y = {}
+    , dimensions = []
+    , color = nv.utils.getColor(d3.scale.category20c().range())
+    , axisLabel = function(d) { return d; }
+    , filters = []
+    , active = []
+    , dispatch = d3.dispatch('brush')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      active = data; //set all active before first brush call
+
+      chart.update = function() { }; //This is a placeholder until this chart is made resizeable
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x
+        .rangePoints([0, availableWidth], 1)
+        .domain(dimensions);
+
+      // Extract the list of dimensions and create a scale for each.
+      dimensions.forEach(function(d) {
+          y[d] = d3.scale.linear()
+              .domain(d3.extent(data, function(p) { return +p[d]; }))
+              .range([availableHeight, 0]);
+
+          y[d].brush = d3.svg.brush().y(y[d]).on('brush', brush);
+
+          return d != 'name';
+        })
+
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-parallelCoordinates').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-parallelCoordinates');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      gEnter.append('g').attr('class', 'nv-parallelCoordinatesWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      var line = d3.svg.line(),
+          axis = d3.svg.axis().orient('left'),
+          background,
+          foreground;
+
+
+      // Add grey background lines for context.
+      background = gEnter.append('g')
+          .attr('class', 'background')
+        .selectAll('path')
+          .data(data)
+        .enter().append('path')
+          .attr('d', path)
+        ;
+
+      // Add blue foreground lines for focus.
+      foreground = gEnter.append('g')
+          .attr('class', 'foreground')
+        .selectAll('path')
+          .data(data)
+        .enter().append('path')
+          .attr('d', path)
+        ;
+
+      // Add a group element for each dimension.
+      var dimension = g.selectAll('.dimension')
+          .data(dimensions)
+        .enter().append('g')
+          .attr('class', 'dimension')
+          .attr('transform', function(d) { return 'translate(' + x(d) + ',0)'; });
+
+      // Add an axis and title.
+      dimension.append('g')
+          .attr('class', 'axis')
+          .each(function(d) { d3.select(this).call(axis.scale(y[d])); })
+        .append('text')
+          .attr('text-anchor', 'middle')
+          .attr('y', -9)
+          .text(String);
+
+      // Add and store a brush for each axis.
+      dimension.append('g')
+          .attr('class', 'brush')
+          .each(function(d) { d3.select(this).call(y[d].brush); })
+        .selectAll('rect')
+          .attr('x', -8)
+          .attr('width', 16);
+
+
+      // Returns the path for a given data point.
+      function path(d) {
+        return line(dimensions.map(function(p) { return [x(p), y[p](d[p])]; }));
+      }
+
+      // Handles a brush event, toggling the display of foreground lines.
+      function brush() {
+        var actives = dimensions.filter(function(p) { return !y[p].brush.empty(); }),
+            extents = actives.map(function(p) { return y[p].brush.extent(); });
+
+        filters = []; //erase current filters
+        actives.forEach(function(d,i) {
+          filters[i] = {
+            dimension: d,
+            extent: extents[i]
+          }
+        });
+
+        active = []; //erase current active list
+        foreground.style('display', function(d) {
+          var isActive = actives.every(function(p, i) {
+            return extents[i][0] <= d[p] && d[p] <= extents[i][1];
+          });
+          if (isActive) active.push(d);
+          return isActive ? null : 'none';
+        });
+
+        dispatch.brush({
+          filters: filters,
+          active: active
+        });
+
+      }
+
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_)
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.dimensions = function(_) {
+    if (!arguments.length) return dimensions;
+    dimensions = _;
+    return chart;
+  };
+
+  chart.filters = function() {
+    return filters;
+  };
+
+  chart.active = function() {
+    return active;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/pie.js b/src/models/pie.js
new file mode 100644
index 0000000..fa2d436
--- /dev/null
+++ b/src/models/pie.js
@@ -0,0 +1,409 @@
+nv.models.pie = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 500
+    , height = 500
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , getDescription = function(d) { return d.description }
+    , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
+    , color = nv.utils.defaultColor()
+    , valueFormat = d3.format(',.2f')
+    , showLabels = true
+    , pieLabelsOutside = true
+    , donutLabelsOutside = false
+    , labelType = "key"
+    , labelThreshold = .02 //if slice percentage is under this, don't show label
+    , donut = false
+    , labelSunbeamLayout = false
+    , startAngle = false
+    , endAngle = false
+    , donutRatio = 0.5
+    , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMouseover', 'elementMouseout')
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          radius = Math.min(availableWidth, availableHeight) / 2,
+          arcRadius = radius-(radius / 5),
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      //var wrap = container.selectAll('.nv-wrap.nv-pie').data([data]);
+      var wrap = container.selectAll('.nv-wrap.nv-pie').data(data);
+      var wrapEnter = wrap.enter().append('g').attr('class','nvd3 nv-wrap nv-pie nv-chart-' + id);
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-pie');
+      gEnter.append('g').attr('class', 'nv-pieLabels');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+      g.select('.nv-pie').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+      g.select('.nv-pieLabels').attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+
+      //------------------------------------------------------------
+
+
+      container
+          .on('click', function(d,i) {
+              dispatch.chartClick({
+                  data: d,
+                  index: i,
+                  pos: d3.event,
+                  id: id
+              });
+          });
+
+
+      var arc = d3.svg.arc()
+                  .outerRadius(arcRadius);
+
+      if (startAngle) arc.startAngle(startAngle)
+      if (endAngle) arc.endAngle(endAngle);
+      if (donut) arc.innerRadius(radius * donutRatio);
+
+      // Setup the Pie chart and choose the data element
+      var pie = d3.layout.pie()
+          .sort(null)
+          .value(function(d) { return d.disabled ? 0 : getY(d) });
+
+      var slices = wrap.select('.nv-pie').selectAll('.nv-slice')
+          .data(pie);
+
+      var pieLabels = wrap.select('.nv-pieLabels').selectAll('.nv-label')
+          .data(pie);
+
+      slices.exit().remove();
+      pieLabels.exit().remove();
+
+      var ae = slices.enter().append('g')
+              .attr('class', 'nv-slice')
+              .on('mouseover', function(d,i){
+                d3.select(this).classed('hover', true);
+                dispatch.elementMouseover({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    pointIndex: i,
+                    pos: [d3.event.pageX, d3.event.pageY],
+                    id: id
+                });
+              })
+              .on('mouseout', function(d,i){
+                d3.select(this).classed('hover', false);
+                dispatch.elementMouseout({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    id: id
+                });
+              })
+              .on('click', function(d,i) {
+                dispatch.elementClick({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+                d3.event.stopPropagation();
+              })
+              .on('dblclick', function(d,i) {
+                dispatch.elementDblClick({
+                    label: getX(d.data),
+                    value: getY(d.data),
+                    point: d.data,
+                    index: i,
+                    pos: d3.event,
+                    id: id
+                });
+                d3.event.stopPropagation();
+              });
+
+        slices
+            .attr('fill', function(d,i) { return color(d, i); })
+            .attr('stroke', function(d,i) { return color(d, i); });
+
+        var paths = ae.append('path')
+            .each(function(d) { this._current = d; });
+            //.attr('d', arc);
+
+        slices.select('path')
+          .transition()
+            .attr('d', arc)
+            .attrTween('d', arcTween);
+
+        if (showLabels) {
+          // This does the normal label
+          var labelsArc = d3.svg.arc().innerRadius(0);
+
+          if (pieLabelsOutside){ labelsArc = arc; }
+
+          if (donutLabelsOutside) { labelsArc = d3.svg.arc().outerRadius(arc.outerRadius()); }
+
+          pieLabels.enter().append("g").classed("nv-label",true)
+            .each(function(d,i) {
+                var group = d3.select(this);
+
+                group
+                  .attr('transform', function(d) {
+                       if (labelSunbeamLayout) {
+                         d.outerRadius = arcRadius + 10; // Set Outer Coordinate
+                         d.innerRadius = arcRadius + 15; // Set Inner Coordinate
+                         var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);
+                         if ((d.startAngle+d.endAngle)/2 < Math.PI) {
+                           rotateAngle -= 90;
+                         } else {
+                           rotateAngle += 90;
+                         }
+                         return 'translate(' + labelsArc.centroid(d) + ') rotate(' + rotateAngle + ')';
+                       } else {
+                         d.outerRadius = radius + 10; // Set Outer Coordinate
+                         d.innerRadius = radius + 15; // Set Inner Coordinate
+                         return 'translate(' + labelsArc.centroid(d) + ')'
+                       }
+                  });
+
+                group.append('rect')
+                    .style('stroke', '#fff')
+                    .style('fill', '#fff')
+                    .attr("rx", 3)
+                    .attr("ry", 3);
+
+                group.append('text')
+                    .style('text-anchor', labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle') //center the text on it's origin or begin/end if orthogonal aligned
+                    .style('fill', '#000')
+
+            });
+
+          var labelLocationHash = {};
+          var avgHeight = 14;
+          var avgWidth = 140;
+          var createHashKey = function(coordinates) {
+
+              return Math.floor(coordinates[0]/avgWidth) * avgWidth + ',' + Math.floor(coordinates[1]/avgHeight) * avgHeight;
+          };
+          pieLabels.transition()
+                .attr('transform', function(d) {
+                  if (labelSunbeamLayout) {
+                      d.outerRadius = arcRadius + 10; // Set Outer Coordinate
+                      d.innerRadius = arcRadius + 15; // Set Inner Coordinate
+                      var rotateAngle = (d.startAngle + d.endAngle) / 2 * (180 / Math.PI);
+                      if ((d.startAngle+d.endAngle)/2 < Math.PI) {
+                        rotateAngle -= 90;
+                      } else {
+                        rotateAngle += 90;
+                      }
+                      return 'translate(' + labelsArc.centroid(d) + ') rotate(' + rotateAngle + ')';
+                    } else {
+                      d.outerRadius = radius + 10; // Set Outer Coordinate
+                      d.innerRadius = radius + 15; // Set Inner Coordinate
+
+                      /*
+                      Overlapping pie labels are not good. What this attempts to do is, prevent overlapping.
+                      Each label location is hashed, and if a hash collision occurs, we assume an overlap.
+                      Adjust the label's y-position to remove the overlap.
+                      */
+                      var center = labelsArc.centroid(d);
+                      var hashKey = createHashKey(center);
+                      if (labelLocationHash[hashKey]) {
+                        center[1] -= avgHeight;
+                      }
+                      labelLocationHash[createHashKey(center)] = true;
+                      return 'translate(' + center + ')'
+                    }
+                });
+          pieLabels.select(".nv-label text")
+                .style('text-anchor', labelSunbeamLayout ? ((d.startAngle + d.endAngle) / 2 < Math.PI ? 'start' : 'end') : 'middle') //center the text on it's origin or begin/end if orthogonal aligned
+                .text(function(d, i) {
+                  var percent = (d.endAngle - d.startAngle) / (2 * Math.PI);
+                  var labelTypes = {
+                    "key" : getX(d.data),
+                    "value": getY(d.data),
+                    "percent": d3.format('%')(percent)
+                  };
+                  return (d.value && percent > labelThreshold) ? labelTypes[labelType] : '';
+                });
+        }
+
+
+        // Computes the angle of an arc, converting from radians to degrees.
+        function angle(d) {
+          var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
+          return a > 90 ? a - 180 : a;
+        }
+
+        function arcTween(a) {
+          a.endAngle = isNaN(a.endAngle) ? 0 : a.endAngle;
+          a.startAngle = isNaN(a.startAngle) ? 0 : a.startAngle;
+          if (!donut) a.innerRadius = 0;
+          var i = d3.interpolate(this._current, a);
+          this._current = i(0);
+          return function(t) {
+            return arc(i(t));
+          };
+        }
+
+        function tweenPie(b) {
+          b.innerRadius = 0;
+          var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
+          return function(t) {
+              return arc(i(t));
+          };
+        }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.values = function(_) {
+    nv.log("pie.values() is no longer supported.");
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = _;
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.description = function(_) {
+    if (!arguments.length) return getDescription;
+    getDescription = _;
+    return chart;
+  };
+
+  chart.showLabels = function(_) {
+    if (!arguments.length) return showLabels;
+    showLabels = _;
+    return chart;
+  };
+
+  chart.labelSunbeamLayout = function(_) {
+    if (!arguments.length) return labelSunbeamLayout;
+    labelSunbeamLayout = _;
+    return chart;
+  };
+
+  chart.donutLabelsOutside = function(_) {
+    if (!arguments.length) return donutLabelsOutside;
+    donutLabelsOutside = _;
+    return chart;
+  };
+
+  chart.pieLabelsOutside = function(_) {
+    if (!arguments.length) return pieLabelsOutside;
+    pieLabelsOutside = _;
+    return chart;
+  };
+
+  chart.labelType = function(_) {
+    if (!arguments.length) return labelType;
+    labelType = _;
+    labelType = labelType || "key";
+    return chart;
+  };
+
+  chart.donut = function(_) {
+    if (!arguments.length) return donut;
+    donut = _;
+    return chart;
+  };
+
+  chart.donutRatio = function(_) {
+    if (!arguments.length) return donutRatio;
+    donutRatio = _;
+    return chart;
+  };
+
+  chart.startAngle = function(_) {
+    if (!arguments.length) return startAngle;
+    startAngle = _;
+    return chart;
+  };
+
+  chart.endAngle = function(_) {
+    if (!arguments.length) return endAngle;
+    endAngle = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.valueFormat = function(_) {
+    if (!arguments.length) return valueFormat;
+    valueFormat = _;
+    return chart;
+  };
+
+  chart.labelThreshold = function(_) {
+    if (!arguments.length) return labelThreshold;
+    labelThreshold = _;
+    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/pieChart.js b/src/models/pieChart.js
new file mode 100644
index 0000000..b7346d3
--- /dev/null
+++ b/src/models/pieChart.js
@@ -0,0 +1,292 @@
+nv.models.pieChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var pie = nv.models.pie()
+    , legend = nv.models.legend()
+    ;
+
+  var margin = {top: 30, right: 20, bottom: 20, left: 20}
+    , width = null
+    , height = null
+    , showLegend = true
+    , color = nv.utils.defaultColor()
+    , tooltips = true
+    , tooltip = function(key, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + '</p>'
+      }
+    , state = {}
+    , defaultState = null
+    , noData = "No Data Available."
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var tooltipLabel = pie.description()(e.point) || pie.x()(e.point)
+    var left = e.pos[0] + ( (offsetElement && offsetElement.offsetLeft) || 0 ),
+        top = e.pos[1] + ( (offsetElement && offsetElement.offsetTop) || 0),
+        y = pie.valueFormat()(pie.y()(e.point)),
+        content = tooltip(tooltipLabel, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-pieChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-pieChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-pieWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend
+          .width( availableWidth )
+          .key(pie.x());
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      pie
+        .width(availableWidth)
+        .height(availableHeight);
+
+
+      var pieWrap = g.select('.nv-pieWrap')
+          .datum([data]);
+
+      d3.transition(pieWrap).call(pie);
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      pie.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+    });
+
+    return chart;
+  }
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  pie.dispatch.on('elementMouseover.tooltip', function(e) {
+    e.pos = [e.pos[0] +  margin.left, e.pos[1] + margin.top];
+    dispatch.tooltipShow(e);
+  });
+
+  dispatch.on('tooltipShow', function(e) {
+    if (tooltips) showTooltip(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.legend = legend;
+  chart.dispatch = dispatch;
+  chart.pie = pie;
+
+  d3.rebind(chart, pie, 'valueFormat', 'values', 'x', 'y', 'description', 'id', 'showLabels', 'donutLabelsOutside', 'pieLabelsOutside', 'labelType', 'donut', 'donutRatio', 'labelThreshold');
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    pie.color(color);
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/scatter.js b/src/models/scatter.js
new file mode 100644
index 0000000..16cbee6
--- /dev/null
+++ b/src/models/scatter.js
@@ -0,0 +1,674 @@
+
+nv.models.scatter = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin       = {top: 0, right: 0, bottom: 0, left: 0}
+    , width        = 960
+    , height       = 500
+    , color        = nv.utils.defaultColor() // chooses color
+    , id           = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't select one
+    , x            = d3.scale.linear()
+    , y            = d3.scale.linear()
+    , z            = d3.scale.linear() //linear because d3.svg.shape.size is treated as area
+    , getX         = function(d) { return d.x } // accessor to get the x value
+    , getY         = function(d) { return d.y } // accessor to get the y value
+    , getSize      = function(d) { return d.size || 1} // accessor to get the point size
+    , getShape     = function(d) { return d.shape || 'circle' } // accessor to get point shape
+    , onlyCircles  = true // Set to false to use shapes
+    , forceX       = [] // List of numbers to Force into the X scale (ie. 0, or a max / min, etc.)
+    , forceY       = [] // List of numbers to Force into the Y scale
+    , forceSize    = [] // List of numbers to Force into the Size scale
+    , interactive  = true // If true, plots a voronoi overlay for advanced point intersection
+    , pointKey     = null
+    , pointActive  = function(d) { return !d.notActive } // any points that return false will be filtered out
+    , padData      = false // If true, adds half a data points width to front and back, for lining up a line chart with a bar chart
+    , padDataOuter = .1 //outerPadding to imitate ordinal scale outer padding
+    , clipEdge     = false // if true, masks points within x and y scale
+    , clipVoronoi  = true // if true, masks each point with a circle... can turn off to slightly increase performance
+    , clipRadius   = function() { return 25 } // function to get the radius for voronoi point clips
+    , xDomain      = null // Override x domain (skips the calculation from data)
+    , yDomain      = null // Override y domain
+    , xRange       = null // Override x range
+    , yRange       = null // Override y range
+    , sizeDomain   = null // Override point size domain
+    , sizeRange    = null
+    , singlePoint  = false
+    , dispatch     = d3.dispatch('elementClick', 'elementMouseover', 'elementMouseout')
+    , useVoronoi   = true
+    ;
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0, z0 // used to store previous scales
+    , timeoutID
+    , needsUpdate = false // Flag for when the points are visually updating, but the interactive layer is behind, to disable tooltips
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //add series index to each data point for reference
+      data.forEach(function(series, i) {
+        series.values.forEach(function(point) {
+          point.series = i;
+        });
+      });
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      // remap and flatten the data for use in calculating the scales' domains
+      var seriesData = (xDomain && yDomain && sizeDomain) ? [] : // if we know xDomain and yDomain and sizeDomain, no need to calculate.... if Size is constant remember to set sizeDomain to speed up performance
+            d3.merge(
+              data.map(function(d) {
+                return d.values.map(function(d,i) {
+                  return { x: getX(d,i), y: getY(d,i), size: getSize(d,i) }
+                })
+              })
+            );
+
+      x   .domain(xDomain || d3.extent(seriesData.map(function(d) { return d.x; }).concat(forceX)))
+
+      if (padData && data[0])
+        x.range(xRange || [(availableWidth * padDataOuter +  availableWidth) / (2 *data[0].values.length), availableWidth - availableWidth * (1 + padDataOuter) / (2 * data[0].values.length)  ]);
+        //x.range([availableWidth * .5 / data[0].values.length, availableWidth * (data[0].values.length - .5)  / data[0].values.length ]);
+      else
+        x.range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(seriesData.map(function(d) { return d.y }).concat(forceY)))
+          .range(yRange || [availableHeight, 0]);
+
+      z   .domain(sizeDomain || d3.extent(seriesData.map(function(d) { return d.size }).concat(forceSize)))
+          .range(sizeRange || [16, 256]);
+
+      // If scale's domain don't have a range, slightly adjust to make one... so a chart can show a single data point
+      if (x.domain()[0] === x.domain()[1] || y.domain()[0] === y.domain()[1]) singlePoint = true;
+      if (x.domain()[0] === x.domain()[1])
+        x.domain()[0] ?
+            x.domain([x.domain()[0] - x.domain()[0] * 0.01, x.domain()[1] + x.domain()[1] * 0.01])
+          : x.domain([-1,1]);
+
+      if (y.domain()[0] === y.domain()[1])
+        y.domain()[0] ?
+            y.domain([y.domain()[0] - y.domain()[0] * 0.01, y.domain()[1] + y.domain()[1] * 0.01])
+          : y.domain([-1,1]);
+
+      if ( isNaN(x.domain()[0])) {
+          x.domain([-1,1]);
+      }
+
+      if ( isNaN(y.domain()[0])) {
+          y.domain([-1,1]);
+      }
+
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+      z0 = z0 || z;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatter').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatter nv-chart-' + id + (singlePoint ? ' nv-single-point' : ''));
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-groups');
+      gEnter.append('g').attr('class', 'nv-point-paths');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+
+      function updateInteractiveLayer() {
+
+        if (!interactive) return false;
+
+        var eventElements;
+
+        var vertices = d3.merge(data.map(function(group, groupIndex) {
+            return group.values
+              .map(function(point, pointIndex) {
+                // *Adding noise to make duplicates very unlikely
+                // *Injecting series and point index for reference
+                /* *Adding a 'jitter' to the points, because there's an issue in d3.geom.voronoi.
+                */
+                var pX = getX(point,pointIndex);
+                var pY = getY(point,pointIndex);
+
+                return [x(pX)+ Math.random() * 1e-7,
+                        y(pY)+ Math.random() * 1e-7,
+                        groupIndex,
+                        pointIndex, point]; //temp hack to add noise untill I think of a better way so there are no duplicates
+              })
+              .filter(function(pointArray, pointIndex) {
+                return pointActive(pointArray[4], pointIndex); // Issue #237.. move filter to after map, so pointIndex is correct!
+              })
+          })
+        );
+
+
+
+        //inject series and point index for reference into voronoi
+        if (useVoronoi === true) {
+
+          if (clipVoronoi) {
+            var pointClipsEnter = wrap.select('defs').selectAll('.nv-point-clips')
+                .data([id])
+              .enter();
+
+            pointClipsEnter.append('clipPath')
+                  .attr('class', 'nv-point-clips')
+                  .attr('id', 'nv-points-clip-' + id);
+
+            var pointClips = wrap.select('#nv-points-clip-' + id).selectAll('circle')
+                .data(vertices);
+            pointClips.enter().append('circle')
+                .attr('r', clipRadius);
+            pointClips.exit().remove();
+            pointClips
+                .attr('cx', function(d) { return d[0] })
+                .attr('cy', function(d) { return d[1] });
+
+            wrap.select('.nv-point-paths')
+                .attr('clip-path', 'url(#nv-points-clip-' + id + ')');
+          }
+
+
+          if(vertices.length) {
+            // Issue #283 - Adding 2 dummy points to the voronoi b/c voronoi requires min 3 points to work
+            vertices.push([x.range()[0] - 20, y.range()[0] - 20, null, null]);
+            vertices.push([x.range()[1] + 20, y.range()[1] + 20, null, null]);
+            vertices.push([x.range()[0] - 20, y.range()[0] + 20, null, null]);
+            vertices.push([x.range()[1] + 20, y.range()[1] - 20, null, null]);
+          }
+
+          var bounds = d3.geom.polygon([
+              [-10,-10],
+              [-10,height + 10],
+              [width + 10,height + 10],
+              [width + 10,-10]
+          ]);
+
+          var voronoi = d3.geom.voronoi(vertices).map(function(d, i) {
+              return {
+                'data': bounds.clip(d),
+                'series': vertices[i][2],
+                'point': vertices[i][3]
+              }
+            });
+
+
+          var pointPaths = wrap.select('.nv-point-paths').selectAll('path')
+              .data(voronoi);
+          pointPaths.enter().append('path')
+              .attr('class', function(d,i) { return 'nv-path-'+i; });
+          pointPaths.exit().remove();
+          pointPaths
+              .attr('d', function(d) {
+                if (d.data.length === 0)
+                    return 'M 0 0'
+                else
+                    return 'M' + d.data.join('L') + 'Z';
+              });
+
+          var mouseEventCallback = function(d,mDispatch) {
+                if (needsUpdate) return 0;
+                var series = data[d.series];
+                if (typeof series === 'undefined') return;
+
+                var point  = series.values[d.point];
+
+                mDispatch({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: d.point
+                });
+          };
+
+          pointPaths
+              .on('click', function(d) {
+                mouseEventCallback(d, dispatch.elementClick);
+              })
+              .on('mouseover', function(d) {
+                mouseEventCallback(d, dispatch.elementMouseover);
+              })
+              .on('mouseout', function(d, i) {
+                mouseEventCallback(d, dispatch.elementMouseout);
+              });
+
+
+        } else {
+          /*
+          // bring data in form needed for click handlers
+          var dataWithPoints = vertices.map(function(d, i) {
+              return {
+                'data': d,
+                'series': vertices[i][2],
+                'point': vertices[i][3]
+              }
+            });
+           */
+
+          // add event handlers to points instead voronoi paths
+          wrap.select('.nv-groups').selectAll('.nv-group')
+            .selectAll('.nv-point')
+              //.data(dataWithPoints)
+              //.style('pointer-events', 'auto') // recativate events, disabled by css
+              .on('click', function(d,i) {
+                //nv.log('test', d, i);
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementClick({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              })
+              .on('mouseover', function(d,i) {
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementMouseover({
+                  point: point,
+                  series: series,
+                  pos: [x(getX(point, i)) + margin.left, y(getY(point, i)) + margin.top],
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              })
+              .on('mouseout', function(d,i) {
+                if (needsUpdate || !data[d.series]) return 0; //check if this is a dummy point
+                var series = data[d.series],
+                    point  = series.values[i];
+
+                dispatch.elementMouseout({
+                  point: point,
+                  series: series,
+                  seriesIndex: d.series,
+                  pointIndex: i
+                });
+              });
+          }
+
+          needsUpdate = false;
+      }
+
+      needsUpdate = true;
+
+      var groups = wrap.select('.nv-groups').selectAll('.nv-group')
+          .data(function(d) { return d }, function(d) { return d.key });
+      groups.enter().append('g')
+          .style('stroke-opacity', 1e-6)
+          .style('fill-opacity', 1e-6);
+      groups.exit()
+          .remove();
+      groups
+          .attr('class', function(d,i) { return 'nv-group nv-series-' + i })
+          .classed('hover', function(d) { return d.hover });
+      groups
+          .transition()
+          .style('fill', function(d,i) { return color(d, i) })
+          .style('stroke', function(d,i) { return color(d, i) })
+          .style('stroke-opacity', 1)
+          .style('fill-opacity', .5);
+
+
+      if (onlyCircles) {
+
+        var points = groups.selectAll('circle.nv-point')
+            .data(function(d) { return d.values }, pointKey);
+        points.enter().append('circle')
+            .style('fill', function (d,i) { return d.color })
+            .style('stroke', function (d,i) { return d.color })
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x0(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y0(getY(d,i))) })
+            .attr('r', function(d,i) { return Math.sqrt(z(getSize(d,i))/Math.PI) });
+        points.exit().remove();
+        groups.exit().selectAll('path.nv-point').transition()
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+            .remove();
+        points.each(function(d,i) {
+          d3.select(this)
+            .classed('nv-point', true)
+            .classed('nv-point-' + i, true)
+            .classed('hover',false)
+            ;
+        });
+        points.transition()
+            .attr('cx', function(d,i) { return nv.utils.NaNtoZero(x(getX(d,i))) })
+            .attr('cy', function(d,i) { return nv.utils.NaNtoZero(y(getY(d,i))) })
+            .attr('r', function(d,i) { return Math.sqrt(z(getSize(d,i))/Math.PI) });
+
+      } else {
+
+        var points = groups.selectAll('path.nv-point')
+            .data(function(d) { return d.values });
+        points.enter().append('path')
+            .style('fill', function (d,i) { return d.color })
+            .style('stroke', function (d,i) { return d.color })
+            .attr('transform', function(d,i) {
+              return 'translate(' + x0(getX(d,i)) + ',' + y0(getY(d,i)) + ')'
+            })
+            .attr('d',
+              d3.svg.symbol()
+                .type(getShape)
+                .size(function(d,i) { return z(getSize(d,i)) })
+            );
+        points.exit().remove();
+        groups.exit().selectAll('path.nv-point')
+            .transition()
+            .attr('transform', function(d,i) {
+              return 'translate(' + x(getX(d,i)) + ',' + y(getY(d,i)) + ')'
+            })
+            .remove();
+        points.each(function(d,i) {
+          d3.select(this)
+            .classed('nv-point', true)
+            .classed('nv-point-' + i, true)
+            .classed('hover',false)
+            ;
+        });
+        points.transition()
+            .attr('transform', function(d,i) {
+              //nv.log(d,i,getX(d,i), x(getX(d,i)));
+              return 'translate(' + x(getX(d,i)) + ',' + y(getY(d,i)) + ')'
+            })
+            .attr('d',
+              d3.svg.symbol()
+                .type(getShape)
+                .size(function(d,i) { return z(getSize(d,i)) })
+            );
+      }
+
+
+      // Delay updating the invisible interactive layer for smoother animation
+      clearTimeout(timeoutID); // stop repeat calls to updateInteractiveLayer
+      timeoutID = setTimeout(updateInteractiveLayer, 300);
+      //updateInteractiveLayer();
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+      z0 = z.copy();
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+  chart.clearHighlights = function() {
+      //Remove the 'hover' class from all highlighted points.
+      d3.selectAll(".nv-chart-" + id + " .nv-point.hover").classed("hover",false);
+  };
+
+  chart.highlightPoint = function(seriesIndex,pointIndex,isHoverOver) {
+      d3.select(".nv-chart-" + id + " .nv-series-" + seriesIndex + " .nv-point-" + pointIndex)
+          .classed("hover",isHoverOver);
+  };
+
+
+  dispatch.on('elementMouseover.point', function(d) {
+     if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,true);
+  });
+
+  dispatch.on('elementMouseout.point', function(d) {
+     if (interactive) chart.highlightPoint(d.seriesIndex,d.pointIndex,false);
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.size = function(_) {
+    if (!arguments.length) return getSize;
+    getSize = d3.functor(_);
+    return chart;
+  };
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.zScale = function(_) {
+    if (!arguments.length) return z;
+    z = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.sizeDomain = function(_) {
+    if (!arguments.length) return sizeDomain;
+    sizeDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.sizeRange = function(_) {
+    if (!arguments.length) return sizeRange;
+    sizeRange = _;
+    return chart;
+  };
+
+  chart.forceX = function(_) {
+    if (!arguments.length) return forceX;
+    forceX = _;
+    return chart;
+  };
+
+  chart.forceY = function(_) {
+    if (!arguments.length) return forceY;
+    forceY = _;
+    return chart;
+  };
+
+  chart.forceSize = function(_) {
+    if (!arguments.length) return forceSize;
+    forceSize = _;
+    return chart;
+  };
+
+  chart.interactive = function(_) {
+    if (!arguments.length) return interactive;
+    interactive = _;
+    return chart;
+  };
+
+  chart.pointKey = function(_) {
+    if (!arguments.length) return pointKey;
+    pointKey = _;
+    return chart;
+  };
+
+  chart.pointActive = function(_) {
+    if (!arguments.length) return pointActive;
+    pointActive = _;
+    return chart;
+  };
+
+  chart.padData = function(_) {
+    if (!arguments.length) return padData;
+    padData = _;
+    return chart;
+  };
+
+  chart.padDataOuter = function(_) {
+    if (!arguments.length) return padDataOuter;
+    padDataOuter = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.clipVoronoi= function(_) {
+    if (!arguments.length) return clipVoronoi;
+    clipVoronoi = _;
+    return chart;
+  };
+
+  chart.useVoronoi= function(_) {
+    if (!arguments.length) return useVoronoi;
+    useVoronoi = _;
+    if (useVoronoi === false) {
+        clipVoronoi = false;
+    }
+    return chart;
+  };
+
+  chart.clipRadius = function(_) {
+    if (!arguments.length) return clipRadius;
+    clipRadius = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.shape = function(_) {
+    if (!arguments.length) return getShape;
+    getShape = _;
+    return chart;
+  };
+
+  chart.onlyCircles = function(_) {
+    if (!arguments.length) return onlyCircles;
+    onlyCircles = _;
+    return chart;
+  };
+
+  chart.id = function(_) {
+    if (!arguments.length) return id;
+    id = _;
+    return chart;
+  };
+
+  chart.singlePoint = function(_) {
+    if (!arguments.length) return singlePoint;
+    singlePoint = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/scatterChart.js b/src/models/scatterChart.js
new file mode 100644
index 0000000..65b6e38
--- /dev/null
+++ b/src/models/scatterChart.js
@@ -0,0 +1,628 @@
+nv.models.scatterChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var scatter      = nv.models.scatter()
+    , xAxis        = nv.models.axis()
+    , yAxis        = nv.models.axis()
+    , legend       = nv.models.legend()
+    , controls     = nv.models.legend()
+    , distX        = nv.models.distribution()
+    , distY        = nv.models.distribution()
+    ;
+
+  var margin       = {top: 30, right: 20, bottom: 50, left: 75}
+    , width        = null
+    , height       = null
+    , color        = nv.utils.defaultColor()
+    , x            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.xScale()
+    , y            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.yScale()
+    , xPadding     = 0
+    , yPadding     = 0
+    , showDistX    = false
+    , showDistY    = false
+    , showLegend   = true
+    , showXAxis    = true
+    , showYAxis    = true
+    , rightAlignYAxis = false
+    , showControls = !!d3.fisheye
+    , fisheye      = 0
+    , pauseFisheye = false
+    , tooltips     = true
+    , tooltipX     = function(key, x, y) { return '<strong>' + x + '</strong>' }
+    , tooltipY     = function(key, x, y) { return '<strong>' + y + '</strong>' }
+    , tooltip      = null
+    , state = {}
+    , defaultState = null
+    , dispatch     = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , noData       = "No Data Available."
+    , transitionDuration = 250
+    ;
+
+  scatter
+    .xScale(x)
+    .yScale(y)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(10)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickPadding(10)
+    ;
+  distX
+    .axis('x')
+    ;
+  distY
+    .axis('y')
+    ;
+
+  controls.updateState(false);
+
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point, e.pointIndex)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point, e.pointIndex));
+
+      if( tooltipX != null )
+          nv.tooltip.show([leftX, topX], tooltipX(e.series.key, xVal, yVal, e, chart), 'n', 1, offsetElement, 'x-nvtooltip');
+      if( tooltipY != null )
+          nv.tooltip.show([leftY, topY], tooltipY(e.series.key, xVal, yVal, e, chart), 'e', 1, offsetElement, 'y-nvtooltip');
+      if( tooltip != null )
+          nv.tooltip.show([left, top], tooltip(e.series.key, xVal, yVal, e, chart), e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id());
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      // background for pointer events
+      gEnter.append('rect').attr('class', 'nvd3 nv-background');
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+      gEnter.append('g').attr('class', 'nv-distWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        var legendWidth = (showControls) ? availableWidth / 2 : availableWidth;
+        legend.width(legendWidth);
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth - legendWidth) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      scatter
+          .width(availableWidth)
+          .height(availableHeight)
+          .color(data.map(function(d,i) {
+            return d.color || color(d, i);
+          }).filter(function(d,i) { return !data[i].disabled }));
+
+      if (xPadding !== 0)
+        scatter.xDomain(null);
+
+      if (yPadding !== 0)
+        scatter.yDomain(null);
+
+      wrap.select('.nv-scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(scatter);
+
+      //Adjust for x and y padding
+      if (xPadding !== 0) {
+        var xRange = x.domain()[1] - x.domain()[0];
+        scatter.xDomain([x.domain()[0] - (xPadding * xRange), x.domain()[1] + (xPadding * xRange)]);
+      }
+
+      if (yPadding !== 0) {
+        var yRange = y.domain()[1] - y.domain()[0];
+        scatter.yDomain([y.domain()[0] - (yPadding * yRange), y.domain()[1] + (yPadding * yRange)]);
+      }
+
+      //Only need to update the scatter again if x/yPadding changed the domain.
+      if (yPadding !== 0 || xPadding !== 0) {
+        wrap.select('.nv-scatterWrap')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(scatter);
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+      if (showXAxis) {
+        xAxis
+            .scale(x)
+            .ticks( xAxis.ticks() && xAxis.ticks().length ? xAxis.ticks() : availableWidth / 100 )
+            .tickSize( -availableHeight , 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .call(xAxis);
+
+      }
+
+      if (showYAxis) {
+        yAxis
+            .scale(y)
+            .ticks( yAxis.ticks() && yAxis.ticks().length ? yAxis.ticks() : availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .call(yAxis);
+      }
+
+
+      if (showDistX) {
+        distX
+            .getData(scatter.x())
+            .scale(x)
+            .width(availableWidth)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionX');
+        g.select('.nv-distributionX')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+      }
+
+      if (showDistY) {
+        distY
+            .getData(scatter.y())
+            .scale(y)
+            .width(availableHeight)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionY');
+        g.select('.nv-distributionY')
+            .attr('transform', 
+              'translate(' + (rightAlignYAxis ? availableWidth : -distY.size() ) + ',0)')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+      //------------------------------------------------------------
+
+
+
+
+      if (d3.fisheye) {
+        g.select('.nv-background')
+            .attr('width', availableWidth)
+            .attr('height', availableHeight);
+
+        g.select('.nv-background').on('mousemove', updateFisheye);
+        g.select('.nv-background').on('click', function() { pauseFisheye = !pauseFisheye;});
+        scatter.dispatch.on('elementClick.freezeFisheye', function() {
+          pauseFisheye = !pauseFisheye;
+        });
+      }
+
+
+      function updateFisheye() {
+        if (pauseFisheye) {
+          g.select('.nv-point-paths').style('pointer-events', 'all');
+          return false;
+        }
+
+        g.select('.nv-point-paths').style('pointer-events', 'none' );
+
+        var mouse = d3.mouse(this);
+        x.distortion(fisheye).focus(mouse[0]);
+        y.distortion(fisheye).focus(mouse[1]);
+
+        g.select('.nv-scatterWrap')
+            .call(scatter);
+
+        if (showXAxis)
+          g.select('.nv-x.nv-axis').call(xAxis);
+        
+        if (showYAxis)
+          g.select('.nv-y.nv-axis').call(yAxis);
+        
+        g.select('.nv-distributionX')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+        g.select('.nv-distributionY')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 2.5;
+        g.select('.nv-background') .style('pointer-events', d.disabled ? 'none' : 'all');
+        g.select('.nv-point-paths').style('pointer-events', d.disabled ? 'all' : 'none' );
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+          y.distortion(fisheye).focus(0);
+
+          g.select('.nv-scatterWrap').call(scatter);
+          g.select('.nv-x.nv-axis').call(xAxis);
+          g.select('.nv-y.nv-axis').call(yAxis);
+        } else {
+          pauseFisheye = false;
+        }
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+            .attr('y1', function(d,i) { return e.pos[1] - availableHeight;});
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+            .attr('x2', e.pos[0] + distX.size());
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+        .attr('y1', 0);
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+        .attr('x2', distY.size());
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.distX = distX;
+  chart.distY = distY;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'pointActive', 'x', 'y', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'sizeRange', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'useVoronoi');
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    distX.color(color);
+    distY.color(color);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+
+  chart.fisheye = function(_) {
+    if (!arguments.length) return fisheye;
+    fisheye = _;
+    return chart;
+  };
+
+  chart.xPadding = function(_) {
+    if (!arguments.length) return xPadding;
+    xPadding = _;
+    return chart;
+  };
+
+  chart.yPadding = function(_) {
+    if (!arguments.length) return yPadding;
+    yPadding = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltipXContent = function(_) {
+    if (!arguments.length) return tooltipX;
+    tooltipX = _;
+    return chart;
+  };
+
+  chart.tooltipYContent = function(_) {
+    if (!arguments.length) return tooltipY;
+    tooltipY = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+  
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/scatterPlusLineChart.js b/src/models/scatterPlusLineChart.js
new file mode 100644
index 0000000..23c8785
--- /dev/null
+++ b/src/models/scatterPlusLineChart.js
@@ -0,0 +1,620 @@
+
+nv.models.scatterPlusLineChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var scatter      = nv.models.scatter()
+    , xAxis        = nv.models.axis()
+    , yAxis        = nv.models.axis()
+    , legend       = nv.models.legend()
+    , controls     = nv.models.legend()
+    , distX        = nv.models.distribution()
+    , distY        = nv.models.distribution()
+    ;
+
+  var margin       = {top: 30, right: 20, bottom: 50, left: 75}
+    , width        = null
+    , height       = null
+    , color        = nv.utils.defaultColor()
+    , x            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.xScale()
+    , y            = d3.fisheye ? d3.fisheye.scale(d3.scale.linear).distortion(0) : scatter.yScale()
+    , showDistX    = false
+    , showDistY    = false
+    , showLegend   = true
+    , showXAxis    = true
+    , showYAxis    = true
+    , rightAlignYAxis = false
+    , showControls = !!d3.fisheye
+    , fisheye      = 0
+    , pauseFisheye = false
+    , tooltips     = true
+    , tooltipX     = function(key, x, y) { return '<strong>' + x + '</strong>' }
+    , tooltipY     = function(key, x, y) { return '<strong>' + y + '</strong>' }
+    , tooltip      = function(key, x, y, date) { return '<h3>' + key + '</h3>' 
+                                                      + '<p>' + date + '</p>' }
+    , state = {}
+    , defaultState = null
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , noData       = "No Data Available."
+    , transitionDuration = 250
+    ;
+
+  scatter
+    .xScale(x)
+    .yScale(y)
+    ;
+  xAxis
+    .orient('bottom')
+    .tickPadding(10)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    .tickPadding(10)
+    ;
+  distX
+    .axis('x')
+    ;
+  distY
+    .axis('y')
+    ;
+  
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var x0, y0;
+
+  var showTooltip = function(e, offsetElement) {
+    //TODO: make tooltip style an option between single or dual on axes (maybe on all charts with axes?)
+
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        leftX = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        topX = y.range()[0] + margin.top + ( offsetElement.offsetTop || 0),
+        leftY = x.range()[0] + margin.left + ( offsetElement.offsetLeft || 0 ),
+        topY = e.pos[1] + ( offsetElement.offsetTop || 0),
+        xVal = xAxis.tickFormat()(scatter.x()(e.point, e.pointIndex)),
+        yVal = yAxis.tickFormat()(scatter.y()(e.point, e.pointIndex));
+
+      if( tooltipX != null )
+          nv.tooltip.show([leftX, topX], tooltipX(e.series.key, xVal, yVal, e, chart), 'n', 1, offsetElement, 'x-nvtooltip');
+      if( tooltipY != null )
+          nv.tooltip.show([leftY, topY], tooltipY(e.series.key, xVal, yVal, e, chart), 'e', 1, offsetElement, 'y-nvtooltip');
+      if( tooltip != null )
+          nv.tooltip.show([left, top], tooltip(e.series.key, xVal, yVal, e.point.tooltip, e, chart), e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  var controlsData = [
+    { key: 'Magnify', disabled: true }
+  ];
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display noData message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      x0 = x0 || x;
+      y0 = y0 || y;
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-scatterChart').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatterChart nv-chart-' + scatter.id());
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g')
+
+      // background for pointer events
+      gEnter.append('rect').attr('class', 'nvd3 nv-background').style("pointer-events","none");
+
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+      gEnter.append('g').attr('class', 'nv-regressionLinesWrap');
+      gEnter.append('g').attr('class', 'nv-distWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        legend.width( availableWidth / 2 );
+
+        wrap.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        wrap.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        controls.width(180).color(['#444']);
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .attr('transform', 'translate(0,' + (-margin.top) +')')
+            .call(controls);
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      scatter
+          .width(availableWidth)
+          .height(availableHeight)
+          .color(data.map(function(d,i) {
+            return d.color || color(d, i);
+          }).filter(function(d,i) { return !data[i].disabled }))
+
+      wrap.select('.nv-scatterWrap')
+          .datum(data.filter(function(d) { return !d.disabled }))
+          .call(scatter);
+
+      wrap.select('.nv-regressionLinesWrap')
+          .attr('clip-path', 'url(#nv-edge-clip-' + scatter.id() + ')');
+
+      var regWrap = wrap.select('.nv-regressionLinesWrap').selectAll('.nv-regLines')
+                      .data(function(d) {return d });
+      
+      regWrap.enter().append('g').attr('class', 'nv-regLines');
+
+      var regLine = regWrap.selectAll('.nv-regLine').data(function(d){return [d]});
+      var regLineEnter = regLine.enter()
+                       .append('line').attr('class', 'nv-regLine')
+                       .style('stroke-opacity', 0);
+
+      regLine
+          .transition()
+          .attr('x1', x.range()[0])
+          .attr('x2', x.range()[1])
+          .attr('y1', function(d,i) {return y(x.domain()[0] * d.slope + d.intercept) })
+          .attr('y2', function(d,i) { return y(x.domain()[1] * d.slope + d.intercept) })
+          .style('stroke', function(d,i,j) { return color(d,j) })
+          .style('stroke-opacity', function(d,i) {
+            return (d.disabled || typeof d.slope === 'undefined' || typeof d.intercept === 'undefined') ? 0 : 1 
+          });
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+            .scale(x)
+            .ticks( xAxis.ticks() ? xAxis.ticks() : availableWidth / 100 )
+            .tickSize( -availableHeight , 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+            .scale(y)
+            .ticks( yAxis.ticks() ? yAxis.ticks() : availableHeight / 36 )
+            .tickSize( -availableWidth, 0);
+
+        g.select('.nv-y.nv-axis')
+            .call(yAxis);
+      }
+
+
+      if (showDistX) {
+        distX
+            .getData(scatter.x())
+            .scale(x)
+            .width(availableWidth)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionX');
+        g.select('.nv-distributionX')
+            .attr('transform', 'translate(0,' + y.range()[0] + ')')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+      }
+
+      if (showDistY) {
+        distY
+            .getData(scatter.y())
+            .scale(y)
+            .width(availableHeight)
+            .color(data.map(function(d,i) {
+              return d.color || color(d, i);
+            }).filter(function(d,i) { return !data[i].disabled }));
+        gEnter.select('.nv-distWrap').append('g')
+            .attr('class', 'nv-distributionY');
+        g.select('.nv-distributionY')
+            .attr('transform', 'translate(' + (rightAlignYAxis ? availableWidth : -distY.size() ) + ',0)')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+      //------------------------------------------------------------
+
+
+
+
+      if (d3.fisheye) {
+        g.select('.nv-background')
+            .attr('width', availableWidth)
+            .attr('height', availableHeight)
+            ;
+
+        g.select('.nv-background').on('mousemove', updateFisheye);
+        g.select('.nv-background').on('click', function() { pauseFisheye = !pauseFisheye;});
+        scatter.dispatch.on('elementClick.freezeFisheye', function() {
+          pauseFisheye = !pauseFisheye;
+        });
+      }
+
+
+      function updateFisheye() {
+        if (pauseFisheye) {
+          g.select('.nv-point-paths').style('pointer-events', 'all');
+          return false;
+        }
+
+        g.select('.nv-point-paths').style('pointer-events', 'none' );
+
+        var mouse = d3.mouse(this);
+        x.distortion(fisheye).focus(mouse[0]);
+        y.distortion(fisheye).focus(mouse[1]);
+
+        g.select('.nv-scatterWrap')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(scatter);
+
+        if (showXAxis)
+          g.select('.nv-x.nv-axis').call(xAxis);
+
+        if (showYAxis)
+          g.select('.nv-y.nv-axis').call(yAxis);
+        
+        g.select('.nv-distributionX')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distX);
+        g.select('.nv-distributionY')
+            .datum(data.filter(function(d) { return !d.disabled }))
+            .call(distY);
+      }
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        d.disabled = !d.disabled;
+
+        fisheye = d.disabled ? 0 : 2.5;
+        g.select('.nv-background') .style('pointer-events', d.disabled ? 'none' : 'all');
+        g.select('.nv-point-paths').style('pointer-events', d.disabled ? 'all' : 'none' );
+
+        if (d.disabled) {
+          x.distortion(fisheye).focus(0);
+          y.distortion(fisheye).focus(0);
+
+          g.select('.nv-scatterWrap').call(scatter);
+          g.select('.nv-x.nv-axis').call(xAxis);
+          g.select('.nv-y.nv-axis').call(yAxis);
+        } else {
+          pauseFisheye = false;
+        }
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) { 
+        state = newState;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+
+      scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+            .attr('y1', e.pos[1] - availableHeight);
+        d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+            .attr('x2', e.pos[0] + distX.size());
+
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top];
+        dispatch.tooltipShow(e);
+      });
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        chart.update();
+      });
+
+      //============================================================
+
+
+      //store old scales for use in transitions on update
+      x0 = x.copy();
+      y0 = y.copy();
+
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+    dispatch.tooltipHide(e);
+
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-distx-' + e.pointIndex)
+        .attr('y1', 0);
+    d3.select('.nv-chart-' + scatter.id() + ' .nv-series-' + e.seriesIndex + ' .nv-disty-' + e.pointIndex)
+        .attr('x2', distY.size());
+  });
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.distX = distX;
+  chart.distY = distY;
+
+  d3.rebind(chart, scatter, 'id', 'interactive', 'pointActive', 'x', 'y', 'shape', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'sizeRange', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius', 'useVoronoi');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    distX.color(color);
+    distY.color(color);
+    return chart;
+  };
+
+  chart.showDistX = function(_) {
+    if (!arguments.length) return showDistX;
+    showDistX = _;
+    return chart;
+  };
+
+  chart.showDistY = function(_) {
+    if (!arguments.length) return showDistY;
+    showDistY = _;
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.fisheye = function(_) {
+    if (!arguments.length) return fisheye;
+    fisheye = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltipXContent = function(_) {
+    if (!arguments.length) return tooltipX;
+    tooltipX = _;
+    return chart;
+  };
+
+  chart.tooltipYContent = function(_) {
+    if (!arguments.length) return tooltipY;
+    tooltipY = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/sparkline.js b/src/models/sparkline.js
new file mode 100644
index 0000000..e4c2e87
--- /dev/null
+++ b/src/models/sparkline.js
@@ -0,0 +1,194 @@
+
+nv.models.sparkline = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 2, right: 0, bottom: 2, left: 0}
+    , width = 400
+    , height = 32
+    , animate = true
+    , x = d3.scale.linear()
+    , y = d3.scale.linear()
+    , getX = function(d) { return d.x }
+    , getY = function(d) { return d.y }
+    , color = nv.utils.getColor(['#000'])
+    , xDomain
+    , yDomain
+    , xRange
+    , yRange
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x   .domain(xDomain || d3.extent(data, getX ))
+          .range(xRange || [0, availableWidth]);
+
+      y   .domain(yDomain || d3.extent(data, getY ))
+          .range(yRange || [availableHeight, 0]);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-sparkline').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparkline');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
+
+      //------------------------------------------------------------
+
+
+      var paths = wrap.selectAll('path')
+          .data(function(d) { return [d] });
+      paths.enter().append('path');
+      paths.exit().remove();
+      paths
+          .style('stroke', function(d,i) { return d.color || color(d, i) })
+          .attr('d', d3.svg.line()
+            .x(function(d,i) { return x(getX(d,i)) })
+            .y(function(d,i) { return y(getY(d,i)) })
+          );
+
+
+      // TODO: Add CURRENT data point (Need Min, Mac, Current / Most recent)
+      var points = wrap.selectAll('circle.nv-point')
+          .data(function(data) {
+              var yValues = data.map(function(d, i) { return getY(d,i); });
+              function pointIndex(index) {
+                  if (index != -1) {
+	              var result = data[index];
+                      result.pointIndex = index;
+                      return result;
+                  } else {
+                      return null;
+                  }
+              }
+              var maxPoint = pointIndex(yValues.lastIndexOf(y.domain()[1])),
+                  minPoint = pointIndex(yValues.indexOf(y.domain()[0])),
+                  currentPoint = pointIndex(yValues.length - 1);
+              return [minPoint, maxPoint, currentPoint].filter(function (d) {return d != null;});
+          });
+      points.enter().append('circle');
+      points.exit().remove();
+      points
+          .attr('cx', function(d,i) { return x(getX(d,d.pointIndex)) })
+          .attr('cy', function(d,i) { return y(getY(d,d.pointIndex)) })
+          .attr('r', 2)
+          .attr('class', function(d,i) {
+            return getX(d, d.pointIndex) == x.domain()[1] ? 'nv-point nv-currentValue' :
+                   getY(d, d.pointIndex) == y.domain()[0] ? 'nv-point nv-minValue' : 'nv-point nv-maxValue'
+          });
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  };
+
+  chart.xScale = function(_) {
+    if (!arguments.length) return x;
+    x = _;
+    return chart;
+  };
+
+  chart.yScale = function(_) {
+    if (!arguments.length) return y;
+    y = _;
+    return chart;
+  };
+
+  chart.xDomain = function(_) {
+    if (!arguments.length) return xDomain;
+    xDomain = _;
+    return chart;
+  };
+
+  chart.yDomain = function(_) {
+    if (!arguments.length) return yDomain;
+    yDomain = _;
+    return chart;
+  };
+
+  chart.xRange = function(_) {
+    if (!arguments.length) return xRange;
+    xRange = _;
+    return chart;
+  };
+
+  chart.yRange = function(_) {
+    if (!arguments.length) return yRange;
+    yRange = _;
+    return chart;
+  };
+
+  chart.animate = function(_) {
+    if (!arguments.length) return animate;
+    animate = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/sparklinePlus.js b/src/models/sparklinePlus.js
new file mode 100644
index 0000000..1535f8a
--- /dev/null
+++ b/src/models/sparklinePlus.js
@@ -0,0 +1,295 @@
+
+nv.models.sparklinePlus = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var sparkline = nv.models.sparkline();
+
+  var margin = {top: 15, right: 100, bottom: 10, left: 50}
+    , width = null
+    , height = null
+    , x
+    , y
+    , index = []
+    , paused = false
+    , xTickFormat = d3.format(',r')
+    , yTickFormat = d3.format(',.2f')
+    , showValue = true
+    , alignValue = true
+    , rightAlignValue = false
+    , noData = "No Data Available."
+    ;
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this);
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      
+
+      chart.update = function() { chart(selection) };
+      chart.container = this;
+
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      var currentValue = sparkline.y()(data[data.length-1], data.length-1);
+
+      //------------------------------------------------------------
+
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = sparkline.xScale();
+      y = sparkline.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-sparklineplus').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sparklineplus');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-sparklineWrap');
+      gEnter.append('g').attr('class', 'nv-valueWrap');
+      gEnter.append('g').attr('class', 'nv-hoverArea');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      var sparklineWrap = g.select('.nv-sparklineWrap');
+
+      sparkline
+        .width(availableWidth)
+        .height(availableHeight);
+
+      sparklineWrap
+          .call(sparkline);
+
+      //------------------------------------------------------------
+
+
+      var valueWrap = g.select('.nv-valueWrap');
+      
+      var value = valueWrap.selectAll('.nv-currentValue')
+          .data([currentValue]);
+
+      value.enter().append('text').attr('class', 'nv-currentValue')
+          .attr('dx', rightAlignValue ? -8 : 8)
+          .attr('dy', '.9em')
+          .style('text-anchor', rightAlignValue ? 'end' : 'start');
+
+      value
+          .attr('x', availableWidth + (rightAlignValue ? margin.right : 0))
+          .attr('y', alignValue ? function(d) { return y(d) } : 0)
+          .style('fill', sparkline.color()(data[data.length-1], data.length-1))
+          .text(yTickFormat(currentValue));
+
+
+
+      gEnter.select('.nv-hoverArea').append('rect')
+          .on('mousemove', sparklineHover)
+          .on('click', function() { paused = !paused })
+          .on('mouseout', function() { index = []; updateValueLine(); });
+          //.on('mouseout', function() { index = null; updateValueLine(); });
+
+      g.select('.nv-hoverArea rect')
+          .attr('transform', function(d) { return 'translate(' + -margin.left + ',' + -margin.top + ')' })
+          .attr('width', availableWidth + margin.left + margin.right)
+          .attr('height', availableHeight + margin.top);
+
+
+
+      function updateValueLine() { //index is currently global (within the chart), may or may not keep it that way
+        if (paused) return;
+
+        var hoverValue = g.selectAll('.nv-hoverValue').data(index)
+
+        var hoverEnter = hoverValue.enter()
+          .append('g').attr('class', 'nv-hoverValue')
+            .style('stroke-opacity', 0)
+            .style('fill-opacity', 0);
+
+        hoverValue.exit()
+          .transition().duration(250)
+            .style('stroke-opacity', 0)
+            .style('fill-opacity', 0)
+            .remove();
+
+        hoverValue
+            .attr('transform', function(d) { return 'translate(' + x(sparkline.x()(data[d],d)) + ',0)' })
+          .transition().duration(250)
+            .style('stroke-opacity', 1)
+            .style('fill-opacity', 1);
+
+        if (!index.length) return;
+
+        hoverEnter.append('line')
+            .attr('x1', 0)
+            .attr('y1', -margin.top)
+            .attr('x2', 0)
+            .attr('y2', availableHeight);
+
+
+        hoverEnter.append('text').attr('class', 'nv-xValue')
+            .attr('x', -6)
+            .attr('y', -margin.top)
+            .attr('text-anchor', 'end')
+            .attr('dy', '.9em')
+
+
+        g.select('.nv-hoverValue .nv-xValue')
+            .text(xTickFormat(sparkline.x()(data[index[0]], index[0])));
+
+        hoverEnter.append('text').attr('class', 'nv-yValue')
+            .attr('x', 6)
+            .attr('y', -margin.top)
+            .attr('text-anchor', 'start')
+            .attr('dy', '.9em')
+
+        g.select('.nv-hoverValue .nv-yValue')
+            .text(yTickFormat(sparkline.y()(data[index[0]], index[0])));
+
+      }
+
+
+      function sparklineHover() {
+        if (paused) return;
+
+        var pos = d3.mouse(this)[0] - margin.left;
+
+        function getClosestIndex(data, x) {
+          var distance = Math.abs(sparkline.x()(data[0], 0) - x);
+          var closestIndex = 0;
+          for (var i = 0; i < data.length; i++){
+            if (Math.abs(sparkline.x()(data[i], i) - x) < distance) {
+              distance = Math.abs(sparkline.x()(data[i], i) - x);
+              closestIndex = i;
+            }
+          }
+          return closestIndex;
+        }
+
+        index = [getClosestIndex(data, Math.round(x.invert(pos)))];
+
+        updateValueLine();
+      }
+
+    });
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.sparkline = sparkline;
+
+  d3.rebind(chart, sparkline, 'x', 'y', 'xScale', 'yScale', 'color');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+  
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.xTickFormat = function(_) {
+    if (!arguments.length) return xTickFormat;
+    xTickFormat = _;
+    return chart;
+  };
+
+  chart.yTickFormat = function(_) {
+    if (!arguments.length) return yTickFormat;
+    yTickFormat = _;
+    return chart;
+  };
+
+  chart.showValue = function(_) {
+    if (!arguments.length) return showValue;
+    showValue = _;
+    return chart;
+  };
+
+  chart.alignValue = function(_) {
+    if (!arguments.length) return alignValue;
+    alignValue = _;
+    return chart;
+  };
+
+  chart.rightAlignValue = function(_) {
+    if (!arguments.length) return rightAlignValue;
+    rightAlignValue = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/stackedArea.js b/src/models/stackedArea.js
new file mode 100644
index 0000000..5c35999
--- /dev/null
+++ b/src/models/stackedArea.js
@@ -0,0 +1,368 @@
+
+nv.models.stackedArea = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var margin = {top: 0, right: 0, bottom: 0, left: 0}
+    , width = 960
+    , height = 500
+    , color = nv.utils.defaultColor() // a function that computes the color
+    , id = Math.floor(Math.random() * 100000) //Create semi-unique ID incase user doesn't selet one
+    , getX = function(d) { return d.x } // accessor to get the x value from a data point
+    , getY = function(d) { return d.y } // accessor to get the y value from a data point
+    , style = 'stack'
+    , offset = 'zero'
+    , order = 'default'
+    , interpolate = 'linear'  // controls the line interpolation
+    , clipEdge = false // if true, masks lines within x and y scale
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , scatter = nv.models.scatter()
+    , dispatch =  d3.dispatch('tooltipShow', 'tooltipHide', 'areaClick', 'areaMouseover', 'areaMouseout')
+    ;
+
+  scatter
+    .size(2.2) // default size
+    .sizeDomain([2.2,2.2]) // all the same size by default
+    ;
+
+  /************************************
+   * offset:
+   *   'wiggle' (stream)
+   *   'zero' (stacked)
+   *   'expand' (normalize to 100%)
+   *   'silhouette' (simple centered)
+   *
+   * order:
+   *   'inside-out' (stream)
+   *   'default' (input order)
+   ************************************/
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var availableWidth = width - margin.left - margin.right,
+          availableHeight = height - margin.top - margin.bottom,
+          container = d3.select(this);
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = scatter.xScale();
+      y = scatter.yScale();
+
+      //------------------------------------------------------------
+
+      var dataRaw = data;
+      // Injecting point index into each point because d3.layout.stack().out does not give index
+      data.forEach(function(aseries, i) {
+        aseries.seriesIndex = i;
+        aseries.values = aseries.values.map(function(d, j) {
+          d.index = j;
+          d.seriesIndex = i;
+          return d;
+        });
+      });
+
+      var dataFiltered = data.filter(function(series) {
+            return !series.disabled;
+      });
+
+      data = d3.layout.stack()
+               .order(order)
+               .offset(offset)
+               .values(function(d) { return d.values })  //TODO: make values customizeable in EVERY model in this fashion
+               .x(getX)
+               .y(getY)
+               .out(function(d, y0, y) {
+                    var yHeight = (getY(d) === 0) ? 0 : y;
+                    d.display = {
+                      y: yHeight,
+                     y0: y0
+                    };
+                })
+              (dataFiltered);
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-stackedarea').data([data]);
+      var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedarea');
+      var defsEnter = wrapEnter.append('defs');
+      var gEnter = wrapEnter.append('g');
+      var g = wrap.select('g');
+
+      gEnter.append('g').attr('class', 'nv-areaWrap');
+      gEnter.append('g').attr('class', 'nv-scatterWrap');
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      //------------------------------------------------------------
+
+
+      scatter
+        .width(availableWidth)
+        .height(availableHeight)
+        .x(getX)
+        .y(function(d) { return d.display.y + d.display.y0 })
+        .forceY([0])
+        .color(data.map(function(d,i) {
+          return d.color || color(d, d.seriesIndex);
+        }));
+
+
+      var scatterWrap = g.select('.nv-scatterWrap')
+          .datum(data);
+
+      scatterWrap.call(scatter);
+
+      defsEnter.append('clipPath')
+          .attr('id', 'nv-edge-clip-' + id)
+        .append('rect');
+
+      wrap.select('#nv-edge-clip-' + id + ' rect')
+          .attr('width', availableWidth)
+          .attr('height', availableHeight);
+
+      g   .attr('clip-path', clipEdge ? 'url(#nv-edge-clip-' + id + ')' : '');
+
+      var area = d3.svg.area()
+          .x(function(d,i)  { return x(getX(d,i)) })
+          .y0(function(d) {
+              return y(d.display.y0)
+          })
+          .y1(function(d) {
+              return y(d.display.y + d.display.y0)
+          })
+          .interpolate(interpolate);
+
+      var zeroArea = d3.svg.area()
+          .x(function(d,i)  { return x(getX(d,i)) })
+          .y0(function(d) { return y(d.display.y0) })
+          .y1(function(d) { return y(d.display.y0) });
+
+
+      var path = g.select('.nv-areaWrap').selectAll('path.nv-area')
+          .data(function(d) { return d });
+
+      path.enter().append('path').attr('class', function(d,i) { return 'nv-area nv-area-' + i })
+          .attr('d', function(d,i){
+            return zeroArea(d.values, d.seriesIndex);
+          })
+          .on('mouseover', function(d,i) {
+            d3.select(this).classed('hover', true);
+            dispatch.areaMouseover({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+          .on('mouseout', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.areaMouseout({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+          .on('click', function(d,i) {
+            d3.select(this).classed('hover', false);
+            dispatch.areaClick({
+              point: d,
+              series: d.key,
+              pos: [d3.event.pageX, d3.event.pageY],
+              seriesIndex: d.seriesIndex
+            });
+          })
+
+      path.exit().remove();
+
+      path
+          .style('fill', function(d,i){
+            return d.color || color(d, d.seriesIndex)
+          })
+          .style('stroke', function(d,i){ return d.color || color(d, d.seriesIndex) });
+      path.transition()
+          .attr('d', function(d,i) {
+            return area(d.values,i)
+          });
+
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      scatter.dispatch.on('elementMouseover.area', function(e) {
+        g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', true);
+      });
+      scatter.dispatch.on('elementMouseout.area', function(e) {
+        g.select('.nv-chart-' + id + ' .nv-area-' + e.seriesIndex).classed('hover', false);
+      });
+
+      //============================================================
+      //Special offset functions
+      chart.d3_stackedOffset_stackPercent = function(stackData) {
+          var n = stackData.length,    //How many series
+          m = stackData[0].length,     //how many points per series
+          k = 1 / n,
+           i,
+           j,
+           o,
+           y0 = [];
+
+          for (j = 0; j < m; ++j) { //Looping through all points
+            for (i = 0, o = 0; i < dataRaw.length; i++)  //looping through series'
+                o += getY(dataRaw[i].values[j])   //total value of all points at a certian point in time.
+
+            if (o) for (i = 0; i < n; i++)
+               stackData[i][j][1] /= o;
+            else
+              for (i = 0; i < n; i++)
+               stackData[i][j][1] = k;
+          }
+          for (j = 0; j < m; ++j) y0[j] = 0;
+          return y0;
+      };
+
+    });
+
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  scatter.dispatch.on('elementClick.area', function(e) {
+    dispatch.areaClick(e);
+  })
+  scatter.dispatch.on('elementMouseover.tooltip', function(e) {
+        e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+        dispatch.tooltipShow(e);
+  });
+  scatter.dispatch.on('elementMouseout.tooltip', function(e) {
+        dispatch.tooltipHide(e);
+  });
+
+  //============================================================
+
+  //============================================================
+  // Global getters and setters
+  //------------------------------------------------------------
+
+  chart.dispatch = dispatch;
+  chart.scatter = scatter;
+
+  d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'xRange', 'yRange',
+    'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'useVoronoi','clipRadius','highlightPoint','clearHighlights');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.x = function(_) {
+    if (!arguments.length) return getX;
+    getX = d3.functor(_);
+    return chart;
+  };
+
+  chart.y = function(_) {
+    if (!arguments.length) return getY;
+    getY = d3.functor(_);
+    return chart;
+  }
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.clipEdge = function(_) {
+    if (!arguments.length) return clipEdge;
+    clipEdge = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    return chart;
+  };
+
+  chart.offset = function(_) {
+    if (!arguments.length) return offset;
+    offset = _;
+    return chart;
+  };
+
+  chart.order = function(_) {
+    if (!arguments.length) return order;
+    order = _;
+    return chart;
+  };
+
+  //shortcut for offset + order
+  chart.style = function(_) {
+    if (!arguments.length) return style;
+    style = _;
+
+    switch (style) {
+      case 'stack':
+        chart.offset('zero');
+        chart.order('default');
+        break;
+      case 'stream':
+        chart.offset('wiggle');
+        chart.order('inside-out');
+        break;
+      case 'stream-center':
+          chart.offset('silhouette');
+          chart.order('inside-out');
+          break;
+      case 'expand':
+        chart.offset('expand');
+        chart.order('default');
+        break;
+      case 'stack_percent':
+        chart.offset(chart.d3_stackedOffset_stackPercent);
+        chart.order('default');
+        break;
+    }
+
+    return chart;
+  };
+
+  chart.interpolate = function(_) {
+	    if (!arguments.length) return interpolate;
+	    interpolate = _;
+	    return chart;
+  };
+  //============================================================
+
+
+  return chart;
+}
diff --git a/src/models/stackedAreaChart.js b/src/models/stackedAreaChart.js
new file mode 100644
index 0000000..ff4c6c2
--- /dev/null
+++ b/src/models/stackedAreaChart.js
@@ -0,0 +1,635 @@
+
+nv.models.stackedAreaChart = function() {
+  "use strict";
+  //============================================================
+  // Public Variables with Default Settings
+  //------------------------------------------------------------
+
+  var stacked = nv.models.stackedArea()
+    , xAxis = nv.models.axis()
+    , yAxis = nv.models.axis()
+    , legend = nv.models.legend()
+    , controls = nv.models.legend()
+    , interactiveLayer = nv.interactiveGuideline()
+    ;
+
+  var margin = {top: 30, right: 25, bottom: 50, left: 60}
+    , width = null
+    , height = null
+    , color = nv.utils.defaultColor() // a function that takes in d, i and returns color
+    , showControls = true
+    , showLegend = true
+    , showXAxis = true
+    , showYAxis = true
+    , rightAlignYAxis = false
+    , useInteractiveGuideline = false
+    , tooltips = true
+    , tooltip = function(key, x, y, e, graph) {
+        return '<h3>' + key + '</h3>' +
+               '<p>' +  y + ' on ' + x + '</p>'
+      }
+    , x //can be accessed via chart.xScale()
+    , y //can be accessed via chart.yScale()
+    , yAxisTickFormat = d3.format(',.2f')
+    , state = { style: stacked.style() }
+    , defaultState = null
+    , noData = 'No Data Available.'
+    , dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'stateChange', 'changeState')
+    , controlWidth = 250
+    , cData = ['Stacked','Stream','Expanded']
+    , controlLabels = {}
+    , transitionDuration = 250
+    ;
+
+  xAxis
+    .orient('bottom')
+    .tickPadding(7)
+    ;
+  yAxis
+    .orient((rightAlignYAxis) ? 'right' : 'left')
+    ;
+
+  controls.updateState(false);
+  //============================================================
+
+
+  //============================================================
+  // Private Variables
+  //------------------------------------------------------------
+
+  var showTooltip = function(e, offsetElement) {
+    var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
+        top = e.pos[1] + ( offsetElement.offsetTop || 0),
+        x = xAxis.tickFormat()(stacked.x()(e.point, e.pointIndex)),
+        y = yAxis.tickFormat()(stacked.y()(e.point, e.pointIndex)),
+        content = tooltip(e.series.key, x, y, e, chart);
+
+    nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
+  };
+
+  //============================================================
+
+
+  function chart(selection) {
+    selection.each(function(data) {
+      var container = d3.select(this),
+          that = this;
+
+      var availableWidth = (width  || parseInt(container.style('width')) || 960)
+                             - margin.left - margin.right,
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+
+      chart.update = function() { container.transition().duration(transitionDuration).call(chart); };
+      chart.container = this;
+
+      //set state.disabled
+      state.disabled = data.map(function(d) { return !!d.disabled });
+
+      if (!defaultState) {
+        var key;
+        defaultState = {};
+        for (key in state) {
+          if (state[key] instanceof Array)
+            defaultState[key] = state[key].slice(0);
+          else
+            defaultState[key] = state[key];
+        }
+      }
+
+      //------------------------------------------------------------
+      // Display No Data message if there's nothing to show.
+
+      if (!data || !data.length || !data.filter(function(d) { return d.values.length }).length) {
+        var noDataText = container.selectAll('.nv-noData').data([noData]);
+
+        noDataText.enter().append('text')
+          .attr('class', 'nvd3 nv-noData')
+          .attr('dy', '-.7em')
+          .style('text-anchor', 'middle');
+
+        noDataText
+          .attr('x', margin.left + availableWidth / 2)
+          .attr('y', margin.top + availableHeight / 2)
+          .text(function(d) { return d });
+
+        return chart;
+      } else {
+        container.selectAll('.nv-noData').remove();
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Scales
+
+      x = stacked.xScale();
+      y = stacked.yScale();
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup containers and skeleton of chart
+
+      var wrap = container.selectAll('g.nv-wrap.nv-stackedAreaChart').data([data]);
+      var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-stackedAreaChart').append('g');
+      var g = wrap.select('g');
+
+      gEnter.append("rect").style("opacity",0);
+      gEnter.append('g').attr('class', 'nv-x nv-axis');
+      gEnter.append('g').attr('class', 'nv-y nv-axis');
+      gEnter.append('g').attr('class', 'nv-stackedWrap');
+      gEnter.append('g').attr('class', 'nv-legendWrap');
+      gEnter.append('g').attr('class', 'nv-controlsWrap');
+      gEnter.append('g').attr('class', 'nv-interactive');
+
+      g.select("rect").attr("width",availableWidth).attr("height",availableHeight);
+      //------------------------------------------------------------
+      // Legend
+
+      if (showLegend) {
+        var legendWidth = (showControls) ? availableWidth - controlWidth : availableWidth;
+        legend
+          .width(legendWidth);
+
+        g.select('.nv-legendWrap')
+            .datum(data)
+            .call(legend);
+
+        if ( margin.top != legend.height()) {
+          margin.top = legend.height();
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+        g.select('.nv-legendWrap')
+            .attr('transform', 'translate(' + (availableWidth-legendWidth) + ',' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Controls
+
+      if (showControls) {
+        var controlsData = [
+          {
+            key: controlLabels.stacked || 'Stacked',
+            metaKey: 'Stacked',
+            disabled: stacked.style() != 'stack',
+            style: 'stack'
+          },
+          {
+            key: controlLabels.stream || 'Stream',
+            metaKey: 'Stream',
+            disabled: stacked.style() != 'stream',
+            style: 'stream'
+          },
+          {
+            key: controlLabels.expanded || 'Expanded',
+            metaKey: 'Expanded',
+            disabled: stacked.style() != 'expand',
+            style: 'expand'
+          },
+          {
+            key: controlLabels.stack_percent || 'Stack %',
+            metaKey: 'Stack_Percent',
+            disabled: stacked.style() != 'stack_percent',
+            style: 'stack_percent'
+          }
+        ];
+
+        controlWidth = (cData.length/3) * 260;
+
+        controlsData = controlsData.filter(function(d) {
+          return cData.indexOf(d.metaKey) !== -1;
+        })
+
+        controls
+          .width( controlWidth )
+          .color(['#444', '#444', '#444']);
+
+        g.select('.nv-controlsWrap')
+            .datum(controlsData)
+            .call(controls);
+
+
+        if ( margin.top != Math.max(controls.height(), legend.height()) ) {
+          margin.top = Math.max(controls.height(), legend.height());
+          availableHeight = (height || parseInt(container.style('height')) || 400)
+                             - margin.top - margin.bottom;
+        }
+
+
+        g.select('.nv-controlsWrap')
+            .attr('transform', 'translate(0,' + (-margin.top) +')');
+      }
+
+      //------------------------------------------------------------
+
+
+      wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
+
+      if (rightAlignYAxis) {
+          g.select(".nv-y.nv-axis")
+              .attr("transform", "translate(" + availableWidth + ",0)");
+      }
+
+      //------------------------------------------------------------
+      // Main Chart Component(s)
+
+      //------------------------------------------------------------
+      //Set up interactive layer
+      if (useInteractiveGuideline) {
+        interactiveLayer
+           .width(availableWidth)
+           .height(availableHeight)
+           .margin({left: margin.left, top: margin.top})
+           .svgContainer(container)
+           .xScale(x);
+        wrap.select(".nv-interactive").call(interactiveLayer);
+      }
+
+      stacked
+        .width(availableWidth)
+        .height(availableHeight)
+
+      var stackedWrap = g.select('.nv-stackedWrap')
+          .datum(data);
+
+      stackedWrap.transition().call(stacked);
+
+      //------------------------------------------------------------
+
+
+      //------------------------------------------------------------
+      // Setup Axes
+
+      if (showXAxis) {
+        xAxis
+          .scale(x)
+          .ticks( availableWidth / 100 )
+          .tickSize( -availableHeight, 0);
+
+        g.select('.nv-x.nv-axis')
+            .attr('transform', 'translate(0,' + availableHeight + ')');
+
+        g.select('.nv-x.nv-axis')
+          .transition().duration(0)
+            .call(xAxis);
+      }
+
+      if (showYAxis) {
+        yAxis
+          .scale(y)
+          .ticks(stacked.offset() == 'wiggle' ? 0 : availableHeight / 36)
+          .tickSize(-availableWidth, 0)
+          .setTickFormat( (stacked.style() == 'expand' || stacked.style() == 'stack_percent')
+                ? d3.format('%') : yAxisTickFormat);
+
+        g.select('.nv-y.nv-axis')
+          .transition().duration(0)
+            .call(yAxis);
+      }
+
+      //------------------------------------------------------------
+
+
+      //============================================================
+      // Event Handling/Dispatching (in chart's scope)
+      //------------------------------------------------------------
+
+      stacked.dispatch.on('areaClick.toggle', function(e) {
+        if (data.filter(function(d) { return !d.disabled }).length === 1)
+          data.forEach(function(d) {
+            d.disabled = false;
+          });
+        else
+          data.forEach(function(d,i) {
+            d.disabled = (i != e.seriesIndex);
+          });
+
+        state.disabled = data.map(function(d) { return !!d.disabled });
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+      legend.dispatch.on('stateChange', function(newState) {
+        state.disabled = newState.disabled;
+        dispatch.stateChange(state);
+        chart.update();
+      });
+
+      controls.dispatch.on('legendClick', function(d,i) {
+        if (!d.disabled) return;
+
+        controlsData = controlsData.map(function(s) {
+          s.disabled = true;
+          return s;
+        });
+        d.disabled = false;
+
+        stacked.style(d.style);
+
+
+        state.style = stacked.style();
+        dispatch.stateChange(state);
+
+        chart.update();
+      });
+
+
+      interactiveLayer.dispatch.on('elementMousemove', function(e) {
+          stacked.clearHighlights();
+          var singlePoint, pointIndex, pointXLocation, allData = [];
+          data
+          .filter(function(series, i) {
+            series.seriesIndex = i;
+            return !series.disabled;
+          })
+          .forEach(function(series,i) {
+              pointIndex = nv.interactiveBisect(series.values, e.pointXValue, chart.x());
+              stacked.highlightPoint(i, pointIndex, true);
+              var point = series.values[pointIndex];
+              if (typeof point === 'undefined') return;
+              if (typeof singlePoint === 'undefined') singlePoint = point;
+              if (typeof pointXLocation === 'undefined') pointXLocation = chart.xScale()(chart.x()(point,pointIndex));
+
+              //If we are in 'expand' mode, use the stacked percent value instead of raw value.
+              var tooltipValue = (stacked.style() == 'expand') ? point.display.y : chart.y()(point,pointIndex);
+              allData.push({
+                  key: series.key,
+                  value: tooltipValue,
+                  color: color(series,series.seriesIndex),
+                  stackedValue: point.display
+              });
+          });
+
+          allData.reverse();
+
+          //Highlight the tooltip entry based on which stack the mouse is closest to.
+          if (allData.length > 2) {
+            var yValue = chart.yScale().invert(e.mouseY);
+            var yDistMax = Infinity, indexToHighlight = null;
+            allData.forEach(function(series,i) {
+
+               //To handle situation where the stacked area chart is negative, we need to use absolute values
+               //when checking if the mouse Y value is within the stack area.
+               yValue = Math.abs(yValue);
+               var stackedY0 = Math.abs(series.stackedValue.y0);
+               var stackedY = Math.abs(series.stackedValue.y);
+               if ( yValue >= stackedY0 && yValue <= (stackedY + stackedY0))
+               {
+                  indexToHighlight = i;
+                  return;
+               }
+            });
+            if (indexToHighlight != null)
+               allData[indexToHighlight].highlight = true;
+          }
+
+          var xValue = xAxis.tickFormat()(chart.x()(singlePoint,pointIndex));
+
+          //If we are in 'expand' mode, force the format to be a percentage.
+          var valueFormatter = (stacked.style() == 'expand') ?
+               function(d,i) {return d3.format(".1%")(d);} :
+               function(d,i) {return yAxis.tickFormat()(d); };
+          interactiveLayer.tooltip
+                  .position({left: pointXLocation + margin.left, top: e.mouseY + margin.top})
+                  .chartContainer(that.parentNode)
+                  .enabled(tooltips)
+                  .valueFormatter(valueFormatter)
+                  .data(
+                      {
+                        value: xValue,
+                        series: allData
+                      }
+                  )();
+
+          interactiveLayer.renderGuideLine(pointXLocation);
+
+      });
+
+      interactiveLayer.dispatch.on("elementMouseout",function(e) {
+          dispatch.tooltipHide();
+          stacked.clearHighlights();
+      });
+
+
+      dispatch.on('tooltipShow', function(e) {
+        if (tooltips) showTooltip(e, that.parentNode);
+      });
+
+      // Update chart from a state object passed to event handler
+      dispatch.on('changeState', function(e) {
+
+        if (typeof e.disabled !== 'undefined') {
+          data.forEach(function(series,i) {
+            series.disabled = e.disabled[i];
+          });
+
+          state.disabled = e.disabled;
+        }
+
+        if (typeof e.style !== 'undefined') {
+          stacked.style(e.style);
+        }
+
+        chart.update();
+      });
+
+    });
+
+
+    return chart;
+  }
+
+
+  //============================================================
+  // Event Handling/Dispatching (out of chart's scope)
+  //------------------------------------------------------------
+
+  stacked.dispatch.on('tooltipShow', function(e) {
+    //disable tooltips when value ~= 0
+    //// TODO: consider removing points from voronoi that have 0 value instead of this hack
+    /*
+    if (!Math.round(stacked.y()(e.point) * 100)) {  // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
+      setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
+      return false;
+    }
+   */
+
+    e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
+    dispatch.tooltipShow(e);
+  });
+
+  stacked.dispatch.on('tooltipHide', function(e) {
+    dispatch.tooltipHide(e);
+  });
+
+  dispatch.on('tooltipHide', function() {
+    if (tooltips) nv.tooltip.cleanup();
+  });
+
+  //============================================================
+
+
+  //============================================================
+  // Expose Public Variables
+  //------------------------------------------------------------
+
+  // expose chart's sub-components
+  chart.dispatch = dispatch;
+  chart.stacked = stacked;
+  chart.legend = legend;
+  chart.controls = controls;
+  chart.xAxis = xAxis;
+  chart.yAxis = yAxis;
+  chart.interactiveLayer = interactiveLayer;
+
+  d3.rebind(chart, stacked, 'x', 'y', 'size', 'xScale', 'yScale', 'xDomain', 'yDomain', 'xRange', 'yRange', 'sizeDomain', 'interactive', 'useVoronoi', 'offset', 'order', 'style', 'clipEdge', 'forceX', 'forceY', 'forceSize', 'interpolate');
+
+  chart.options = nv.utils.optionsFunc.bind(chart);
+
+  chart.margin = function(_) {
+    if (!arguments.length) return margin;
+    margin.top    = typeof _.top    != 'undefined' ? _.top    : margin.top;
+    margin.right  = typeof _.right  != 'undefined' ? _.right  : margin.right;
+    margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom;
+    margin.left   = typeof _.left   != 'undefined' ? _.left   : margin.left;
+    return chart;
+  };
+
+  chart.width = function(_) {
+    if (!arguments.length) return width;
+    width = _;
+    return chart;
+  };
+
+  chart.height = function(_) {
+    if (!arguments.length) return height;
+    height = _;
+    return chart;
+  };
+
+  chart.color = function(_) {
+    if (!arguments.length) return color;
+    color = nv.utils.getColor(_);
+    legend.color(color);
+    stacked.color(color);
+    return chart;
+  };
+
+  chart.showControls = function(_) {
+    if (!arguments.length) return showControls;
+    showControls = _;
+    return chart;
+  };
+
+  chart.showLegend = function(_) {
+    if (!arguments.length) return showLegend;
+    showLegend = _;
+    return chart;
+  };
+
+  chart.showXAxis = function(_) {
+    if (!arguments.length) return showXAxis;
+    showXAxis = _;
+    return chart;
+  };
+
+  chart.showYAxis = function(_) {
+    if (!arguments.length) return showYAxis;
+    showYAxis = _;
+    return chart;
+  };
+
+  chart.rightAlignYAxis = function(_) {
+    if(!arguments.length) return rightAlignYAxis;
+    rightAlignYAxis = _;
+    yAxis.orient( (_) ? 'right' : 'left');
+    return chart;
+  };
+
+  chart.useInteractiveGuideline = function(_) {
+    if(!arguments.length) return useInteractiveGuideline;
+    useInteractiveGuideline = _;
+    if (_ === true) {
+       chart.interactive(false);
+       chart.useVoronoi(false);
+    }
+    return chart;
+  };
+
+  chart.tooltip = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.tooltips = function(_) {
+    if (!arguments.length) return tooltips;
+    tooltips = _;
+    return chart;
+  };
+
+  chart.tooltipContent = function(_) {
+    if (!arguments.length) return tooltip;
+    tooltip = _;
+    return chart;
+  };
+
+  chart.state = function(_) {
+    if (!arguments.length) return state;
+    state = _;
+    return chart;
+  };
+
+  chart.defaultState = function(_) {
+    if (!arguments.length) return defaultState;
+    defaultState = _;
+    return chart;
+  };
+
+  chart.noData = function(_) {
+    if (!arguments.length) return noData;
+    noData = _;
+    return chart;
+  };
+
+  chart.transitionDuration = function(_) {
+    if (!arguments.length) return transitionDuration;
+    transitionDuration = _;
+    return chart;
+  };
+
+  chart.controlsData = function(_) {
+    if (!arguments.length) return cData;
+    cData = _;
+    return chart;
+  };
+
+  chart.controlLabels = function(_) {
+    if (!arguments.length) return controlLabels;
+    if (typeof _ !== 'object') return controlLabels;
+    controlLabels = _;
+    return chart;
+  };
+
+  yAxis.setTickFormat = yAxis.tickFormat;
+
+  yAxis.tickFormat = function(_) {
+    if (!arguments.length) return yAxisTickFormat;
+    yAxisTickFormat = _;
+    return yAxis;
+  };
+
+
+  //============================================================
+
+  return chart;
+}
diff --git a/src/nv.d3.css b/src/nv.d3.css
new file mode 100644
index 0000000..cae8348
--- /dev/null
+++ b/src/nv.d3.css
@@ -0,0 +1,769 @@
+
+/********************
+ * HTML CSS
+ */
+
+
+.chartWrap {
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+
+/********************
+  Box shadow and border radius styling
+*/
+.nvtooltip.with-3d-shadow, .with-3d-shadow .nvtooltip {
+  -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
+  box-shadow: 0 5px 10px rgba(0,0,0,.2);
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+
+/********************
+ * TOOLTIP CSS
+ */
+
+.nvtooltip {
+  position: absolute;
+  background-color: rgba(255,255,255,1.0);
+  padding: 1px;
+  border: 1px solid rgba(0,0,0,.2);
+  z-index: 10000;
+
+  font-family: Arial;
+  font-size: 13px;
+  text-align: left;
+  pointer-events: none;
+
+  white-space: nowrap;
+
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+/*Give tooltips that old fade in transition by
+    putting a "with-transitions" class on the container div.
+*/
+.nvtooltip.with-transitions, .with-transitions .nvtooltip {
+  transition: opacity 250ms linear;
+  -moz-transition: opacity 250ms linear;
+  -webkit-transition: opacity 250ms linear;
+
+  transition-delay: 250ms;
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+}
+
+.nvtooltip.x-nvtooltip,
+.nvtooltip.y-nvtooltip {
+  padding: 8px;
+}
+
+.nvtooltip h3 {
+  margin: 0;
+  padding: 4px 14px;
+  line-height: 18px;
+  font-weight: normal;
+  background-color: rgba(247,247,247,0.75);
+  text-align: center;
+
+  border-bottom: 1px solid #ebebeb;
+
+  -webkit-border-radius: 5px 5px 0 0;
+  -moz-border-radius: 5px 5px 0 0;
+  border-radius: 5px 5px 0 0;
+}
+
+.nvtooltip p {
+  margin: 0;
+  padding: 5px 14px;
+  text-align: center;
+}
+
+.nvtooltip span {
+  display: inline-block;
+  margin: 2px 0;
+}
+
+.nvtooltip table {
+  margin: 6px;
+  border-spacing:0;
+}
+
+
+.nvtooltip table td {
+  padding: 2px 9px 2px 0;
+  vertical-align: middle;
+}
+
+.nvtooltip table td.key {
+  font-weight:normal;
+}
+.nvtooltip table td.value {
+  text-align: right;
+  font-weight: bold;
+}
+
+.nvtooltip table tr.highlight td {
+  padding: 1px 9px 1px 0;
+  border-bottom-style: solid;
+  border-bottom-width: 1px;
+  border-top-style: solid;
+  border-top-width: 1px;
+}
+
+.nvtooltip table td.legend-color-guide div {
+  width: 8px;
+  height: 8px;
+  vertical-align: middle;
+}
+
+.nvtooltip .footer {
+  padding: 3px;
+  text-align: center;
+}
+
+
+.nvtooltip-pending-removal {
+  position: absolute;
+  pointer-events: none;
+}
+
+
+/********************
+ * SVG CSS
+ */
+
+
+svg {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  /* Trying to get SVG to act like a greedy block in all browsers */
+  display: block;
+  width:100%;
+  height:100%;
+}
+
+
+svg text {
+  font: normal 12px Arial;
+}
+
+svg .title {
+ font: bold 14px Arial;
+}
+
+.nvd3 .nv-background {
+  fill: white;
+  fill-opacity: 0;
+  /*
+  pointer-events: none;
+  */
+}
+
+.nvd3.nv-noData {
+  font-size: 18px;
+  font-weight: bold;
+}
+
+
+/**********
+*  Brush
+*/
+
+.nv-brush .extent {
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+
+
+/**********
+*  Legend
+*/
+
+.nvd3 .nv-legend .nv-series {
+  cursor: pointer;
+}
+
+.nvd3 .nv-legend .disabled circle {
+  fill-opacity: 0;
+}
+
+
+
+/**********
+*  Axes
+*/
+.nvd3 .nv-axis {
+  pointer-events:none;
+}
+
+.nvd3 .nv-axis path {
+  fill: none;
+  stroke: #000;
+  stroke-opacity: .75;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .nv-axis path.domain {
+  stroke-opacity: .75;
+}
+
+.nvd3 .nv-axis.nv-x path.domain {
+  stroke-opacity: 0;
+}
+
+.nvd3 .nv-axis line {
+  fill: none;
+  stroke: #e5e5e5;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .nv-axis .zero line,
+/*this selector may not be necessary*/ .nvd3 .nv-axis line.zero {
+  stroke-opacity: .75;
+}
+
+.nvd3 .nv-axis .nv-axisMaxMin text {
+  font-weight: bold;
+}
+
+.nvd3 .x  .nv-axis .nv-axisMaxMin text,
+.nvd3 .x2 .nv-axis .nv-axisMaxMin text,
+.nvd3 .x3 .nv-axis .nv-axisMaxMin text {
+  text-anchor: middle
+}
+
+
+
+/**********
+*  Brush
+*/
+
+.nv-brush .resize path {
+  fill: #eee;
+  stroke: #666;
+}
+
+
+
+/**********
+*  Bars
+*/
+
+.nvd3 .nv-bars .negative rect {
+    zfill: brown;
+}
+
+.nvd3 .nv-bars rect {
+  zfill: steelblue;
+  fill-opacity: .75;
+
+  transition: fill-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .nv-bars rect.hover {
+  fill-opacity: 1;
+}
+
+.nvd3 .nv-bars .hover rect {
+  fill: lightblue;
+}
+
+.nvd3 .nv-bars text {
+  fill: rgba(0,0,0,0);
+}
+
+.nvd3 .nv-bars .hover text {
+  fill: rgba(0,0,0,1);
+}
+
+
+/**********
+*  Bars
+*/
+
+.nvd3 .nv-multibar .nv-groups rect,
+.nvd3 .nv-multibarHorizontal .nv-groups rect,
+.nvd3 .nv-discretebar .nv-groups rect {
+  stroke-opacity: 0;
+
+  transition: fill-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.nvd3 .nv-multibar .nv-groups rect:hover,
+.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,
+.nvd3 .nv-discretebar .nv-groups rect:hover {
+  fill-opacity: 1;
+}
+
+.nvd3 .nv-discretebar .nv-groups text,
+.nvd3 .nv-multibarHorizontal .nv-groups text {
+  font-weight: bold;
+  fill: rgba(0,0,0,1);
+  stroke: rgba(0,0,0,0);
+}
+
+/***********
+*  Pie Chart
+*/
+
+.nvd3.nv-pie path {
+  stroke-opacity: 0;
+  transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear, stroke-width 250ms linear, stroke-opacity 250ms linear;
+
+}
+
+.nvd3.nv-pie .nv-slice text {
+  stroke: #000;
+  stroke-width: 0;
+}
+
+.nvd3.nv-pie path {
+  stroke: #fff;
+  stroke-width: 1px;
+  stroke-opacity: 1;
+}
+
+.nvd3.nv-pie .hover path {
+  fill-opacity: .7;
+}
+.nvd3.nv-pie .nv-label {
+  pointer-events: none;
+}
+.nvd3.nv-pie .nv-label rect {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+/**********
+* Lines
+*/
+
+.nvd3 .nv-groups path.nv-line {
+  fill: none;
+  stroke-width: 1.5px;
+  /*
+  stroke-linecap: round;
+  shape-rendering: geometricPrecision;
+
+  transition: stroke-width 250ms linear;
+  -moz-transition: stroke-width 250ms linear;
+  -webkit-transition: stroke-width 250ms linear;
+
+  transition-delay: 250ms
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+  */
+}
+
+.nvd3 .nv-groups path.nv-line.nv-thin-line {
+  stroke-width: 1px;
+}
+
+
+.nvd3 .nv-groups path.nv-area {
+  stroke: none;
+  /*
+  stroke-linecap: round;
+  shape-rendering: geometricPrecision;
+
+  stroke-width: 2.5px;
+  transition: stroke-width 250ms linear;
+  -moz-transition: stroke-width 250ms linear;
+  -webkit-transition: stroke-width 250ms linear;
+
+  transition-delay: 250ms
+  -moz-transition-delay: 250ms;
+  -webkit-transition-delay: 250ms;
+  */
+}
+
+.nvd3 .nv-line.hover path {
+  stroke-width: 6px;
+}
+
+/*
+.nvd3.scatter .groups .point {
+  fill-opacity: 0.1;
+  stroke-opacity: 0.1;
+}
+  */
+
+.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point {
+  fill-opacity: .5 !important;
+  stroke-opacity: .5 !important;
+}
+
+
+.with-transitions .nvd3 .nv-groups .nv-point {
+  transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: stroke-width 250ms linear, stroke-opacity 250ms linear;
+
+}
+
+.nvd3.nv-scatter .nv-groups .nv-point.hover,
+.nvd3 .nv-groups .nv-point.hover {
+  stroke-width: 7px;
+  fill-opacity: .95 !important;
+  stroke-opacity: .95 !important;
+}
+
+
+.nvd3 .nv-point-paths path {
+  stroke: #aaa;
+  stroke-opacity: 0;
+  fill: #eee;
+  fill-opacity: 0;
+}
+
+
+
+.nvd3 .nv-indexLine {
+  cursor: ew-resize;
+}
+
+
+/**********
+* Distribution
+*/
+
+.nvd3 .nv-distribution {
+  pointer-events: none;
+}
+
+
+
+/**********
+*  Scatter
+*/
+
+/* **Attempting to remove this for useVoronoi(false), need to see if it's required anywhere
+.nvd3 .nv-groups .nv-point {
+  pointer-events: none;
+}
+*/
+
+.nvd3 .nv-groups .nv-point.hover {
+  stroke-width: 20px;
+  stroke-opacity: .5;
+}
+
+.nvd3 .nv-scatter .nv-point.hover {
+  fill-opacity: 1;
+}
+
+/*
+.nv-group.hover .nv-point {
+  fill-opacity: 1;
+}
+*/
+
+
+/**********
+*  Stacked Area
+*/
+
+.nvd3.nv-stackedarea path.nv-area {
+  fill-opacity: .7;
+  /*
+  stroke-opacity: .65;
+  fill-opacity: 1;
+  */
+  stroke-opacity: 0;
+
+  transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+  -moz-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+  -webkit-transition: fill-opacity 250ms linear, stroke-opacity 250ms linear;
+
+  /*
+  transition-delay: 500ms;
+  -moz-transition-delay: 500ms;
+  -webkit-transition-delay: 500ms;
+  */
+
+}
+
+.nvd3.nv-stackedarea path.nv-area.hover {
+  fill-opacity: .9;
+  /*
+  stroke-opacity: .85;
+  */
+}
+/*
+.d3stackedarea .groups path {
+  stroke-opacity: 0;
+}
+  */
+
+
+
+.nvd3.nv-stackedarea .nv-groups .nv-point {
+  stroke-opacity: 0;
+  fill-opacity: 0;
+}
+
+/*
+.nvd3.nv-stackedarea .nv-groups .nv-point.hover {
+  stroke-width: 20px;
+  stroke-opacity: .75;
+  fill-opacity: 1;
+}*/
+
+
+
+/**********
+*  Line Plus Bar
+*/
+
+.nvd3.nv-linePlusBar .nv-bar rect {
+  fill-opacity: .75;
+}
+
+.nvd3.nv-linePlusBar .nv-bar rect:hover {
+  fill-opacity: 1;
+}
+
+
+/**********
+*  Bullet
+*/
+
+.nvd3.nv-bullet { font: 10px sans-serif; }
+.nvd3.nv-bullet .nv-measure { fill-opacity: .8; }
+.nvd3.nv-bullet .nv-measure:hover { fill-opacity: 1; }
+.nvd3.nv-bullet .nv-marker { stroke: #000; stroke-width: 2px; }
+.nvd3.nv-bullet .nv-markerTriangle { stroke: #000; fill: #fff; stroke-width: 1.5px; }
+.nvd3.nv-bullet .nv-tick line { stroke: #666; stroke-width: .5px; }
+.nvd3.nv-bullet .nv-range.nv-s0 { fill: #eee; }
+.nvd3.nv-bullet .nv-range.nv-s1 { fill: #ddd; }
+.nvd3.nv-bullet .nv-range.nv-s2 { fill: #ccc; }
+.nvd3.nv-bullet .nv-title { font-size: 14px; font-weight: bold; }
+.nvd3.nv-bullet .nv-subtitle { fill: #999; }
+
+
+.nvd3.nv-bullet .nv-range {
+  fill: #bababa;
+  fill-opacity: .4;
+}
+.nvd3.nv-bullet .nv-range:hover {
+  fill-opacity: .7;
+}
+
+
+
+/**********
+* Sparkline
+*/
+
+.nvd3.nv-sparkline path {
+  fill: none;
+}
+
+.nvd3.nv-sparklineplus g.nv-hoverValue {
+  pointer-events: none;
+}
+
+.nvd3.nv-sparklineplus .nv-hoverValue line {
+  stroke: #333;
+  stroke-width: 1.5px;
+ }
+
+.nvd3.nv-sparklineplus,
+.nvd3.nv-sparklineplus g {
+  pointer-events: all;
+}
+
+.nvd3 .nv-hoverArea {
+  fill-opacity: 0;
+  stroke-opacity: 0;
+}
+
+.nvd3.nv-sparklineplus .nv-xValue,
+.nvd3.nv-sparklineplus .nv-yValue {
+  /*
+  stroke: #666;
+  */
+  stroke-width: 0;
+  font-size: .9em;
+  font-weight: normal;
+}
+
+.nvd3.nv-sparklineplus .nv-yValue {
+  stroke: #f66;
+}
+
+.nvd3.nv-sparklineplus .nv-maxValue {
+  stroke: #2ca02c;
+  fill: #2ca02c;
+}
+
+.nvd3.nv-sparklineplus .nv-minValue {
+  stroke: #d62728;
+  fill: #d62728;
+}
+
+.nvd3.nv-sparklineplus .nv-currentValue {
+  /*
+  stroke: #444;
+  fill: #000;
+  */
+  font-weight: bold;
+  font-size: 1.1em;
+}
+
+/**********
+* historical stock
+*/
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick {
+  stroke-width: 2px;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover {
+  stroke-width: 4px;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive {
+ stroke: #2ca02c;
+}
+
+.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative {
+ stroke: #d62728;
+}
+
+.nvd3.nv-historicalStockChart .nv-axis .nv-axislabel {
+  font-weight: bold;
+}
+
+.nvd3.nv-historicalStockChart .nv-dragTarget {
+  fill-opacity: 0;
+  stroke: none;
+  cursor: move;
+}
+
+.nvd3 .nv-brush .extent {
+  /*
+  cursor: ew-resize !important;
+  */
+  fill-opacity: 0 !important;
+}
+
+.nvd3 .nv-brushBackground rect {
+  stroke: #000;
+  stroke-width: .4;
+  fill: #fff;
+  fill-opacity: .7;
+}
+
+
+
+/**********
+* Indented Tree
+*/
+
+
+/**
+ * TODO: the following 3 selectors are based on classes used in the example.  I should either make them standard and leave them here, or move to a CSS file not included in the library
+ */
+.nvd3.nv-indentedtree .name {
+  margin-left: 5px;
+}
+
+.nvd3.nv-indentedtree .clickable {
+  color: #08C;
+  cursor: pointer;
+}
+
+.nvd3.nv-indentedtree span.clickable:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+
+
+.nvd3.nv-indentedtree .nv-childrenCount {
+  display: inline-block;
+  margin-left: 5px;
+}
+
+.nvd3.nv-indentedtree .nv-treeicon {
+  cursor: pointer;
+  /*
+  cursor: n-resize;
+  */
+}
+
+.nvd3.nv-indentedtree .nv-treeicon.nv-folded {
+  cursor: pointer;
+  /*
+  cursor: s-resize;
+  */
+}
+
+/**********
+* Parallel Coordinates
+*/
+
+.nvd3 .background path {
+  fill: none;
+  stroke: #ccc;
+  stroke-opacity: .4;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .foreground path {
+  fill: none;
+  stroke: steelblue;
+  stroke-opacity: .7;
+}
+
+.nvd3 .brush .extent {
+  fill-opacity: .3;
+  stroke: #fff;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .axis line, .axis path {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.nvd3 .axis text {
+  text-shadow: 0 1px 0 #fff;
+}
+
+/****
+Interactive Layer
+*/
+.nvd3 .nv-interactiveGuideLine {
+  pointer-events:none;
+}
+.nvd3 line.nv-guideline {
+  stroke: #ccc;
+}
\ No newline at end of file
diff --git a/src/outro.js b/src/outro.js
new file mode 100644
index 0000000..158693a
--- /dev/null
+++ b/src/outro.js
@@ -0,0 +1 @@
+})();
\ No newline at end of file
diff --git a/src/tooltip.js b/src/tooltip.js
new file mode 100644
index 0000000..46e5a81
--- /dev/null
+++ b/src/tooltip.js
@@ -0,0 +1,490 @@
+/* Tooltip rendering model for nvd3 charts.
+window.nv.models.tooltip is the updated,new way to render tooltips.
+
+window.nv.tooltip.show is the old tooltip code.
+window.nv.tooltip.* also has various helper methods.
+*/
+(function() {
+  "use strict";
+  window.nv.tooltip = {};
+
+  /* Model which can be instantiated to handle tooltip rendering.
+    Example usage: 
+    var tip = nv.models.tooltip().gravity('w').distance(23)
+                .data(myDataObject);
+
+        tip();    //just invoke the returned function to render tooltip.
+  */
+  window.nv.models.tooltip = function() {
+        var content = null    //HTML contents of the tooltip.  If null, the content is generated via the data variable.
+        ,   data = null     /* Tooltip data. If data is given in the proper format, a consistent tooltip is generated.
+        Format of data:
+        {
+            key: "Date",
+            value: "August 2009", 
+            series: [
+                    {
+                        key: "Series 1",
+                        value: "Value 1",
+                        color: "#000"
+                    },
+                    {
+                        key: "Series 2",
+                        value: "Value 2",
+                        color: "#00f"
+                    }
+            ]
+
+        }
+
+        */
+        ,   gravity = 'w'   //Can be 'n','s','e','w'. Determines how tooltip is positioned.
+        ,   distance = 50   //Distance to offset tooltip from the mouse location.
+        ,   snapDistance = 25   //Tolerance allowed before tooltip is moved from its current position (creates 'snapping' effect)
+        ,   fixedTop = null //If not null, this fixes the top position of the tooltip.
+        ,   classes = null  //Attaches additional CSS classes to the tooltip DIV that is created.
+        ,   chartContainer = null   //Parent DIV, of the SVG Container that holds the chart.
+        ,   tooltipElem = null  //actual DOM element representing the tooltip.
+        ,   position = {left: null, top: null}      //Relative position of the tooltip inside chartContainer.
+        ,   enabled = true  //True -> tooltips are rendered. False -> don't render tooltips.
+        //Generates a unique id when you create a new tooltip() object
+        ,   id = "nvtooltip-" + Math.floor(Math.random() * 100000)
+        ;
+
+        //CSS class to specify whether element should not have mouse events.
+        var  nvPointerEventsClass = "nv-pointer-events-none";
+
+        //Format function for the tooltip values column
+        var valueFormatter = function(d,i) {
+            return d;
+        };
+
+        //Format function for the tooltip header value.
+        var headerFormatter = function(d) {
+            return d;
+        };
+
+        //By default, the tooltip model renders a beautiful table inside a DIV.
+        //You can override this function if a custom tooltip is desired.
+        var contentGenerator = function(d) {
+            if (content != null) return content;
+
+            if (d == null) return '';
+
+            var table = d3.select(document.createElement("table"));
+            var theadEnter = table.selectAll("thead")
+                .data([d])
+                .enter().append("thead");
+            theadEnter.append("tr")
+                .append("td")
+                .attr("colspan",3)
+                .append("strong")
+                    .classed("x-value",true)
+                    .html(headerFormatter(d.value));
+
+            var tbodyEnter = table.selectAll("tbody")
+                .data([d])
+                .enter().append("tbody");
+            var trowEnter = tbodyEnter.selectAll("tr")
+                .data(function(p) { return p.series})
+                .enter()
+                .append("tr")
+                .classed("highlight", function(p) { return p.highlight})
+                ;
+
+            trowEnter.append("td")
+                .classed("legend-color-guide",true)
+                .append("div")
+                    .style("background-color", function(p) { return p.color});
+            trowEnter.append("td")
+                .classed("key",true)
+                .html(function(p) {return p.key});
+            trowEnter.append("td")
+                .classed("value",true)
+                .html(function(p,i) { return valueFormatter(p.value,i) });
+
+
+            trowEnter.selectAll("td").each(function(p) {
+                if (p.highlight) {
+                    var opacityScale = d3.scale.linear().domain([0,1]).range(["#fff",p.color]);
+                    var opacity = 0.6;
+                    d3.select(this)
+                        .style("border-bottom-color", opacityScale(opacity))
+                        .style("border-top-color", opacityScale(opacity))
+                        ;
+                }
+            });
+
+            var html = table.node().outerHTML;
+            if (d.footer !== undefined)
+                html += "<div class='footer'>" + d.footer + "</div>";
+            return html;
+
+        };
+
+        var dataSeriesExists = function(d) {
+            if (d && d.series && d.series.length > 0) return true;
+
+            return false;
+        };
+
+        //In situations where the chart is in a 'viewBox', re-position the tooltip based on how far chart is zoomed.
+        function convertViewBoxRatio() {
+            if (chartContainer) {
+              var svg = d3.select(chartContainer);
+              if (svg.node().tagName !== "svg") {
+                 svg = svg.select("svg");
+              }
+              var viewBox = (svg.node()) ? svg.attr('viewBox') : null;
+              if (viewBox) {
+                viewBox = viewBox.split(' ');
+                var ratio = parseInt(svg.style('width')) / viewBox[2];
+                
+                position.left = position.left * ratio;
+                position.top  = position.top * ratio;
+              }
+            }
+        }
+
+        //Creates new tooltip container, or uses existing one on DOM.
+        function getTooltipContainer(newContent) {
+            var body;
+            if (chartContainer)
+                body = d3.select(chartContainer);
+            else
+                body = d3.select("body");
+
+            var container = body.select(".nvtooltip");
+            if (container.node() === null) {
+                //Create new tooltip div if it doesn't exist on DOM.
+                container = body.append("div")
+                    .attr("class", "nvtooltip " + (classes? classes: "xy-tooltip"))
+                    .attr("id",id)
+                    ;
+            }
+        
+
+            container.node().innerHTML = newContent;
+            container.style("top",0).style("left",0).style("opacity",0);
+            container.selectAll("div, table, td, tr").classed(nvPointerEventsClass,true)
+            container.classed(nvPointerEventsClass,true);
+            return container.node();
+        }
+
+        
+
+        //Draw the tooltip onto the DOM.
+        function nvtooltip() {
+            if (!enabled) return;
+            if (!dataSeriesExists(data)) return;
+
+            convertViewBoxRatio();
+
+            var left = position.left;
+            var top = (fixedTop != null) ? fixedTop : position.top;
+            var container = getTooltipContainer(contentGenerator(data));
+            tooltipElem = container;
+            if (chartContainer) {
+                var svgComp = chartContainer.getElementsByTagName("svg")[0];
+                var boundRect = (svgComp) ? svgComp.getBoundingClientRect() : chartContainer.getBoundingClientRect();
+                var svgOffset = {left:0,top:0};
+                if (svgComp) {
+                    var svgBound = svgComp.getBoundingClientRect();
+                    var chartBound = chartContainer.getBoundingClientRect();
+                    var svgBoundTop = svgBound.top;
+                    
+                    //Defensive code. Sometimes, svgBoundTop can be a really negative
+                    //  number, like -134254. That's a bug. 
+                    //  If such a number is found, use zero instead. FireFox bug only
+                    if (svgBoundTop < 0) {
+                        var containerBound = chartContainer.getBoundingClientRect();
+                        svgBoundTop = (Math.abs(svgBoundTop) > containerBound.height) ? 0 : svgBoundTop;
+                    } 
+                    svgOffset.top = Math.abs(svgBoundTop - chartBound.top);
+                    svgOffset.left = Math.abs(svgBound.left - chartBound.left);
+                }
+                //If the parent container is an overflow <div> with scrollbars, subtract the scroll offsets.
+                //You need to also add any offset between the <svg> element and its containing <div>
+                //Finally, add any offset of the containing <div> on the whole page.
+                left += chartContainer.offsetLeft + svgOffset.left - 2*chartContainer.scrollLeft;
+                top += chartContainer.offsetTop + svgOffset.top - 2*chartContainer.scrollTop;
+            }
+
+            if (snapDistance && snapDistance > 0) {
+                top = Math.floor(top/snapDistance) * snapDistance;
+            }
+
+            nv.tooltip.calcTooltipPosition([left,top], gravity, distance, container);
+            return nvtooltip;
+        };
+
+        nvtooltip.nvPointerEventsClass = nvPointerEventsClass;
+        
+        nvtooltip.content = function(_) {
+            if (!arguments.length) return content;
+            content = _;
+            return nvtooltip;
+        };
+
+        //Returns tooltipElem...not able to set it.
+        nvtooltip.tooltipElem = function() {
+            return tooltipElem;
+        };
+
+        nvtooltip.contentGenerator = function(_) {
+            if (!arguments.length) return contentGenerator;
+            if (typeof _ === 'function') {
+                contentGenerator = _;
+            }
+            return nvtooltip;
+        };
+
+        nvtooltip.data = function(_) {
+            if (!arguments.length) return data;
+            data = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.gravity = function(_) {
+            if (!arguments.length) return gravity;
+            gravity = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.distance = function(_) {
+            if (!arguments.length) return distance;
+            distance = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.snapDistance = function(_) {
+            if (!arguments.length) return snapDistance;
+            snapDistance = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.classes = function(_) {
+            if (!arguments.length) return classes;
+            classes = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.chartContainer = function(_) {
+            if (!arguments.length) return chartContainer;
+            chartContainer = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.position = function(_) {
+            if (!arguments.length) return position;
+            position.left = (typeof _.left !== 'undefined') ? _.left : position.left;
+            position.top = (typeof _.top !== 'undefined') ? _.top : position.top;
+            return nvtooltip;
+        };
+
+        nvtooltip.fixedTop = function(_) {
+            if (!arguments.length) return fixedTop;
+            fixedTop = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.enabled = function(_) {
+            if (!arguments.length) return enabled;
+            enabled = _;
+            return nvtooltip;
+        };
+
+        nvtooltip.valueFormatter = function(_) {
+            if (!arguments.length) return valueFormatter;
+            if (typeof _ === 'function') {
+                valueFormatter = _;
+            }
+            return nvtooltip;
+        };
+
+        nvtooltip.headerFormatter = function(_) {
+            if (!arguments.length) return headerFormatter;
+            if (typeof _ === 'function') {
+                headerFormatter = _;
+            }
+            return nvtooltip;
+        };
+
+        //id() is a read-only function. You can't use it to set the id.
+        nvtooltip.id = function() {
+            return id;
+        };
+
+
+        return nvtooltip;
+  };
+
+
+  //Original tooltip.show function. Kept for backward compatibility.
+  // pos = [left,top]
+  nv.tooltip.show = function(pos, content, gravity, dist, parentContainer, classes) {
+      
+        //Create new tooltip div if it doesn't exist on DOM.
+        var   container = document.createElement('div');
+        container.className = 'nvtooltip ' + (classes ? classes : 'xy-tooltip');
+
+        var body = parentContainer;
+        if ( !parentContainer || parentContainer.tagName.match(/g|svg/i)) {
+            //If the parent element is an SVG element, place tooltip in the <body> element.
+            body = document.getElementsByTagName('body')[0];
+        }
+   
+        container.style.left = 0;
+        container.style.top = 0;
+        container.style.opacity = 0;
+        container.innerHTML = content;
+        body.appendChild(container);
+        
+        //If the parent container is an overflow <div> with scrollbars, subtract the scroll offsets.
+        if (parentContainer) {
+           pos[0] = pos[0] - parentContainer.scrollLeft;
+           pos[1] = pos[1] - parentContainer.scrollTop;
+        }
+        nv.tooltip.calcTooltipPosition(pos, gravity, dist, container);
+  };
+
+  //Looks up the ancestry of a DOM element, and returns the first NON-svg node.
+  nv.tooltip.findFirstNonSVGParent = function(Elem) {
+            while(Elem.tagName.match(/^g|svg$/i) !== null) {
+                Elem = Elem.parentNode;
+            }
+            return Elem;
+  };
+
+  //Finds the total offsetTop of a given DOM element.
+  //Looks up the entire ancestry of an element, up to the first relatively positioned element.
+  nv.tooltip.findTotalOffsetTop = function ( Elem, initialTop ) {
+                var offsetTop = initialTop;
+                
+                do {
+                    if( !isNaN( Elem.offsetTop ) ) {
+                        offsetTop += (Elem.offsetTop);
+                    }
+                } while( Elem = Elem.offsetParent );
+                return offsetTop;
+  };
+
+  //Finds the total offsetLeft of a given DOM element.
+  //Looks up the entire ancestry of an element, up to the first relatively positioned element.
+  nv.tooltip.findTotalOffsetLeft = function ( Elem, initialLeft) {
+                var offsetLeft = initialLeft;
+                
+                do {
+                    if( !isNaN( Elem.offsetLeft ) ) {
+                        offsetLeft += (Elem.offsetLeft);
+                    }
+                } while( Elem = Elem.offsetParent );
+                return offsetLeft;
+  };
+
+  //Global utility function to render a tooltip on the DOM.
+  //pos = [left,top] coordinates of where to place the tooltip, relative to the SVG chart container.
+  //gravity = how to orient the tooltip
+  //dist = how far away from the mouse to place tooltip
+  //container = tooltip DIV
+  nv.tooltip.calcTooltipPosition = function(pos, gravity, dist, container) {
+
+            var height = parseInt(container.offsetHeight),
+                width = parseInt(container.offsetWidth),
+                windowWidth = nv.utils.windowSize().width,
+                windowHeight = nv.utils.windowSize().height,
+                scrollTop = window.pageYOffset,
+                scrollLeft = window.pageXOffset,
+                left, top;
+
+            windowHeight = window.innerWidth >= document.body.scrollWidth ? windowHeight : windowHeight - 16;
+            windowWidth = window.innerHeight >= document.body.scrollHeight ? windowWidth : windowWidth - 16;
+
+            gravity = gravity || 's';
+            dist = dist || 20;
+
+            var tooltipTop = function ( Elem ) {
+                return nv.tooltip.findTotalOffsetTop(Elem, top);
+            };
+
+            var tooltipLeft = function ( Elem ) {
+                return nv.tooltip.findTotalOffsetLeft(Elem,left);
+            };
+
+            switch (gravity) {
+              case 'e':
+                left = pos[0] - width - dist;
+                top = pos[1] - (height / 2);
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = pos[0] + dist > scrollLeft ? pos[0] + dist : scrollLeft - tLeft + left;
+                if (tTop < scrollTop) top = scrollTop - tTop + top;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 'w':
+                left = pos[0] + dist;
+                top = pos[1] - (height / 2);
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft + width > windowWidth) left = pos[0] - width - dist;
+                if (tTop < scrollTop) top = scrollTop + 5;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 'n':
+                left = pos[0] - (width / 2) - 5;
+                top = pos[1] + dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = scrollLeft + 5;
+                if (tLeft + width > windowWidth) left = left - width/2 + 5;
+                if (tTop + height > scrollTop + windowHeight) top = scrollTop + windowHeight - tTop + top - height;
+                break;
+              case 's':
+                left = pos[0] - (width / 2);
+                top = pos[1] - height - dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                if (tLeft < scrollLeft) left = scrollLeft + 5;
+                if (tLeft + width > windowWidth) left = left - width/2 + 5;
+                if (scrollTop > tTop) top = scrollTop;
+                break;
+              case 'none':
+                left = pos[0];
+                top = pos[1] - dist;
+                var tLeft = tooltipLeft(container);
+                var tTop = tooltipTop(container);
+                break;
+            }
+
+
+            container.style.left = left+'px';
+            container.style.top = top+'px';
+            container.style.opacity = 1;
+            container.style.position = 'absolute'; 
+
+            return container;
+    };
+
+    //Global utility function to remove tooltips from the DOM.
+    nv.tooltip.cleanup = function() {
+
+              // Find the tooltips, mark them for removal by this class (so others cleanups won't find it)
+              var tooltips = document.getElementsByClassName('nvtooltip');
+              var purging = [];
+              while(tooltips.length) {
+                purging.push(tooltips[0]);
+                tooltips[0].style.transitionDelay = '0 !important';
+                tooltips[0].style.opacity = 0;
+                tooltips[0].className = 'nvtooltip-pending-removal';
+              }
+
+              setTimeout(function() {
+
+                  while (purging.length) {
+                     var removeMe = purging.pop();
+                      removeMe.parentNode.removeChild(removeMe);
+                  }
+            }, 500);
+    };
+
+})();
diff --git a/src/utils.js b/src/utils.js
new file mode 100644
index 0000000..13e848f
--- /dev/null
+++ b/src/utils.js
@@ -0,0 +1,153 @@
+
+nv.utils.windowSize = function() {
+    // Sane defaults
+    var size = {width: 640, height: 480};
+
+    // Earlier IE uses Doc.body
+    if (document.body && document.body.offsetWidth) {
+        size.width = document.body.offsetWidth;
+        size.height = document.body.offsetHeight;
+    }
+
+    // IE can use depending on mode it is in
+    if (document.compatMode=='CSS1Compat' &&
+        document.documentElement &&
+        document.documentElement.offsetWidth ) {
+        size.width = document.documentElement.offsetWidth;
+        size.height = document.documentElement.offsetHeight;
+    }
+
+    // Most recent browsers use
+    if (window.innerWidth && window.innerHeight) {
+        size.width = window.innerWidth;
+        size.height = window.innerHeight;
+    }
+    return (size);
+};
+
+
+
+// Easy way to bind multiple functions to window.onresize
+// TODO: give a way to remove a function after its bound, other than removing all of them
+nv.utils.windowResize = function(fun){
+  if (fun === undefined) return;
+  var oldresize = window.onresize;
+
+  window.onresize = function(e) {
+    if (typeof oldresize == 'function') oldresize(e);
+    fun(e);
+  }
+}
+
+// Backwards compatible way to implement more d3-like coloring of graphs.
+// If passed an array, wrap it in a function which implements the old default
+// behavior
+nv.utils.getColor = function(color) {
+    if (!arguments.length) return nv.utils.defaultColor(); //if you pass in nothing, get default colors back
+
+    if( Object.prototype.toString.call( color ) === '[object Array]' )
+        return function(d, i) { return d.color || color[i % color.length]; };
+    else
+        return color;
+        //can't really help it if someone passes rubbish as color
+}
+
+// Default color chooser uses the index of an object as before.
+nv.utils.defaultColor = function() {
+    var colors = d3.scale.category20().range();
+    return function(d, i) { return d.color || colors[i % colors.length] };
+}
+
+
+// Returns a color function that takes the result of 'getKey' for each series and
+// looks for a corresponding color from the dictionary,
+nv.utils.customTheme = function(dictionary, getKey, defaultColors) {
+  getKey = getKey || function(series) { return series.key }; // use default series.key if getKey is undefined
+  defaultColors = defaultColors || d3.scale.category20().range(); //default color function
+
+  var defIndex = defaultColors.length; //current default color (going in reverse)
+
+  return function(series, index) {
+    var key = getKey(series);
+
+    if (!defIndex) defIndex = defaultColors.length; //used all the default colors, start over
+
+    if (typeof dictionary[key] !== "undefined")
+      return (typeof dictionary[key] === "function") ? dictionary[key]() : dictionary[key];
+    else
+      return defaultColors[--defIndex]; // no match in dictionary, use default color
+  }
+}
+
+
+
+// From the PJAX example on d3js.org, while this is not really directly needed
+// it's a very cool method for doing pjax, I may expand upon it a little bit,
+// open to suggestions on anything that may be useful
+nv.utils.pjax = function(links, content) {
+  d3.selectAll(links).on("click", function() {
+    history.pushState(this.href, this.textContent, this.href);
+    load(this.href);
+    d3.event.preventDefault();
+  });
+
+  function load(href) {
+    d3.html(href, function(fragment) {
+      var target = d3.select(content).node();
+      target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);
+      nv.utils.pjax(links, content);
+    });
+  }
+
+  d3.select(window).on("popstate", function() {
+    if (d3.event.state) load(d3.event.state);
+  });
+}
+
+/* For situations where we want to approximate the width in pixels for an SVG:text element.
+Most common instance is when the element is in a display:none; container.
+Forumla is : text.length * font-size * constant_factor
+*/
+nv.utils.calcApproxTextWidth = function (svgTextElem) {
+    if (typeof svgTextElem.style === 'function'
+        && typeof svgTextElem.text === 'function') {
+        var fontSize = parseInt(svgTextElem.style("font-size").replace("px",""));
+        var textLength = svgTextElem.text().length;
+
+        return textLength * fontSize * 0.5;
+    }
+    return 0;
+};
+
+/* Numbers that are undefined, null or NaN, convert them to zeros.
+*/
+nv.utils.NaNtoZero = function(n) {
+    if (typeof n !== 'number'
+        || isNaN(n)
+        || n === null
+        || n === Infinity) return 0;
+
+    return n;
+};
+
+/*
+Snippet of code you can insert into each nv.models.* to give you the ability to
+do things like:
+chart.options({
+  showXAxis: true,
+  tooltips: true
+});
+
+To enable in the chart:
+chart.options = nv.utils.optionsFunc.bind(chart);
+*/
+nv.utils.optionsFunc = function(args) {
+    if (args) {
+      d3.map(args).forEach((function(key,value) {
+        if (typeof this[key] === "function") {
+           this[key](value);
+        }
+      }).bind(this));
+    }
+    return this;
+};
\ No newline at end of file
diff --git a/test/ScatterChartTest.html b/test/ScatterChartTest.html
new file mode 100644
index 0000000..464453d
--- /dev/null
+++ b/test/ScatterChartTest.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+
+<body>
+<div style='position:relative;' class='with-transitions'>
+  <h3>Scatter chart tests</h3>
+  <div class='navigation'>
+          Tests:
+          <a href="lineChartTest.html">Line Chart</a>
+          <a href="stackedAreaChartTest.html">Stacked Area</a>
+          <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+          <a href="ScatterChartTest.html">Scatter</a>
+          <a href="interactiveBisectTest.html">nv.interactiveBisect unit tests</a>
+  </div>
+  <div id="test1" class="chart third">
+    Normal - four series', all random (40 points)
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test2" class="chart third">
+    Normal - one series', all random (5 points), zero left margin
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test3" class="chart third">
+    Zero right margin, 200 points
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test4" class="chart third">
+    Bigger margins
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test5" class="chart third">
+    Zero data points
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test6" class="chart third">
+    One point.
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test7" class="chart third">
+    Two points
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test8" class="chart third">
+    Three series', one point each
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test9" class="chart third">
+    Three series', first one has zero points
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test10" class="chart third">
+    Lots of series
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test11" class="chart third">
+    Scatter plus line: y=2x + 0
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test12" class="chart third">
+    Scatter plus line: y=2x + 10;
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test13" class="chart third">
+    Scatter plus line: y=-0.5x + 1.0;
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test14" class="chart third">
+    Scatter chart: duplicate y values
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test15" class="chart third">
+    Scatter chart: duplicate x values
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+  <div id="test16" class="chart third">
+    Scatter chart: extremely small data points (1e-10)
+    <button>Select chart</button>
+    <svg></svg>
+  </div>
+
+
+</div>
+
+<script src="../lib/d3.v3.js"></script>
+<!--<script src="../lib/fisheye.js"></script>-->
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/distribution.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/scatterChart.js"></script>
+<script src="../src/models/scatterPlusLineChart.js"></script>
+<script src="testScript.js"></script>
+<script>
+
+defaultChartTest("test1", randomData(4,40));
+defaultChartTest("test2", randomData(1,5), {left:0});
+defaultChartTest("test3", randomData(2,200), {right: 0});
+defaultChartTest("test4", randomData(2, 8), {top:40, right: 90, bottom: 150, left: 150});
+defaultChartTest("test5", randomData(0,0));
+defaultChartTest("test6", randomData(1,1));
+defaultChartTest("test7", randomData(1,2));
+defaultChartTest("test8", randomData(3,1));
+defaultChartTest("test9", [
+  {key: "Group 0", values: []},
+  {key: "Group 1", values: [{x:1, y:1}]} 
+]);
+
+defaultChartTest("test10", randomData(30,2));
+
+scatterPlusLineTest("test11", randomDataSloped(2,0));
+scatterPlusLineTest("test12", randomDataSloped(2,10));
+scatterPlusLineTest("test13", randomDataSloped(-0.5,1));
+defaultChartTest("test14", [
+{key: "Duplicate Y",
+     values: [
+        {x: 0, y: 10}, {x:1, y:10},{x:2, y:10},{x:3, y:10}
+     ]
+    }
+]);
+
+defaultChartTest("test15",[
+   {key: "Duplicate X",
+      area: true,
+      values: [
+        {x: 4, y: 10},
+        {x: 4, y: 11},
+        {x: 4, y: 12},
+        {x: 4, y: 13}
+      ]
+    }
+]);
+
+defaultChartTest("test16",tinyPoints());
+
+function defaultChartTest(container, data, margin) {
+  nv.addGraph(function() {
+    var chart;
+    chart = nv.models.scatterChart()
+                  .showDistX(true).showDistY(true)
+                  ;
+    chart.xAxis.tickFormat(d3.format('.02f'));
+    chart.yAxis.tickFormat(d3.format('.02f'));
+    if (margin) {
+      chart.margin(margin);
+    }
+    chart.tooltipContent(function(key) {
+        return "<h3>" + key + "</h3>";
+    });
+    d3.select('#' + container + ' svg').datum(data).transition().duration(500).call(chart);
+    nv.utils.windowResize(chart.update);
+    return chart;
+  });
+}
+
+function scatterPlusLineTest(container, data) {
+  nv.addGraph(function() {
+    var chart;
+    chart = nv.models.scatterPlusLineChart()
+                  .showDistX(true).showDistY(true);
+    chart.xAxis.tickFormat(d3.format('.02f'));
+    chart.yAxis.tickFormat(d3.format('.02f'));
+    chart.tooltipContent(function(key) {
+        return "<h3>" + key + "</h3>";
+    });
+    d3.select('#' + container + ' svg').datum(data).transition().duration(500).call(chart);
+    nv.utils.windowResize(chart.update);
+    return chart;
+  });
+}
+
+
+function randomData(groups, points) { //# groups,# points per group
+  var data = [],
+      shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
+      random = d3.random.normal();
+
+  for (i = 0; i < groups; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: []
+    });
+
+    for (j = 0; j < points; j++) {
+      data[i].values.push({
+        x: random(), 
+        y: random(), 
+        size: Math.random(), 
+        shape: shapes[j % 6]
+      });
+    }
+  }
+
+  return data;
+}
+
+
+function randomDataSloped(slope,intercept) { //# groups,# points per group
+  var data = [],
+      shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
+      random = d3.random.normal();
+
+  var groups = 2, points = 10;
+  for (i = 0; i < groups; i++) {
+    data.push({
+      key: 'Group ' + i,
+      values: [],
+      slope: slope,
+      intercept: intercept
+    });
+
+    for (j = 0; j < points; j++) {
+      data[i].values.push({
+        x: random(), 
+        y: random(), 
+        size: Math.random(), 
+        shape: shapes[j % 6]
+      });
+    }
+  }
+
+  return data;
+}
+
+
+function tinyPoints() {
+  var rval = {key: "Tiny points", values: []};
+  for(var i =1; i < 20; i++) {
+    rval.values.push({
+       x: Math.random() * 1e-10,
+       y: Math.random() * 1e-10
+    });
+  }
+  return [rval];
+}
+</script>
diff --git a/test/interactiveBisectTest.html b/test/interactiveBisectTest.html
new file mode 100644
index 0000000..9cbf5aa
--- /dev/null
+++ b/test/interactiveBisectTest.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+
+<body>
+  <h3>Unit tests for nv.interactiveBisect - this function is important for rendering tooltips and the guideline on charts.</h3>
+  <div class='navigation'>
+      Tests:
+      <a href="lineChartTest.html">Line Chart</a>
+      <a href="stackedAreaChartTest.html">Stacked Area</a>
+      <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+
+<script>
+function runTest(description, dataArray, searchVal, expectedResult, xAccessor) {
+    var result = nv.interactiveBisect(dataArray, searchVal, xAccessor);
+    var content = "";
+    if (result === expectedResult) {
+        content = "PASSED: " + description;
+    }
+    else {
+        content = "FAILED: " + description;
+    }
+
+    var node = document.createElement("div");
+    node.innerHTML = content;
+    document.getElementsByTagName("body")[0].appendChild(node);
+}
+
+var x = function(d) {return d;};
+
+runTest("Basic test",
+      [0,1,2,3,4,5],
+      3,
+      3,
+      x
+  );
+
+runTest("Basic test - zero bound",
+      [0,1,2,3,4,5],
+      0,
+      0,
+      x
+  );
+
+runTest("Basic test - length bound",
+      [0,1,2,3,4,5],
+      5,
+      5,
+      x
+  );
+
+runTest("Basic test - negative number",
+      [0,1,2,3,4,5],
+      -4,
+      0,
+      x
+  );
+
+runTest("Basic test - past the end",
+      [0,1,2,3,4,5],
+      10,
+      5,
+      x
+  );
+
+runTest("Floating point number",
+      [0,1,2,3,4,5],
+      0.34,
+      0,
+      x
+  );
+
+runTest("Floating point number part 2",
+      [0,1,2,3,4,5],
+      1.50001,
+      2,
+      x
+  );
+
+runTest("Fibonacci - existing item search",
+      [0,1,1,2,3,5,8,13,21,34],
+      8,
+      6,
+      x
+  );
+
+runTest("Fibonacci - inbetween item (left)",
+      [0,1,1,2,3,5,8,13,21,34],
+      15,
+      7,
+      x
+  );
+
+runTest("Fibonacci - inbetween item (right)",
+      [0,1,1,2,3,5,8,13,21,34],
+      20,
+      8,
+      x
+  );
+
+x = function(d,i) { return i};
+
+runTest("xAccessor is index mode - existing item",
+      [0,1,1,2,3,5,8,13,21,34],
+      7,
+      7,
+      x
+  );
+
+runTest("xAccessor is index mode - inbetween item",
+      [0,1,1,2,3,5,8,13,21,34],
+      7.3,
+      7,
+      x
+  );
+
+runTest("xAccessor is index mode - inbetween item part 2",
+      [0,1,1,2,3,5,8,13,21,34],
+      7.500001,
+      8,
+      x
+  );
+
+runTest("Empty array",
+      [],
+      4,
+      0,
+      x
+  );
+
+runTest("Single element array",
+      [0],
+      0,
+      0,
+      x
+  );
+
+runTest("Single element array - negative bound",
+      [0],
+      -10,
+      0,
+      x
+  );
+
+runTest("Single element array - past the end",
+      [0],
+      1,
+      0,
+      x
+  );
+</script>
diff --git a/test/lineChartTest.html b/test/lineChartTest.html
new file mode 100644
index 0000000..88de376
--- /dev/null
+++ b/test/lineChartTest.html
@@ -0,0 +1,475 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+<style>
+#chart13, #chart14 {
+  overflow: scroll;
+  width: 500px;
+  height: 300px;
+}
+
+#chart13 svg, #chart14 svg {
+  width: 700px;
+  height: 400px;
+}
+</style>
+<body>
+  <h3>Line chart test cases - feel free to add more tests</h3>
+  <div style='position:relative;'>
+      <div class='navigation'>
+          Tests:
+          <a href="lineChartTest.html">Line Chart</a>
+          <a href="stackedAreaChartTest.html">Stacked Area</a>
+          <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+          <a href="ScatterChartTest.html">Scatter</a>
+          <a href="pieChartTest.html">Pie chart</a>
+          <a href="realTimeChartTest.html">Real time test</a>
+          <a href="polylinearTest.html">Polylinear test</a>
+          <a href="interactiveBisectTest.html">nv.interactiveBisect unit tests</a>
+      </div>
+      <div class='chart full' id='chart1'>
+        Example of chart with many series', and new interactive guideline plus tooltip. A chunk of data was purposely removed
+        to show how the chart handles it.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+      <div class='chart half with-transitions' id='chart2'>
+        Chart with old tooltip style (with-transitions).
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+      <div class='chart half' id='chart3'>
+        Chart with three data points.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+      <div class='chart third' id='chart4'>
+        Chart where two series have different number of points.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart5'>
+        Chart with one point.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart6'>
+        Chart with 1000 points.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div class='chart third' id='chart7'>
+        Chart with no data.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart8'>
+        All points random. No order.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart9'>
+        Points do not increase linearly.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div class='chart third' id='chart10'>
+        Chart with 15 series'
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart11'>
+        Data points go backwards
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+       <div class='chart third' id='chart12'>
+        Duplicate X coordinate points.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div class='chart third' id='chart16'>
+        Duplicate Y coordinate points.
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div class='chart third' id='chart13'>
+        Chart in a overflow div with scrolls (new tooltips)
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div class='chart third' id='chart14'>
+        Chart in a overflow div with scrolls (old tooltips)
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+
+      <div style='clear:both;'></div>
+      <div class='chart third' id='chart15'>
+        What if there are null, Infinity and NaN values in points?
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+      <div class='chart third' id='chart17'>
+        Chart with very small, 1e-10, points (old tooltips)
+        <button>Select chart</button>
+        <svg></svg>
+      </div>
+    </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineChart.js"></script>
+<script src="testScript.js"></script>
+<script>
+
+d3.select("body").on("keydown",function() {
+  if (d3.event.ctrlKey && d3.event.which === 75) {
+     alert("keydowned");
+  }
+});
+//------------ CHART 1 
+defaultChartConfig("chart1", dummyStocks(),true, true, {forceY:false});
+
+//-------------- CHART 2  --- Chart without the interactive guideline.
+nv.addGraph(function() {
+  var chart;
+  chart = nv.models.lineChart().useInteractiveGuideline(false);
+
+  chart
+      .x(function(d,i) { return d.x });
+
+
+  chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+      .tickFormat(d3.format(',.1f'));
+
+  chart.yAxis
+      .axisLabel('Voltage (v)')
+      .tickFormat(d3.format(',.4f'));
+
+  chart.showXAxis(true).showYAxis(true).rightAlignYAxis(true).margin({right: 90});
+
+  d3.select('#chart2 svg')
+      //.datum([]) //for testing noData
+      .datum(dummyStocks(50))
+      .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+defaultChartConfig("chart3", smallDataSet(3));
+defaultChartConfig("chart4", badDataSet());
+defaultChartConfig("chart5", smallDataSet(1));
+defaultChartConfig("chart6", normalDist());
+
+defaultChartConfig("chart7", smallDataSet(0));
+defaultChartConfig("chart8", allRandom(),false);
+defaultChartConfig("chart9", fibonacci());
+
+defaultChartConfig("chart10", lotsofSeries());
+defaultChartConfig("chart11", backwards(),false);
+defaultChartConfig("chart12", duplicateX(),false);
+defaultChartConfig("chart13",hyperbole(), true, false, {width: 700, height: 400});
+defaultChartConfig("chart14",hyperbole(), false, false, {width: 700, height: 400});
+defaultChartConfig("chart15", withNaNs());
+defaultChartConfig("chart16", duplicateY(), false);
+defaultChartConfig("chart17", tinyPoints(), false);
+
+function defaultChartConfig(containerid, data, guideline, useDates, auxOptions) {
+  if (auxOptions === undefined) auxOptions = {};
+  if (guideline === undefined) guideline = true;
+  nv.addGraph(function() {
+    var chart;
+    chart = nv.models.lineChart().useInteractiveGuideline(guideline);
+
+    chart
+        .x(function(d,i) { 
+          return d.x;
+        });
+
+    if (auxOptions.width) 
+      chart.width(auxOptions.width);
+
+    if (auxOptions.height)
+      chart.height(auxOptions.height);
+
+    if (auxOptions.forceY) 
+      chart.forceY([0]);
+
+    var formatter;
+    if (useDates !== undefined) {
+        formatter = function(d,i) {
+                var now = (new Date()).getTime() - 86400 * 1000 * 365;
+                now = new Date(now + d * 86400 * 1000);
+                return d3.time.format('%b %d %Y')(now );
+        }
+    }
+    else {
+        formatter = d3.format(",.1f");
+    }
+    chart.margin({right: 40});
+    chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+        .tickFormat(
+            formatter
+          );
+
+    chart.yAxis
+        .axisLabel('Voltage (v)')
+        .tickFormat(d3.format(',.2f'));
+
+
+    d3.select('#' + containerid + ' svg')
+        .datum(data)
+      .transition().duration(500)
+        .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+}
+
+function sinAndCos() {
+  var sin = [],
+      cos = [],
+      rand = [],
+      rand2 = []
+      ;
+
+  var now = (new Date()).getTime();
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y: i % 10 == 5 ? null : Math.sin(i/10) }); //the nulls are to show how defined works
+    cos.push({x: i, y: .5 * Math.cos(i/10)});
+    rand.push({x:i, y: Math.random() / 10});
+    rand2.push({x: i, y: Math.cos(i/10) + Math.random() / 10 })
+  }
+
+  return [
+    {
+      area: true,
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    },
+    {
+      values: rand,
+      key: "Random Points",
+      color: "#2222ff"
+    }
+    ,
+    {
+      values: rand2,
+      key: "Random Cosine",
+      color: "#667711"
+    }
+  ];
+}
+
+function hyperbole() {
+  var series1 = [], series2 = [], series3 = [];
+  for(var i = 1; i < 100; i++) {
+      series1.push({x: i, y: 1 / i});
+      series2.push({x: i, y: 5 / i});
+      series3.push({x: i, y: -8 / i});
+  }
+
+  return [
+    {values: series1, key: "Series 1"},
+    {values: series2, key: "Series 2"},
+    {values: series3, key: "Series 3"}
+  ];
+}
+
+function smallDataSet(n) {
+  var series = [];
+  for(var i = 0; i < n; i++) {
+      series.push({x: i, y: i * 0.3 + 2})
+  }
+  return [
+    {values: series, key: "Line 1"}
+  ];
+}
+
+function badDataSet() {
+  var series1 = [], series2 = [];
+  for(var i =0; i < 30; i++) {
+    series1.push({x:i, y: i*0.3 + 12});
+  }
+  for(i = 0; i < 30; i += 5) {
+    series2.push({x:i, y: i*0.7 + 8});
+  }
+  return [
+      {values: series1, key:"Series 1"},
+      {values: series2, key:"Series 2"}
+  ];
+}
+
+function normalDist() {
+  var series1 = [], series2 = [];
+  for(var i = -500; i < 500; i += 1) {
+     var x = i / 100;
+     var y = 0.3989 * Math.pow(2.71, -0.5*x*x);
+     series1.push({x:i, y:y});
+     series2.push({x:i, y:y*2});
+  }
+  return [
+  {values: series1, key:"Normal 1", area:true},
+  {values: series2, key:"Normal 2"}];
+}
+
+
+function allRandom() {
+  var series = [];
+  for(var i = 0; i < 20; i++) {
+    series.push({x: Math.floor(Math.random()*20), y: Math.floor(Math.random()*20) });
+  }
+  return [{values: series,area:true, key: "Total Chaos"}];
+}
+
+function fibonacci() {
+  var series = [
+      {x:1, y:1},
+      {x:2, y:2.5},
+      {x:3, y:4},
+      {x:5, y:6.7},
+      {x:8, y:10.1},
+      {x:13, y:20.1},
+      {x:21, y:35.1},
+      {x:34, y:60.0},
+      {x:55, y:70.9},
+      {x:89, y:100.3}
+  ];
+
+  return [{values: series,area:true,color: "#22fb88", key: "Fibonacci"}];
+}
+
+function lotsofSeries() {
+  var rval = [];
+  for(var n = 0; n < 15; n++) {
+      var values = [];
+      var slope = Math.random() * 5;
+      for(var i =0; i < 30; i++) {
+          values.push(
+              {x: i,
+              y: i * slope + Math.random()*5}
+            );
+      }
+      var isArea = (Math.random() > 0.5);
+      rval.push({key: "Series " + n, area: isArea, values: values});
+  }
+  return rval;
+}
+
+function backwards() {
+  var series = [];
+  for(var i = 30; i >= 1; i--) {
+      series.push({x: i, y: Math.sqrt(i) });
+  }
+  return [{values: series, key: "Backwards series", area:true}];
+}
+
+function duplicateX() {
+  return [
+    {key: "Duplicate X",
+      area: true,
+      values: [
+        {x: 4, y: 10},
+        {x: 4, y: 11},
+        {x: 4, y: 12},
+        {x: 4, y: 13}
+      ]
+    }
+  ];
+}
+
+function duplicateY() {
+  return [
+    {key: "Duplicate Y",
+     values: [
+        {x: 0, y: 10}, {x:1, y:10},{x:2, y:10},{x:3, y:10}
+     ]
+    }
+  ];
+}
+
+function withNaNs() {
+  return [
+      {key: "NaN Points",
+        values: [
+            {x: 1, y: NaN},
+            {x: 2, y: undefined},
+            {x: 3, y: false},
+            {x: 4, y: null},
+            {x: 5, y: "Hello"},
+            {x: NaN, y: NaN},
+            {x: null, y: null},
+            {x: undefined, y: undefined},
+            {x: "Hello", y: "World"},
+            {x: Infinity, y: Infinity}
+        ]
+      }
+  ]
+}
+
+function tinyPoints() {
+  var rval = {key: "Tiny points", values: []};
+  for(var i =1; i < 20; i++) {
+    rval.values.push({
+       x: i,
+       y: Math.random() * 1e-10
+    });
+  }
+  return [rval];
+}
+
+function dummyStocks(numPoints) {
+  numPoints = numPoints || 200;
+  function volatileChart(key,startPrice, volatility, isArea) {
+     var rval = {key: key, values: []};
+     if (isArea) rval.area = true;
+     for(var i = 1; i < numPoints; i++) {
+
+        rval.values.push({x: i, y: (i > 110 && i < 130) ? null : startPrice});
+        var rnd = Math.random();
+        var changePct = 2 * volatility * rnd;
+        if ( changePct > volatility) {
+           changePct -= (2*volatility);
+        }
+
+        startPrice = startPrice + startPrice * changePct;
+
+     }
+     return rval;
+  }
+
+  var stocks = [];
+  stocks.push(volatileChart("APPL",5.00, 0.02));
+  stocks.push(volatileChart("GOOG", 6.01,0.024));
+  stocks.push(volatileChart("MSFT", 2.01, 0.012));
+  stocks.push(volatileChart("IBM US", 2.5, 0.08, true));
+  return stocks;
+}
+
+</script>
diff --git a/test/multiBarChartTest.html b/test/multiBarChartTest.html
new file mode 100644
index 0000000..6242ff8
--- /dev/null
+++ b/test/multiBarChartTest.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+<body class='with-3d-shadow with-transitions'>
+  <h3>Multibar chart test cases - feel free to add more tests</h3>
+  <div class='navigation'>
+    <a href="../examples/multiBar.html">Multibar Stream example</a>
+  </div>
+  <div class='chart half' id="chart1">
+    Normal chart, with transition delay, and bar color set.
+    <svg></svg>
+  </div>
+  <div class='chart half' id="chart2">
+    Normal chart, no transitionDuration or delay, no bar color set.
+    <svg></svg>
+  </div>
+  <div class='chart half' id="chart3">
+    Chart with single series, no group spacing.
+    <svg></svg>
+  </div>
+  <div class='chart half' id="chart4">
+    Chart with 18 series, 7 data points per series.
+    <svg></svg>
+  </div>
+  <div class='chart third' id="chart5">
+    Chart with 1 data point
+    <svg></svg>
+  </div>
+  <div class='chart third' id="chart6">
+    Chart with 2 data points
+    <svg></svg>
+  </div>
+  <div class='chart third' id="chart7">
+    Chart with 0 data points
+    <svg></svg>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/multiBar.js"></script>
+<script src="../src/models/multiBarChart.js"></script>
+<script>
+
+
+var negative_test_data = new d3.range(0,3).map(function(d,i) { return {
+  key: 'Stream ' + i,
+  values: new d3.range(0,11).map( function(f,j) {
+    return { 
+             y: 10 + Math.random()*100 * (Math.floor(Math.random()*100)%2 ? 1 : -1),
+             x: j
+           }
+  })
+  };  
+});
+
+function dataFactory(seriesNum, perSeries) {
+   return new d3.range(0,seriesNum).map(function(d,i) { return {
+    key: 'Stream ' + i,
+    values: new d3.range(0,perSeries).map( function(f,j) {
+      return { 
+               y: 10 + Math.random()*100,
+               x: j
+             }
+    })
+    };  
+  });
+
+}
+
+
+
+defaultChartConfig("chart1", negative_test_data, {
+  barColor: d3.scale.category20().range(),
+  delay: 1200,
+  groupSpacing: 0.1,
+  reduceXTicks: false,
+  staggerLabels: true
+});
+
+defaultChartConfig("chart2", dataFactory(3,11), {
+  delay: 0,
+  transitionDuration:0,
+  groupSpacing: 0.2
+});
+
+defaultChartConfig("chart3",dataFactory(1,15),{
+  groupSpacing: 0,
+  delay:0
+});
+
+defaultChartConfig("chart4",dataFactory(18,7),{
+  delay:800
+});
+
+defaultChartConfig("chart5",dataFactory(1,1),{
+  delay:0
+});
+
+defaultChartConfig("chart6",dataFactory(1,2),{
+  delay:0
+});
+
+defaultChartConfig("chart7",dataFactory(0,0),{
+  delay:0
+});
+
+function defaultChartConfig(containerId, data, chartOptions) {
+  nv.addGraph(function() {
+      var chart;
+      chart = nv.models.multiBarChart()
+        .margin({bottom: 100})
+        .transitionDuration(300)
+        ;
+
+      chart.options(chartOptions);
+      chart.multibar
+        .hideable(true);
+
+      chart.xAxis
+          .axisLabel("Current Index")
+          .showMaxMin(true)
+          .tickFormat(d3.format(',0f'));
+
+      chart.yAxis
+          .tickFormat(d3.format(',.1f'));
+
+      d3.select('#' + containerId + ' svg')
+          .datum(data)
+         .call(chart);
+
+      nv.utils.windowResize(chart.update);
+
+      chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });
+
+      return chart;
+  });
+}
+
+
+
+
+</script>
diff --git a/test/pieChartTest.html b/test/pieChartTest.html
new file mode 100644
index 0000000..8fef1af
--- /dev/null
+++ b/test/pieChartTest.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+<style>
+
+body {
+  overflow-y:scroll;
+  font-family: Arial;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+</style>
+<body class='with-transitions'>
+<div class='navigation'>
+          Tests:
+          <a href="lineChartTest.html">Line Chart</a>
+          <a href="stackedAreaChartTest.html">Stacked Area</a>
+          <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+          <a href="ScatterChartTest.html">Scatter</a>
+          <a href="realTimeChartTest.html">Real time test</a>
+  </div>
+<div class='chart third' id="test1">
+  <h2>Standard Pie Chart</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id="test2">
+  <h2>Donut pie chart</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id="test3">
+  <h2>Pie chart with 30 series'</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id='test7'>
+  <h2>Pie chart with percent label type</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id="test4">
+  <h2>Empty array passed in</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id="test5">
+  <h2>Series' have only zero values</h2>
+  <svg></svg>
+</div>
+
+<div class='chart third' id="test6">
+  <h2>NaN, null, undefined values passed in</h2>
+  <svg></svg>
+</div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/pie.js"></script>
+<script src="../src/models/pieChart.js"></script>
+<script src="../src/utils.js"></script>
+<script>
+
+var testdata = [
+    {
+      key: "One",
+      y: 5
+    },
+    {
+      key: "Two",
+      y: 2
+    },
+    {
+      key: "Three",
+      y: 9
+    },
+    {
+      key: "Four",
+      y: 7
+    },
+    {
+      key: "Five",
+      y: 4
+    },
+    {
+      key: "Six",
+      y: 3
+    },
+    {
+      key: "Seven",
+      y: .5
+    }
+  ];
+
+function thirtySeries() {
+  var data = [];
+  for(var i =0; i < 30; i++) {
+    data.push({
+      key: "Series-" + i,
+      y: Math.floor(Math.random() * 100)
+    });
+  }
+  return data;
+}
+
+function defaultChart(containerId, data, labelType) {
+  nv.addGraph(function() {
+      var width = 500,
+          height = 500;
+
+      var chart = nv.models.pieChart()
+          .x(function(d) { return d.key })
+          .y(function(d) { return d.y })
+          .color(d3.scale.category10().range())
+          .width(width)
+          .height(height)
+          .labelType(labelType)
+          ;
+
+        d3.select("#" + containerId + " svg")
+            .datum(data)
+          .transition().duration(1200)
+            .attr('width', width)
+            .attr('height', height)
+            .call(chart);
+
+      nv.utils.windowResize(chart.update);
+      return chart;
+  });
+}
+
+//Adds donut pie chart.
+nv.addGraph(function() {
+
+    var width = 500,
+        height = 500;
+
+    var chart = nv.models.pieChart()
+        .x(function(d) { return d.key })
+        .color(d3.scale.category10().range())
+        .width(width)
+        .height(height)
+        .donut(true);
+
+    chart.pie
+        .startAngle(function(d) { return d.startAngle/2 -Math.PI/2 })
+        .endAngle(function(d) { return d.endAngle/2 -Math.PI/2 });
+
+      d3.select("#test2 svg")
+          .datum(testdata)
+        .transition().duration(1200)
+          .attr('width', width)
+          .attr('height', height)
+          .call(chart);
+    nv.utils.windowResize(chart.update);
+    return chart;
+});
+
+defaultChart("test1", testdata);
+defaultChart("test3", thirtySeries());
+defaultChart("test4",[]);
+defaultChart("test5",[{key: "Zero series", y: 0}, {key: "Zero series 2", y: 0}]);
+defaultChart("test6", [
+      {key: "Undefined", y: undefined},
+      {key: "Nan", y: NaN},
+      {key: "null", y: null},
+      {key: "zero", y: 0}
+  ])
+
+defaultChart("test7",testdata, "percent");
+</script>
diff --git a/test/polylinearTest.html b/test/polylinearTest.html
new file mode 100644
index 0000000..eef88b3
--- /dev/null
+++ b/test/polylinearTest.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+<style>
+
+</style>
+<body>
+  <h3>Test cases for Domain and Range overrides - Example of a polylinear scale</h3>
+  <div style='position:relative;'>
+      <div class='navigation'>
+          Tests:
+          <a href="lineChartTest.html">Line Chart</a>
+          <a href="stackedAreaChartTest.html">Stacked Area</a>
+          <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+          <a href="ScatterChartTest.html">Scatter</a>
+          <a href="pieChartTest.html">Pie chart</a>
+      </div>
+      <div class='chart full' id='chart1'>
+        Line chart: yDomain = [0,2,200], yRange = [500,50,0]
+        <svg></svg>
+      </div>
+      <div class='chart half with-transitions' id='chart2'>
+        Historical bar chart: yDomain = [0,2,130], yRange = [500,50,0]
+        <svg></svg>
+      </div>
+
+      <div class='half'>
+        Notes:
+        The chart.yRange() and chart.xRange() properties are an advanced feature.  They are useful
+        in situations where your data has wild extremes: ie, you have lots of smaller numbers, and lots of really big numbers.<br/><br/>
+
+        Without a polylinear scale, those really big data points will overwhelm the small points.<br/><br/>
+
+        Please look at the examples to understand how polylinear scales work.  Comment/uncomment the lines that alter yDomain and yRange
+        to see the effect it has on the charts.
+      </div>
+  </div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineChart.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/historicalBarChart.js"></script>
+<script>
+
+//------------ CHART 1 
+lineChartConfig("chart1", sinAndCos(),true, false);
+barChartConfig(dataWithSpikes());
+
+
+function lineChartConfig(containerid, data, guideline, useDates, auxOptions) {
+  if (auxOptions === undefined) auxOptions = {};
+  if (guideline === undefined) guideline = true;
+  nv.addGraph(function() {
+    var chart;
+    chart = nv.models.lineChart().useInteractiveGuideline(guideline);
+
+    var fullChartHeight = 500 - chart.margin().top - chart.margin().bottom;
+    chart
+        .x(function(d,i) { 
+          return d.x;
+        })
+       .yDomain([0,2,200])   //Using a polylinear scale
+        .yRange([fullChartHeight,50,0])
+        ;
+
+    if (auxOptions.width) 
+      chart.width(auxOptions.width);
+
+    if (auxOptions.height)
+      chart.height(auxOptions.height);
+
+    var formatter;
+    if (useDates) {
+        formatter = function(d,i) {
+                var now = (new Date()).getTime() - 86400 * 1000 * 365;
+                now = new Date(now + d * 86400 * 1000);
+                return d3.time.format('%b %d %Y')(now );
+        }
+    }
+    else {
+        formatter = d3.format(",.1f");
+    }
+
+    chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+        .tickFormat(
+            formatter
+          );
+
+    chart.yAxis
+        .axisLabel('Voltage (v)')
+        .tickFormat(d3.format(',.2f'));
+
+    d3.select('#' + containerid + ' svg')
+        .datum(data)
+      .transition().duration(500)
+        .call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+}
+
+function barChartConfig(data) {
+    nv.addGraph(function() {
+      var chart = nv.models.historicalBarChart();
+      var fullChartHeight = 500 - chart.margin().top - chart.margin().bottom;
+      chart.color(["#ff7f0e"])
+      .yDomain([0,2,130])
+      .yRange([fullChartHeight,50,0])
+      .transitionDuration(500)
+      ;
+
+      chart.xAxis 
+      .tickFormat(d3.format(',.1f'))
+      .axisLabel("Time")
+      ;
+
+       chart.yAxis
+      .axisLabel('Random Number')
+      .tickFormat(d3.format(',.4f'));
+      d3.select("#chart2 svg")
+        .datum(data)
+        .transition().duration(500)
+        .call(chart);
+
+      nv.utils.windowResize(chart.update);
+      return chart;
+    });
+}
+
+function sinAndCos() {
+  var sin = [],
+      cos = [],
+      higherOrder = []
+      ;
+
+  var now = (new Date()).getTime();
+  for (var i = 0; i < 100; i++) {
+    sin.push({x: i, y:  Math.abs(Math.sin(i/10)) }); //the nulls are to show how defined works
+    cos.push({x: i, y: Math.abs(.5 * Math.cos(i/10)) });
+
+    higherOrder.push({x: i, y: Math.cos(i) * 100 + 100});
+  }
+
+  return [
+    {
+      values: sin,
+      key: "Sine Wave",
+      color: "#ff7f0e"
+    },
+    {
+      values: cos,
+      key: "Cosine Wave",
+      color: "#2ca02c"
+    },
+    {
+      values: higherOrder,
+      key: "Higher Order",
+      color: "#fc34ff"
+    }
+  ];
+}
+
+function dataWithSpikes() {
+   var rval = [];
+   for(var i =0; i < 100; i++) {
+
+      var spike = (Math.random() > 0.9);
+      rval.push({
+        x: i,
+        y: (spike) ? Math.random() * 100 + 30 : Math.random()
+      });
+   }
+   return [
+      {key: "Series 1",
+      color : "orange",
+      values: rval}
+   ];
+}
+
+</script>
diff --git a/test/realTimeChartTest.html b/test/realTimeChartTest.html
new file mode 100644
index 0000000..d8a8029
--- /dev/null
+++ b/test/realTimeChartTest.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+
+<body>
+	 <div class='navigation'>
+          Tests:
+          <a href="lineChartTest.html">Line Chart</a>
+          <a href="stackedAreaChartTest.html">Stacked Area</a>
+          <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+          <a href="ScatterChartTest.html">Scatter</a>
+      </div>
+  <h3>Example showing real time chart updating</h3>
+  The chart below is a historical bar chart, which is ideal for visualizing time series data.<br/>
+  First, you need to update the data model for the chart. In the example, we append a random number
+  every half a second. Then, you call <strong>chart.update()</strong>.
+
+<div id='chart' class='chart half with-transitions'>
+	<svg></svg>
+	<button id='start-stop-button'>Start/Stop Stream</button>
+</div>
+
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/line.js"></script>
+<script src="../src/models/lineChart.js"></script>
+<script src="../src/models/historicalBar.js"></script>
+<script src="../src/models/historicalBarChart.js"></script>
+
+<script>
+var chart;
+var data = [{
+	key: "Stream 1",
+	color: "orange",
+	values: [
+		{x: 1, y: 1}
+	]
+}];
+nv.addGraph(function() {
+  
+  chart = nv.models.historicalBarChart();
+
+  chart
+      .x(function(d,i) { return d.x });
+
+  chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately
+      .tickFormat(d3.format(',.1f'))
+      .axisLabel("Time")
+      ;
+
+  chart.yAxis
+      .axisLabel('Random Number')
+      .tickFormat(d3.format(',.4f'));
+
+  chart.showXAxis(true).showYAxis(true).rightAlignYAxis(true).margin({right: 90});
+
+  d3.select('#chart svg')
+      .datum(data)
+      .transition().duration(500)
+      .call(chart);
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+var x = 2;
+var run = true;
+setInterval(function(){
+	if (!run) return;
+	
+	var spike = (Math.random() > 0.95) ? 10: 1;
+	data[0].values.push({
+		x: x,
+		y: Math.random() * spike
+	});
+
+	if (data[0].values.length > 70) {
+		data[0].values.shift();
+	}
+	x++;
+
+	chart.update();
+}, 500);
+
+d3.select("#start-stop-button").on("click",function() {
+	run = !run;
+});
+
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/test/stackedAreaChartTest.html b/test/stackedAreaChartTest.html
new file mode 100644
index 0000000..1bb0a9a
--- /dev/null
+++ b/test/stackedAreaChartTest.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+
+<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
+<link href="teststyle.css" rel="stylesheet" type='text/css'>
+<body>
+  <h3>Stacked area chart test cases - feel free to add more tests</h3>
+  <div class='navigation'>
+      Tests:
+      <a href="lineChartTest.html">Line Chart</a>
+      <a href="stackedAreaChartTest.html">Stacked Area</a>
+      <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
+  </div>
+  <div class='chart full' id='chart1'>Full chart example with new tooltip and guideline<button>Select chart</button><svg></svg></div>
+  <div class='chart half with-transitions' id='chart2'>Chart with old tooltips (with-transitions)<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart3'>Chart with single point<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart4'>Chart with two points<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart5'>Chart with 'holes'<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart6'>Total random points<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart7'>Less than four points, old tooltips<button>Select chart</button><svg></svg></div>
+  <div class='chart half' id='chart8'>No data<svg></svg></div>
+  <div class='chart half' id='chart9'>Data is all negative<svg></svg></div>
+
+<script src="../lib/d3.v3.js"></script>
+<script src="../nv.d3.js"></script>
+<script src="../src/utils.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/tooltip.js"></script>
+<script src="../src/interactiveLayer.js"></script>
+<script src="../src/models/legend.js"></script>
+<script src="../src/models/axis.js"></script>
+<script src="../src/models/scatter.js"></script>
+<script src="../src/models/stackedArea.js"></script>
+<script src="../src/models/stackedAreaChart.js"></script>
+<script src="testScript.js"></script>
+<script>
+
+
+var histcatexplong = [
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218208] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957521] , [ 1149048000000 , 26.823411519395] , [ 1151640000000 , 23.850443591584] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393694] , [ 1159588800000 , 27.977128511299] , [ 1162270800000 , 29.073672469721] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687638] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271051] , [ 1175313600000 , 17.558388444186] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201302] , [ 1183176000000 , 18.729632971228] , [ 1185854400000 , 18.814523318848] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575715] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 17.175388025298] , [ 1201755600000 , 17.286592443521] , [ 1204261200000 , 16.323141626569] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391094] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.539366475979] , [ 1217476800000 , 15.255131790216] , [ 1220155200000 , 15.660963922593] , [ 1222747200000 , 13.254482273697] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090925] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672229] , [ 1241064000000 , 14.6314458648] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367016] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.75602606542] , [ 1259557200000 , 19.385804443147] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793023] , [ 1280548800000 , 29.46138169384] , [ 1283227200000 , 27.357322961862] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379723] , [ 1293771600000 , 29.449241421597] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449189] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.079662545409] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.41800274293] , [ 1312084800000 , 23.243644138871] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.672380820431] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213899] , [ 1330491600000 , 20.366462219462] , [ 1333166400000 , 17.429019937289] , [ 1335758400000 , 16.75543633539] , [ 1338436800000 , 16.182906906042]]
+  } ,
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220792] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 8.5658461590953] , [ 1335758400000 , 8.6135447714243] , [ 1338436800000 , 8.0231460925212]]
+  } ,
+  {
+    "key" : "Energy" ,
+    "values" : [ [ 1138683600000 , 1.544303464167] , [ 1141102800000 , 1.4387289432421] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 1.328626801128] , [ 1154318400000 , 1.2874050802627] , [ 1156996800000 , 1.0872743105593] , [ 1159588800000 , 0.96042562635813] , [ 1162270800000 , 0.93139372870616] , [ 1164862800000 , 0.94432167305385] , [ 1167541200000 , 1.277750166208] , [ 1170219600000 , 1.2204893886811] , [ 1172638800000 , 1.207489123122] , [ 1175313600000 , 1.2490651414113] , [ 1177905600000 , 1.2593129913052] , [ 1180584000000 , 1.373329808388] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 1.4516108933695] , [ 1225425600000 , 1.1856025268225] , [ 1228021200000 , 1.3430470355439] , [ 1230699600000 , 2.2752595354509] , [ 1233378000000 , 2.4031560010523] , [ 1235797200000 , 2.0822430731926] , [ 1238472000000 , 1.5640902826938] , [ 1241064000000 , 1.5812873972356] , [ 1243742400000 , 1.9462448548894] , [ 1246334400000 , 2.9464870223957] , [ 1249012800000 , 3.0744699383222] , [ 1251691200000 , 2.9422304628446] , [ 1254283200000 , 2.7503075599999] , [ 1256961600000 , 2.6506701800427] , [ 1259557200000 , 2.8005425319977] , [ 1262235600000 , 2.6816184971185] , [ 1264914000000 , 2.681206271327] , [ 1267333200000 , 2.8195488011259] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 1.0687057346382] , [ 1280548800000 , 1.2539400544134] , [ 1283227200000 , 1.1862969445955] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 1.941972859484] , [ 1298869200000 , 2.1142247697552] , [ 1301544000000 , 2.3788590206824] , [ 1304136000000 , 2.5337302877545] , [ 1306814400000 , 2.3163370395199] , [ 1309406400000 , 2.0645451843195] , [ 1312084800000 , 2.1004446672411] , [ 1314763200000 , 3.6301875804303] , [ 1317355200000 , 2.454204664652] , [ 1320033600000 , 2.196082370894] , [ 1322629200000 , 2.3358418255202] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0.39001201038526] , [ 1335758400000 , 0.30945472725559] , [ 1338436800000 , 0.31062439305591]]
+  } ,
+  {
+    "key" : "Financials" ,
+    "values" : [ [ 1138683600000 , 13.356778764352] , [ 1141102800000 , 13.611196863271] , [ 1143781200000 , 6.895903006119] , [ 1146369600000 , 6.9939633271352] , [ 1149048000000 , 6.7241510257675] , [ 1151640000000 , 5.5611293669516] , [ 1154318400000 , 5.6086488714041] , [ 1156996800000 , 5.4962849907033] , [ 1159588800000 , 6.9193153169279] , [ 1162270800000 , 7.0016334389777] , [ 1164862800000 , 6.7865422443273] , [ 1167541200000 , 9.0006454225383] , [ 1170219600000 , 9.2233916171431] , [ 1172638800000 , 8.8929316009479] , [ 1175313600000 , 10.345937520404] , [ 1177905600000 , 10.075914677026] , [ 1180584000000 , 10.089006188111] , [ 1183176000000 , 10.598330295008] , [ 1185854400000 , 9.968954653301] , [ 1188532800000 , 9.7740580198146] , [ 1191124800000 , 10.558483060626] , [ 1193803200000 , 9.9314651823603] , [ 1196398800000 , 9.3997715873769] , [ 1199077200000 , 8.4086493387262] , [ 1201755600000 , 8.9698309085926] , [ 1204261200000 , 8.2778357995396] , [ 1206936000000 , 8.8585045600123] , [ 1209528000000 , 8.7013756413322] , [ 1212206400000 , 7.7933605469443] , [ 1214798400000 , 7.0236183483064] , [ 1217476800000 , 6.9873088186829] , [ 1220155200000 , 6.8031713070097] , [ 1222747200000 , 6.6869531315723] , [ 1225425600000 , 6.138256993963] , [ 1228021200000 , 5.6434994016354] , [ 1230699600000 , 5.495220262512] , [ 1233378000000 , 4.6885326869846] , [ 1235797200000 , 4.4524349883438] , [ 1238472000000 , 5.6766520778185] , [ 1241064000000 , 5.7675774480752] , [ 1243742400000 , 5.7882863168337] , [ 1246334400000 , 7.2666010034924] , [ 1249012800000 , 7.519182132226] , [ 1251691200000 , 7.849651451445] , [ 1254283200000 , 10.383992037985] , [ 1256961600000 , 9.0653691861818] , [ 1259557200000 , 9.6705248324159] , [ 1262235600000 , 10.856380561349] , [ 1264914000000 , 11.27452370892] , [ 1267333200000 , 11.754156529088] , [ 1270008000000 , 8.2870811422456] , [ 1272600000000 , 8.0210264360699] , [ 1275278400000 , 7.5375074474865] , [ 1277870400000 , 8.3419527338039] , [ 1280548800000 , 9.4197471818443] , [ 1283227200000 , 8.7321733185797] , [ 1285819200000 , 9.6627062648126] , [ 1288497600000 , 10.187962234549] , [ 1291093200000 , 9.8144201733476] , [ 1293771600000 , 10.275723361713] , [ 1296450000000 , 16.796066079353] , [ 1298869200000 , 17.543254984075] , [ 1301544000000 , 16.673660675084] , [ 1304136000000 , 17.963944353609] , [ 1306814400000 , 16.637740867211] , [ 1309406400000 , 15.84857094609] , [ 1312084800000 , 14.767303362182] , [ 1314763200000 , 24.778452182432] , [ 1317355200000 , 18.370353229999] , [ 1320033600000 , 15.2531374291] , [ 1322629200000 , 14.989600840649] , [ 1325307600000 , 16.052539160125] , [ 1327986000000 , 16.424390322793] , [ 1330491600000 , 17.884020741105] , [ 1333166400000 , 7.1424929577921] , [ 1335758400000 , 7.8076213051482] , [ 1338436800000 , 7.2462684949232]]
+  } ,
+  {
+    "key" : "Health Care" ,
+    "values" : [ [ 1138683600000 , 14.212410956029] , [ 1141102800000 , 13.973193618249] , [ 1143781200000 , 15.218233920665] , [ 1146369600000 , 14.38210972745] , [ 1149048000000 , 13.894310878491] , [ 1151640000000 , 15.593086090032] , [ 1154318400000 , 16.244839695188] , [ 1156996800000 , 16.017088850646] , [ 1159588800000 , 14.183951830055] , [ 1162270800000 , 14.148523245697] , [ 1164862800000 , 13.424326059972] , [ 1167541200000 , 12.974450435753] , [ 1170219600000 , 13.23247041802] , [ 1172638800000 , 13.318762655574] , [ 1175313600000 , 15.961407746104] , [ 1177905600000 , 16.287714639805] , [ 1180584000000 , 16.246590583889] , [ 1183176000000 , 17.564505594809] , [ 1185854400000 , 17.872725373165] , [ 1188532800000 , 18.018998508757] , [ 1191124800000 , 15.584518016603] , [ 1193803200000 , 15.480850647181] , [ 1196398800000 , 15.699120036984] , [ 1199077200000 , 19.184281817226] , [ 1201755600000 , 19.691226605207] , [ 1204261200000 , 18.982314051295] , [ 1206936000000 , 18.707820309008] , [ 1209528000000 , 17.459630929761] , [ 1212206400000 , 16.500616076782] , [ 1214798400000 , 18.086324003979] , [ 1217476800000 , 18.929464156258] , [ 1220155200000 , 18.233728682084] , [ 1222747200000 , 16.315776297325] , [ 1225425600000 , 14.63289219025] , [ 1228021200000 , 14.667835024478] , [ 1230699600000 , 13.946993947308] , [ 1233378000000 , 14.394304684397] , [ 1235797200000 , 13.724462792967] , [ 1238472000000 , 10.930879035806] , [ 1241064000000 , 9.8339915513708] , [ 1243742400000 , 10.053858541872] , [ 1246334400000 , 11.786998438287] , [ 1249012800000 , 11.780994901769] , [ 1251691200000 , 11.305889670276] , [ 1254283200000 , 10.918452290083] , [ 1256961600000 , 9.6811395055706] , [ 1259557200000 , 10.971529744038] , [ 1262235600000 , 13.330210480209] , [ 1264914000000 , 14.592637568961] , [ 1267333200000 , 14.605329141157] , [ 1270008000000 , 13.936853794037] , [ 1272600000000 , 12.189480759072] , [ 1275278400000 , 11.676151385046] , [ 1277870400000 , 13.058852800017] , [ 1280548800000 , 13.62891543203] , [ 1283227200000 , 13.811107569918] , [ 1285819200000 , 13.786494560787] , [ 1288497600000 , 14.04516285753] , [ 1291093200000 , 13.697412447288] , [ 1293771600000 , 13.677681376221] , [ 1296450000000 , 19.961511864531] , [ 1298869200000 , 21.049198298158] , [ 1301544000000 , 22.687631094008] , [ 1304136000000 , 25.469010617433] , [ 1306814400000 , 24.883799437121] , [ 1309406400000 , 24.203843814248] , [ 1312084800000 , 22.138760964038] , [ 1314763200000 , 16.034636966228] , [ 1317355200000 , 15.394958944556] , [ 1320033600000 , 12.625642461969] , [ 1322629200000 , 12.973735699739] , [ 1325307600000 , 15.786018336149] , [ 1327986000000 , 15.227368020134] , [ 1330491600000 , 15.899752650734] , [ 1333166400000 , 18.994731295388] , [ 1335758400000 , 18.450055817702] , [ 1338436800000 , 17.863719889669]]
+  } ,
+  {
+    "key" : "Industrials" ,
+    "values" : [ [ 1138683600000 , 7.1590087090398] , [ 1141102800000 , 7.1297210970108] , [ 1143781200000 , 5.5774588290586] , [ 1146369600000 , 5.4977254491156] , [ 1149048000000 , 5.5138153113634] , [ 1151640000000 , 4.3198084032122] , [ 1154318400000 , 3.9179295839125] , [ 1156996800000 , 3.8110093051479] , [ 1159588800000 , 5.5629020916939] , [ 1162270800000 , 5.7241673711336] , [ 1164862800000 , 5.4715049695004] , [ 1167541200000 , 4.9193763571618] , [ 1170219600000 , 5.136053947247] , [ 1172638800000 , 5.1327258759766] , [ 1175313600000 , 5.1888943925082] , [ 1177905600000 , 5.5191481293345] , [ 1180584000000 , 5.6093625614921] , [ 1183176000000 , 4.2706312987397] , [ 1185854400000 , 4.4453235132117] , [ 1188532800000 , 4.6228003109761] , [ 1191124800000 , 5.0645764756954] , [ 1193803200000 , 5.0723447230959] , [ 1196398800000 , 5.1457765818846] , [ 1199077200000 , 5.4067851597282] , [ 1201755600000 , 5.472241916816] , [ 1204261200000 , 5.3742740389688] , [ 1206936000000 , 6.251751933664] , [ 1209528000000 , 6.1406852153472] , [ 1212206400000 , 5.8164385627465] , [ 1214798400000 , 5.4255846656171] , [ 1217476800000 , 5.3738499417204] , [ 1220155200000 , 5.1815627753979] , [ 1222747200000 , 5.0305983235349] , [ 1225425600000 , 4.6823058607165] , [ 1228021200000 , 4.5941481589093] , [ 1230699600000 , 5.4669598474575] , [ 1233378000000 , 5.1249037357] , [ 1235797200000 , 4.3504421250742] , [ 1238472000000 , 4.6260881026002] , [ 1241064000000 , 5.0140402458946] , [ 1243742400000 , 4.7458462454774] , [ 1246334400000 , 6.0437019654564] , [ 1249012800000 , 6.4595216249754] , [ 1251691200000 , 6.6420468254155] , [ 1254283200000 , 5.8927271960913] , [ 1256961600000 , 5.4712108838003] , [ 1259557200000 , 6.1220254207747] , [ 1262235600000 , 5.5385935169255] , [ 1264914000000 , 5.7383377612639] , [ 1267333200000 , 6.1715976730415] , [ 1270008000000 , 4.0102262681174] , [ 1272600000000 , 3.769389679692] , [ 1275278400000 , 3.5301571031152] , [ 1277870400000 , 2.7660252652526] , [ 1280548800000 , 3.1409983385775] , [ 1283227200000 , 3.0528024863055] , [ 1285819200000 , 4.3126123157971] , [ 1288497600000 , 4.594654041683] , [ 1291093200000 , 4.5424126126793] , [ 1293771600000 , 4.7790043987302] , [ 1296450000000 , 7.4969154058289] , [ 1298869200000 , 7.9424751557821] , [ 1301544000000 , 7.1560736250547] , [ 1304136000000 , 7.9478117337855] , [ 1306814400000 , 7.4109214848895] , [ 1309406400000 , 7.5966457641101] , [ 1312084800000 , 7.165754444071] , [ 1314763200000 , 5.4816702524302] , [ 1317355200000 , 4.9893656089584] , [ 1320033600000 , 4.498385105327] , [ 1322629200000 , 4.6776090358151] , [ 1325307600000 , 8.1350814368063] , [ 1327986000000 , 8.0732769990652] , [ 1330491600000 , 8.5602340387277] , [ 1333166400000 , 5.1293714074325] , [ 1335758400000 , 5.2586794619016] , [ 1338436800000 , 5.1100853569977]]
+  } ,
+  {
+    "key" : "Information Technology" ,
+    "values" : [ [ 1138683600000 , 13.242301508051] , [ 1141102800000 , 12.863536342042] , [ 1143781200000 , 21.034044171629] , [ 1146369600000 , 21.419084618803] , [ 1149048000000 , 21.142678863691] , [ 1151640000000 , 26.568489677529] , [ 1154318400000 , 24.839144939905] , [ 1156996800000 , 25.456187462167] , [ 1159588800000 , 26.350164502826] , [ 1162270800000 , 26.47833320519] , [ 1164862800000 , 26.425979547847] , [ 1167541200000 , 28.191461582256] , [ 1170219600000 , 28.930307448808] , [ 1172638800000 , 29.521413891117] , [ 1175313600000 , 28.188285966466] , [ 1177905600000 , 27.704619625832] , [ 1180584000000 , 27.490862424829] , [ 1183176000000 , 28.770679721286] , [ 1185854400000 , 29.060480671449] , [ 1188532800000 , 28.240998844973] , [ 1191124800000 , 33.004893194127] , [ 1193803200000 , 34.075180359928] , [ 1196398800000 , 32.548560664833] , [ 1199077200000 , 30.629727432728] , [ 1201755600000 , 28.642858788159] , [ 1204261200000 , 27.973575227842] , [ 1206936000000 , 27.393351882726] , [ 1209528000000 , 28.476095288523] , [ 1212206400000 , 29.29667866426] , [ 1214798400000 , 29.222333802896] , [ 1217476800000 , 28.092966093843] , [ 1220155200000 , 28.107159262922] , [ 1222747200000 , 25.482974832098] , [ 1225425600000 , 21.208115993834] , [ 1228021200000 , 20.295043095268] , [ 1230699600000 , 15.925754618401] , [ 1233378000000 , 17.162864628346] , [ 1235797200000 , 17.084345773174] , [ 1238472000000 , 22.246007102281] , [ 1241064000000 , 24.530543998509] , [ 1243742400000 , 25.084184918242] , [ 1246334400000 , 16.606166527358] , [ 1249012800000 , 17.239620011628] , [ 1251691200000 , 17.336739127379] , [ 1254283200000 , 25.478492475753] , [ 1256961600000 , 23.017152085245] , [ 1259557200000 , 25.617745423683] , [ 1262235600000 , 24.061133998642] , [ 1264914000000 , 23.223933318644] , [ 1267333200000 , 24.425887263937] , [ 1270008000000 , 35.501471156693] , [ 1272600000000 , 33.775013878676] , [ 1275278400000 , 30.417993630285] , [ 1277870400000 , 30.023598978467] , [ 1280548800000 , 33.327519522436] , [ 1283227200000 , 31.963388450371] , [ 1285819200000 , 30.498967232092] , [ 1288497600000 , 32.403696817912] , [ 1291093200000 , 31.47736071922] , [ 1293771600000 , 31.53259666241] , [ 1296450000000 , 41.760282761548] , [ 1298869200000 , 45.605771243237] , [ 1301544000000 , 39.986557966215] , [ 1304136000000 , 43.846330510051] , [ 1306814400000 , 39.857316881857] , [ 1309406400000 , 37.675127768208] , [ 1312084800000 , 35.775077970313] , [ 1314763200000 , 48.631009702577] , [ 1317355200000 , 42.830831754505] , [ 1320033600000 , 35.611502589362] , [ 1322629200000 , 35.320136981738] , [ 1325307600000 , 31.564136901516] , [ 1327986000000 , 32.074407502433] , [ 1330491600000 , 35.053013769976] , [ 1333166400000 , 26.434568573937] , [ 1335758400000 , 25.305617871002] , [ 1338436800000 , 24.520919418236]]
+  } ,
+  {
+    "key" : "Materials" ,
+    "values" : [ [ 1138683600000 , 5.5806167415681] , [ 1141102800000 , 5.4539047069985] , [ 1143781200000 , 7.6728842432362] , [ 1146369600000 , 7.719946716654] , [ 1149048000000 , 8.0144619912942] , [ 1151640000000 , 7.942223133434] , [ 1154318400000 , 8.3998279827444] , [ 1156996800000 , 8.532324572605] , [ 1159588800000 , 4.7324285199763] , [ 1162270800000 , 4.7402397487697] , [ 1164862800000 , 4.9042069355168] , [ 1167541200000 , 5.9583963430882] , [ 1170219600000 , 6.3693899239171] , [ 1172638800000 , 6.261153903813] , [ 1175313600000 , 5.3443942184584] , [ 1177905600000 , 5.4932111235361] , [ 1180584000000 , 5.5747393101109] , [ 1183176000000 , 5.3833633060013] , [ 1185854400000 , 5.5125898831832] , [ 1188532800000 , 5.8116112661327] , [ 1191124800000 , 4.3962296939996] , [ 1193803200000 , 4.6967663605521] , [ 1196398800000 , 4.7963004350914] , [ 1199077200000 , 4.1817985183351] , [ 1201755600000 , 4.3797643870182] , [ 1204261200000 , 4.6966642197965] , [ 1206936000000 , 4.3609995132565] , [ 1209528000000 , 4.4736290996496] , [ 1212206400000 , 4.3749762738128] , [ 1214798400000 , 3.3274661194507] , [ 1217476800000 , 3.0316184691337] , [ 1220155200000 , 2.5718140204728] , [ 1222747200000 , 2.7034994044603] , [ 1225425600000 , 2.2033786591364] , [ 1228021200000 , 1.9850621240805] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0.44495950017788] , [ 1256961600000 , 0.33945469262483] , [ 1259557200000 , 0.38348269455195] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0.52216435716176] , [ 1298869200000 , 0.59275786698454] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } ,
+  {
+    "key" : "Telecommunication Services" ,
+    "values" : [ [ 1138683600000 , 3.7056975170243] , [ 1141102800000 , 3.7561118692318] , [ 1143781200000 , 2.861913700854] , [ 1146369600000 , 2.9933744103381] , [ 1149048000000 , 2.7127537218463] , [ 1151640000000 , 3.1195497076283] , [ 1154318400000 , 3.4066964004508] , [ 1156996800000 , 3.3754571113569] , [ 1159588800000 , 2.2965579982924] , [ 1162270800000 , 2.4486818633018] , [ 1164862800000 , 2.4002308848517] , [ 1167541200000 , 1.9649579750349] , [ 1170219600000 , 1.9385263638056] , [ 1172638800000 , 1.9128975336387] , [ 1175313600000 , 2.3412869836298] , [ 1177905600000 , 2.4337870351445] , [ 1180584000000 , 2.62179703171] , [ 1183176000000 , 3.2642864957929] , [ 1185854400000 , 3.3200396223709] , [ 1188532800000 , 3.3934212707572] , [ 1191124800000 , 4.2822327088179] , [ 1193803200000 , 4.1474964228541] , [ 1196398800000 , 4.1477082879801] , [ 1199077200000 , 5.2947122916128] , [ 1201755600000 , 5.2919843508028] , [ 1204261200000 , 5.1989783050309] , [ 1206936000000 , 3.5603057673513] , [ 1209528000000 , 3.3009087690692] , [ 1212206400000 , 3.1784852603792] , [ 1214798400000 , 4.5889503538868] , [ 1217476800000 , 4.401779617494] , [ 1220155200000 , 4.2208301828278] , [ 1222747200000 , 3.89396671475] , [ 1225425600000 , 3.0423832241354] , [ 1228021200000 , 3.135520611578] , [ 1230699600000 , 1.9631418164089] , [ 1233378000000 , 1.8963543874958] , [ 1235797200000 , 1.8266636017025] , [ 1238472000000 , 0.93136635895188] , [ 1241064000000 , 0.92737801918888] , [ 1243742400000 , 0.97591889805002] , [ 1246334400000 , 2.6841193805515] , [ 1249012800000 , 2.5664341140531] , [ 1251691200000 , 2.3887523699873] , [ 1254283200000 , 1.1737801663681] , [ 1256961600000 , 1.0953582317281] , [ 1259557200000 , 1.2495674976653] , [ 1262235600000 , 0.36607452464754] , [ 1264914000000 , 0.3548719047291] , [ 1267333200000 , 0.36769242398939] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0.85450741275337] , [ 1288497600000 , 0.91360317921637] , [ 1291093200000 , 0.89647678692269] , [ 1293771600000 , 0.87800687192639] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0.43668720882994] , [ 1304136000000 , 0.4756523602692] , [ 1306814400000 , 0.46947368328469] , [ 1309406400000 , 0.45138896152316] , [ 1312084800000 , 0.43828726648117] , [ 1314763200000 , 2.0820861395316] , [ 1317355200000 , 0.9364411075395] , [ 1320033600000 , 0.60583907839773] , [ 1322629200000 , 0.61096950747437] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  } ,
+  {
+    "key" : "Utilities" ,
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , 0] , [ 1217476800000 , 0] , [ 1220155200000 , 0] , [ 1222747200000 , 0] , [ 1225425600000 , 0] , [ 1228021200000 , 0] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  }
+];
+
+
+// for testing single data point
+var histcatexplong_singledatapoint = [
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , 27.38478809681]]
+  } ,
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 7.2800122043237]]
+  } ,
+  {
+    "key" : "Energy" ,
+    "values" : [ [ 1138683600000 , 1.544303464167]]
+  } ,
+  {
+    "key" : "Financials" ,
+    "values" : [ [ 1138683600000 , 13.356778764352]]
+  } ,
+  {
+    "key" : "Health Care" ,
+    "values" : [ [ 1138683600000 , 14.212410956029]]
+  } ,
+  {
+    "key" : "Industrials" ,
+    "values" : [ [ 1138683600000 , 7.1590087090398]]
+  } ,
+  {
+    "key" : "Information Technology" ,
+    "values" : [ [ 1138683600000 , 13.242301508051]]
+  } ,
+  {
+    "key" : "Materials" ,
+    "values" : [ [ 1138683600000 , 5.5806167415681]]
+  } ,
+  {
+    "key" : "Telecommunication Services" ,
+    "values" : [ [ 1138683600000 , 3.7056975170243]]
+  } ,
+  {
+    "key" : "Utilities" ,
+    "values" : [ [ 1138683600000 , 0]]
+  }
+];
+
+
+// for testing two data point s
+var histcatexplong_twodatapoint = [
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , 27.38478809681], [ 1141102800000 , 29.4] ]
+  } ,
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 7.2800122043237], [ 1141102800000 , 6.7]]
+  } ,
+  {
+    "key" : "Energy" ,
+    "values" : [ [ 1138683600000 , 1.544303464167], [ 1141102800000 , 2.4]]
+  } ,
+  {
+    "key" : "Financials" ,
+    "values" : [ [ 1138683600000 , 13.356778764352], [ 1141102800000 , 19.2]]
+  } ,
+  {
+    "key" : "Health Care" ,
+    "values" : [ [ 1138683600000 , 14.212410956029], [ 1141102800000 , 15.4]]
+  } ,
+  {
+    "key" : "Industrials" ,
+    "values" : [ [ 1138683600000 , 7.1590087090398], [ 1141102800000 , 10.3]]
+  } ,
+  {
+    "key" : "Information Technology" ,
+    "values" : [ [ 1138683600000 , 13.242301508051], [ 1141102800000 , 14.3]]
+  } ,
+  {
+    "key" : "Materials" ,
+    "values" : [ [ 1138683600000 , 5.5806167415681], [ 1141102800000 , 3.2]]
+  } ,
+  {
+    "key" : "Telecommunication Services" ,
+    "values" : [ [ 1138683600000 , 3.7056975170243], [ 1141102800000 , 1.3]]
+  } ,
+  {
+    "key" : "Utilities" ,
+    "values" : [ [ 1138683600000 , 0], [ 1141102800000 , 2]]
+  }
+];
+
+var histcatexplong_withholes = [
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , 27.38478809681] , [ 1141102800000 , 27.371377218208] , [ 1143781200000 , 26.309915460827] , [ 1146369600000 , 26.425199957521] , [ 1149048000000 , 26.823411519395] , [ 1151640000000 , 23.850443591584] , [ 1154318400000 , 23.158355444054] , [ 1156996800000 , 22.998689393694] , [ 1159588800000 , 27.977128511299] , [ 1162270800000 , 29.073672469721] , [ 1164862800000 , 28.587640408904] , [ 1167541200000 , 22.788453687638] , [ 1170219600000 , 22.429199073597] , [ 1172638800000 , 22.324103271051] , [ 1175313600000 , 17.558388444186] , [ 1177905600000 , 16.769518096208] , [ 1180584000000 , 16.214738201302] , [ 1183176000000 , 18.729632971228] , [ 1185854400000 , 18.814523318848] , [ 1188532800000 , 19.789986451358] , [ 1191124800000 , 17.070049054933] , [ 1193803200000 , 16.121349575715] , [ 1196398800000 , 15.141659430091] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 19.231263773952] , [ 1209528000000 , 18.446256391094] , [ 1212206400000 , 17.822632399764] , [ 1214798400000 , 15.539366475979] , [ 1217476800000 , 15.255131790216] , [ 1220155200000 , 15.660963922593] , [ 1222747200000 , 13.254482273697] , [ 1225425600000 , 11.920796202299] , [ 1228021200000 , 12.122809090925] , [ 1230699600000 , 15.691026271393] , [ 1233378000000 , 14.720881635107] , [ 1235797200000 , 15.387939360044] , [ 1238472000000 , 13.765436672229] , [ 1241064000000 , 14.6314458648] , [ 1243742400000 , 14.292446536221] , [ 1246334400000 , 16.170071367016] , [ 1249012800000 , 15.948135554337] , [ 1251691200000 , 16.612872685134] , [ 1254283200000 , 18.778338719091] , [ 1256961600000 , 16.75602606542] , [ 1259557200000 , 19.385804443147] , [ 1262235600000 , 22.950590240168] , [ 1264914000000 , 23.61159018141] , [ 1267333200000 , 25.708586989581] , [ 1270008000000 , 26.883915999885] , [ 1272600000000 , 25.893486687065] , [ 1275278400000 , 24.678914263176] , [ 1277870400000 , 25.937275793023] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 29.057235285673] , [ 1288497600000 , 28.549434189386] , [ 1291093200000 , 28.506352379723] , [ 1293771600000 , 29.449241421597] , [ 1296450000000 , 25.796838168807] , [ 1298869200000 , 28.740145449189] , [ 1301544000000 , 22.091744141872] , [ 1304136000000 , 25.079662545409] , [ 1306814400000 , 23.674906973064] , [ 1309406400000 , 23.41800274293] , [ 1312084800000 , 23.243644138871] , [ 1314763200000 , 31.591854066817] , [ 1317355200000 , 31.497112374114] , [ 1320033600000 , 26.672380820431] , [ 1322629200000 , 27.297080015495] , [ 1325307600000 , 20.174315530051] , [ 1327986000000 , 19.631084213899] , [ 1330491600000 , 20.366462219462] , [ 1333166400000 , 17.429019937289] , [ 1335758400000 , 16.75543633539] , [ 1338436800000 , 16.182906906042]]
+  } ,
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 7.2800122043237] , [ 1141102800000 , 7.1187787503354] , [ 1143781200000 , 8.351887016482] , [ 1146369600000 , 8.4156698763993] , [ 1149048000000 , 8.1673298604231] , [ 1151640000000 , 5.5132447126042] , [ 1154318400000 , 6.1152537710599] , [ 1156996800000 , 6.076765091942] , [ 1159588800000 , 4.6304473798646] , [ 1162270800000 , 4.6301068469402] , [ 1164862800000 , 4.3466656309389] , [ 1167541200000 , 6.830104897003] , [ 1170219600000 , 7.241633040029] , [ 1172638800000 , 7.1432372054153] , [ 1175313600000 , 10.608942063374] , [ 1177905600000 , 10.914964549494] , [ 1180584000000 , 10.933223880565] , [ 1183176000000 , 8.3457524851265] , [ 1185854400000 , 8.1078413081882] , [ 1188532800000 , 8.2697185922474] , [ 1191124800000 , 8.4742436475968] , [ 1193803200000 , 8.4994601179319] , [ 1196398800000 , 8.7387319683243] , [ 1199077200000 , 6.8829183612895] , [ 1201755600000 , 6.984133637885] , [ 1204261200000 , 7.0860136043287] , [ 1206936000000 , 4.3961787956053] , [ 1209528000000 , 3.8699674365231] , [ 1212206400000 , 3.6928925238305] , [ 1214798400000 , 6.7571718894253] , [ 1217476800000 , 6.4367313362344] , [ 1220155200000 , 6.4048441521454] , [ 1222747200000 , 5.4643833239669] , [ 1225425600000 , 5.3150786833374] , [ 1228021200000 , 5.3011272612576] , [ 1230699600000 , 4.1203601430809] , [ 1233378000000 , 4.0881783200525] , [ 1235797200000 , 4.1928665957189] , [ 1238472000000 , 7.0249415663205] , [ 1241064000000 , 7.006530880769] , [ 1243742400000 , 6.994835633224] , [ 1246334400000 , 6.1220222336254] , [ 1249012800000 , 6.1177436137653] , [ 1251691200000 , 6.1413396231981] , [ 1254283200000 , 4.8046006145874] , [ 1256961600000 , 4.6647600660544] , [ 1259557200000 , 4.544865006255] , [ 1262235600000 , 6.0488249316539] , [ 1264914000000 , 6.3188669540206] , [ 1267333200000 , 6.5873958262306] , [ 1270008000000 , 6.2281189839578] , [ 1272600000000 , 5.8948915746059] , [ 1275278400000 , 5.5967320482214] , [ 1277870400000 , 0.99784432084837] , [ 1280548800000 , 1.0950794175359] , [ 1283227200000 , 0.94479734407491] , [ 1285819200000 , 1.222093988688] , [ 1288497600000 , 1.335093106856] , [ 1291093200000 , 1.3302565104985] , [ 1293771600000 , 1.340824670897] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 4.4583692315] , [ 1320033600000 , 3.6493043348059] , [ 1322629200000 , 3.8610064091761] , [ 1325307600000 , 5.5144800685202] , [ 1327986000000 , 5.1750695220792] , [ 1330491600000 , 5.6710066952691] , [ 1333166400000 , 8.5658461590953] , [ 1335758400000 , 8.6135447714243] , [ 1338436800000 , 8.0231460925212]]
+  }];
+
+var histcatexpshort = [
+  {
+    "key" : "Consumer Staples" ,
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , -0.24102139376003] , [ 1170219600000 , -0.69960584365035] , [ 1172638800000 , -0.67365051426185] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.31429312464988] , [ 1185854400000 , -0.90018700397153] , [ 1188532800000 , -0.96926214328714] , [ 1191124800000 , -1.1343386468131] , [ 1193803200000 , -1.1335426595455] , [ 1196398800000 , -1.2327663032424] , [ 1199077200000 , -0.41027135492155] , [ 1201755600000 , -0.41779167524802] , [ 1204261200000 , -0.38133883625885] , [ 1206936000000 , 0] , [ 1209528000000 , -0.32550520320253] , [ 1212206400000 , -0.33185144615505] , [ 1214798400000 , -0.68609668877894] , [ 1217476800000 , -0.70001207744308] , [ 1220155200000 , -0.68378680840919] , [ 1222747200000 , -0.40908783182034] , [ 1225425600000 , -0.39074266525646] , [ 1228021200000 , -0.40358490474562] , [ 1230699600000 , -0.85752207262267] , [ 1233378000000 , -0.74395750438805] , [ 1235797200000 , -0.70718832429489] , [ 1238472000000 , -0.76244465406965] , [ 1241064000000 , -0.67618572591984] , [ 1243742400000 , -0.67649596761402] , [ 1246334400000 , -0.94618002703247] , [ 1249012800000 , -0.95408485581014] , [ 1251691200000 , -0.96272139504276] , [ 1254283200000 , 0] , [ 1256961600000 , 0] , [ 1259557200000 , 0] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , -0.25516420149471] , [ 1272600000000 , -0.24106264576017] , [ 1275278400000 , -0.22802547751448] , [ 1277870400000 , -0.62187524046697] , [ 1280548800000 , -0.72155608677106] , [ 1283227200000 , -0.70221659944774] , [ 1285819200000 , -1.1117002584543] , [ 1288497600000 , -1.190911001336] , [ 1291093200000 , -1.1781082003972] , [ 1293771600000 , -1.2125860264875] , [ 1296450000000 , -1.7748010365657] , [ 1298869200000 , -1.8919594178596] , [ 1301544000000 , -1.7077946421533] , [ 1304136000000 , -2.024238803094] , [ 1306814400000 , -1.9769844081819] , [ 1309406400000 , -2.0730275464065] , [ 1312084800000 , -1.9690128240888] , [ 1314763200000 , -5.5557852269348] , [ 1317355200000 , -7.2527933190641] , [ 1320033600000 , -5.7367677053109] , [ 1322629200000 , -6.0409316206662] , [ 1325307600000 , -4.6511525539195] , [ 1327986000000 , -4.526116059083] , [ 1330491600000 , -4.846292325197] , [ 1333166400000 , -2.2663198779425] , [ 1335758400000 , -2.4172072568564] , [ 1338436800000 , -2.3204729601189]]
+  } ,
+  {
+    "key" : "Consumer Discretionary" ,
+    "values" : [ [ 1138683600000 , -0.62238434102863] , [ 1141102800000 , -0.61484565039024] , [ 1143781200000 , -1.0769367918668] , [ 1146369600000 , -1.2221156604129] , [ 1149048000000 , -1.2434858263377] , [ 1151640000000 , -0.58606435489597] , [ 1154318400000 , -0.61478911495141] , [ 1156996800000 , -0.61429362688591] , [ 1159588800000 , -1.1168614112788] , [ 1162270800000 , -1.1510268716612] , [ 1164862800000 , -1.1104724164222] , [ 1167541200000 , -1.2298338563471] , [ 1170219600000 , -1.5053664389104] , [ 1172638800000 , -1.5535266372193] , [ 1175313600000 , -3.1690472535854] , [ 1177905600000 , -3.1273013967041] , [ 1180584000000 , -3.155466271777] , [ 1183176000000 , -3.7158562579437] , [ 1185854400000 , -3.8244546635586] , [ 1188532800000 , -3.5524464859972] , [ 1191124800000 , -3.0472339109128] , [ 1193803200000 , -3.064978140815] , [ 1196398800000 , -3.0818130124986] , [ 1199077200000 , -2.9806791138312] , [ 1201755600000 , -3.7360958775824] , [ 1204261200000 , -3.4687841733263] , [ 1206936000000 , -3.3702018615806] , [ 1209528000000 , -3.1982756208679] , [ 1212206400000 , -3.0489433155104] , [ 1214798400000 , -3.7008275605963] , [ 1217476800000 , -3.8980507260892] , [ 1220155200000 , -3.7680083260241] , [ 1222747200000 , -3.2061890012391] , [ 1225425600000 , -2.6727551440484] , [ 1228021200000 , -2.4469327462935] , [ 1230699600000 , -3.0192419668784] , [ 1233378000000 , -2.892958553476] , [ 1235797200000 , -3.1153570053479] , [ 1238472000000 , -2.9927580570711] , [ 1241064000000 , -3.5061796706294] , [ 1243742400000 , -3.2944159516725] , [ 1246334400000 , -3.4154213240617] , [ 1249012800000 , -3.6492125438171] , [ 1251691200000 , -3.6674164998394] , [ 1254283200000 , -4.6271484977727] , [ 1256961600000 , -4.2433407292676] , [ 1259557200000 , -4.4742625247274] , [ 1262235600000 , -5.2078214612359] , [ 1264914000000 , -5.2209579214469] , [ 1267333200000 , -5.4596395756061] , [ 1270008000000 , -5.6906459276584] , [ 1272600000000 , -6.4981737808665] , [ 1275278400000 , -6.2563044048578] , [ 1277870400000 , -6.175479487959] , [ 1280548800000 , -6.6641002427295] , [ 1283227200000 , -6.3648667745556] , [ 1285819200000 , -5.0270168607884] , [ 1288497600000 , -5.1186072976233] , [ 1291093200000 , -5.1127601587872] , [ 1293771600000 , -5.3015262972641] , [ 1296450000000 , -4.4295728671596] , [ 1298869200000 , -4.5488139745696] , [ 1301544000000 , -2.9021260315957] , [ 1304136000000 , -3.1482096241139] , [ 1306814400000 , -2.8648831814763] , [ 1309406400000 , -2.8149423433441] , [ 1312084800000 , -2.6350669145713] , [ 1314763200000 , -5.9871754759038] , [ 1317355200000 , -8.6127555816399] , [ 1320033600000 , -7.0712887348892] , [ 1322629200000 , -7.3930257999857] , [ 1325307600000 , -6.5183071556304] , [ 1327986000000 , -7.4388913793503] , [ 1330491600000 , -8.2134465182649] , [ 1333166400000 , -7.7836036697105] , [ 1335758400000 , -8.0955053683936] , [ 1338436800000 , -8.0981845818893]]
+  } ,
+  {
+    "key" : "Energy" ,
+    "values" : [ [ 1138683600000 , -0.95707527558303] , [ 1141102800000 , -0.78324346694487] , [ 1143781200000 , -1.2905241058019] , [ 1146369600000 , -1.3880880486779] , [ 1149048000000 , -1.3337247185993] , [ 1151640000000 , -1.0342112071924] , [ 1154318400000 , -1.1264764100183] , [ 1156996800000 , -1.0001002640852] , [ 1159588800000 , -0.85341153093953] , [ 1162270800000 , -0.88452017844596] , [ 1164862800000 , -0.84305725300642] , [ 1167541200000 , -1.0874455682301] , [ 1170219600000 , -1.1714969043168] , [ 1172638800000 , -1.1445856467934] , [ 1175313600000 , -1.1928513334073] , [ 1177905600000 , -1.2365691634265] , [ 1180584000000 , -1.2690940962478] , [ 1183176000000 , -1.662233774695] , [ 1185854400000 , -1.745760538781] , [ 1188532800000 , -1.5209200931271] , [ 1191124800000 , -1.7874791820886] , [ 1193803200000 , -1.7755668105117] , [ 1196398800000 , -1.5456069064618] , [ 1199077200000 , -1.7077541586335] , [ 1201755600000 , -1.6462081650757] , [ 1204261200000 , -1.8624735339628] , [ 1206936000000 , -0.71073453533048] , [ 1209528000000 , -0.75380709640219] , [ 1212206400000 , -0.71020554911716] , [ 1214798400000 , -1.2077850914504] , [ 1217476800000 , -1.0505576787644] , [ 1220155200000 , -0.97804595164878] , [ 1222747200000 , -0.34591294663671] , [ 1225425600000 , -0.19958331514025] , [ 1228021200000 , -0.17599782216296] , [ 1230699600000 , -0.49577714121027] , [ 1233378000000 , -0.51644059173978] , [ 1235797200000 , -0.48576859637083] , [ 1238472000000 , -0.75596531126452] , [ 1241064000000 , -0.72073358315801] , [ 1243742400000 , -0.82125996732294] , [ 1246334400000 , -1.4933216860121] , [ 1249012800000 , -1.5003760525933] , [ 1251691200000 , -1.4744921420596] , [ 1254283200000 , -1.8197844060652] , [ 1256961600000 , -1.6558574419626] , [ 1259557200000 , -1.7256149254159] , [ 1262235600000 , -2.7667194124217] , [ 1264914000000 , -2.9113351806903] , [ 1267333200000 , -3.0172806042796] , [ 1270008000000 , -2.8607175559701] , [ 1272600000000 , -2.629226972169] , [ 1275278400000 , -2.1855196883832] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -1.3788733828844] , [ 1288497600000 , -1.4136792139765] , [ 1291093200000 , -1.5176522942901] , [ 1293771600000 , -1.5776651933208] , [ 1296450000000 , -1.7171675182182] , [ 1298869200000 , -1.8121885250566] , [ 1301544000000 , -1.2221934283206] , [ 1304136000000 , -1.2910715239439] , [ 1306814400000 , -1.1492301612576] , [ 1309406400000 , -1.0613891302841] , [ 1312084800000 , -0.99605193205308] , [ 1314763200000 , -1.7324212072278] , [ 1317355200000 , -1.5226856867477] , [ 1320033600000 , -1.3159138896549] , [ 1322629200000 , -1.3925952659299] , [ 1325307600000 , -1.59624913621] , [ 1327986000000 , -1.5235879880296] , [ 1330491600000 , -1.7315573519279] , [ 1333166400000 , -0.86883431220926] , [ 1335758400000 , -0.90144871282829] , [ 1338436800000 , -0.7010492182517]]
+  } ,
+  {
+    "key" : "Financials" ,
+    "values" : [ [ 1138683600000 , -0.56797103580254] , [ 1141102800000 , -0.57324319174933] , [ 1143781200000 , -1.1014818753272] , [ 1146369600000 , -1.1480256918118] , [ 1149048000000 , -1.0709335336775] , [ 1151640000000 , -0.84876993929658] , [ 1154318400000 , -0.88122638919979] , [ 1156996800000 , -0.86421146074279] , [ 1159588800000 , -0.95093689377974] , [ 1162270800000 , -0.96646862382248] , [ 1164862800000 , -0.96726919442167] , [ 1167541200000 , -0.99874655234936] , [ 1170219600000 , -1.0004843898938] , [ 1172638800000 , -0.9925349676815] , [ 1175313600000 , -1.1888941931287] , [ 1177905600000 , -1.9402228220929] , [ 1180584000000 , -2.03915987194] , [ 1183176000000 , -2.4620526931074] , [ 1185854400000 , -2.2423544651877] , [ 1188532800000 , -1.8790998536037] , [ 1191124800000 , -0.43246873489492] , [ 1193803200000 , -0.40142684216371] , [ 1196398800000 , -0.35646635110466] , [ 1199077200000 , -0.90385702817642] , [ 1201755600000 , -0.86997575249605] , [ 1204261200000 , -0.80101406775415] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.31816167663298] , [ 1217476800000 , -0.309250081849] , [ 1220155200000 , -0.27723698582762] , [ 1222747200000 , -0.32001379372079] , [ 1225425600000 , -0.1940212908561] , [ 1228021200000 , -0.051964569203423] , [ 1230699600000 , -0.68342686502452] , [ 1233378000000 , -0.57645644730726] , [ 1235797200000 , -0.50860972184555] , [ 1238472000000 , -0.44405217759605] , [ 1241064000000 , -0.45224333626901] , [ 1243742400000 , -0.41691818252313] , [ 1246334400000 , -2.4654561579904] , [ 1249012800000 , -2.5473566378551] , [ 1251691200000 , -2.8340604021307] , [ 1254283200000 , -1.8452445924041] , [ 1256961600000 , -1.5626544265386] , [ 1259557200000 , -1.707842764916] , [ 1262235600000 , -1.2237258567344] , [ 1264914000000 , -1.9756896168227] , [ 1267333200000 , -2.0920321696833] , [ 1270008000000 , -1.9782327706952] , [ 1272600000000 , -2.0416328165753] , [ 1275278400000 , -1.7816736134798] , [ 1277870400000 , -0.66092275437689] , [ 1280548800000 , -0.73608099025756] , [ 1283227200000 , -0.63686713461189] , [ 1285819200000 , -0.0024159482973197] , [ 1288497600000 , -0.0023052643588188] , [ 1291093200000 , -0.0023008251965446] , [ 1293771600000 , -0.002247807834351] , [ 1296450000000 , -0.62004345920743] , [ 1298869200000 , -0.69634926653235] , [ 1301544000000 , -0.76013525555354] , [ 1304136000000 , -1.505368495849] , [ 1306814400000 , -1.3456949237707] , [ 1309406400000 , -1.3013934898695] , [ 1312084800000 , -1.183199519395] , [ 1314763200000 , -0.0074317809719494] , [ 1317355200000 , -0.019430458325379] , [ 1320033600000 , -0.015777413509084] , [ 1322629200000 , -0.016463879837718] , [ 1325307600000 , -0.0031338919976225] , [ 1327986000000 , -0.0029770278967514] , [ 1330491600000 , -0.003048902987439] , [ 1333166400000 , -0.71171545945298] , [ 1335758400000 , -0.72003299240508] , [ 1338436800000 , -0.72961974845039]]
+  } ,
+  {
+    "key" : "Health Care" ,
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , 0] , [ 1146369600000 , 0] , [ 1149048000000 , 0] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16816074963595] , [ 1185854400000 , -0.19318598121302] , [ 1188532800000 , -0.20130864403797] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , 0] , [ 1209528000000 , 0] , [ 1212206400000 , 0] , [ 1214798400000 , -0.30476443991021] , [ 1217476800000 , -0.31836730824777] , [ 1220155200000 , -0.30797427879366] , [ 1222747200000 , -0.48318623977865] , [ 1225425600000 , -0.50834562674351] , [ 1228021200000 , -0.47936068182503] , [ 1230699600000 , -0.61753010081956] , [ 1233378000000 , -0.59493587396819] , [ 1235797200000 , -0.62664324339064] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -1.3076157801726] , [ 1256961600000 , -1.2306204787628] , [ 1259557200000 , -1.4728435992801] , [ 1262235600000 , -1.7729831226837] , [ 1264914000000 , -1.7711733839842] , [ 1267333200000 , -1.8233584472099] , [ 1270008000000 , -1.8505979461969] , [ 1272600000000 , -1.5989071613823] , [ 1275278400000 , -1.6636770720413] , [ 1277870400000 , -1.4523909758725] , [ 1280548800000 , -1.503771584105] , [ 1283227200000 , -1.5458561450475] , [ 1285819200000 , -1.457331837483] , [ 1288497600000 , -1.4217332434071] , [ 1291093200000 , -1.4687927303394] , [ 1293771600000 , -1.437223057967] , [ 1296450000000 , -0.72221871524334] , [ 1298869200000 , -0.7399575414588] , [ 1301544000000 , -1.9712239746745] , [ 1304136000000 , -2.2360949351942] , [ 1306814400000 , -2.2147572530541] , [ 1309406400000 , -2.0440932285023] , [ 1312084800000 , -1.9438209561938] , [ 1314763200000 , -4.9035620630386] , [ 1317355200000 , -4.9036674804213] , [ 1320033600000 , -4.1900706458801] , [ 1322629200000 , -4.5602615827955] , [ 1325307600000 , -1.9194421885814] , [ 1327986000000 , -1.8854470816382] , [ 1330491600000 , -1.9514785018245] , [ 1333166400000 , -0.65282205870454] , [ 1335758400000 , -0.57068368199209] , [ 1338436800000 , -0.55902563384907]]
+  } ,
+  {
+    "key" : "Industrials" ,
+    "values" : [ [ 1138683600000 , -0.390983707093] , [ 1141102800000 , -0.38471122730537] , [ 1143781200000 , -0.22897173467143] , [ 1146369600000 , -0.23798946472286] , [ 1149048000000 , -0.20721233428173] , [ 1151640000000 , -0.54577697700394] , [ 1154318400000 , -0.50300252995937] , [ 1156996800000 , -0.49609518628103] , [ 1159588800000 , -0.19582276889273] , [ 1162270800000 , -0.60399139945108] , [ 1164862800000 , -0.61477368082886] , [ 1167541200000 , -0.13665869881705] , [ 1170219600000 , -0.13147565243332] , [ 1172638800000 , -0.11819441593356] , [ 1175313600000 , -0.41610825689528] , [ 1177905600000 , -0.38815419659358] , [ 1180584000000 , -0.3703838943035] , [ 1183176000000 , -1.6193903804534] , [ 1185854400000 , -1.6502660417328] , [ 1188532800000 , -1.481875010149] , [ 1191124800000 , -0.96180099322536] , [ 1193803200000 , -0.97017301394967] , [ 1196398800000 , -0.97432971260093] , [ 1199077200000 , -0.36071934518387] , [ 1201755600000 , -0.42150070991777] , [ 1204261200000 , -0.41784042793202] , [ 1206936000000 , -0.70494708349169] , [ 1209528000000 , -0.73449590911984] , [ 1212206400000 , -0.7400163600788] , [ 1214798400000 , -0.52584502195668] , [ 1217476800000 , -0.56224806965368] , [ 1220155200000 , -0.50830855192741] , [ 1222747200000 , -0.79494637898049] , [ 1225425600000 , -0.70391433947286] , [ 1228021200000 , -0.61420660317009] , [ 1230699600000 , -0.41699636242004] , [ 1233378000000 , -0.3779041158185] , [ 1235797200000 , -0.34282498854047] , [ 1238472000000 , -0.83845630450592] , [ 1241064000000 , -0.85937944918912] , [ 1243742400000 , -0.85530287999615] , [ 1246334400000 , -1.2819866264007] , [ 1249012800000 , -1.4598491663715] , [ 1251691200000 , -1.5261472177779] , [ 1254283200000 , -1.2503948993549] , [ 1256961600000 , -1.1767079775724] , [ 1259557200000 , -1.2585538260386] , [ 1262235600000 , -3.420972598165] , [ 1264914000000 , -3.3381337072954] , [ 1267333200000 , -3.7043129330694] , [ 1270008000000 , -4.6924500756609] , [ 1272600000000 , -4.6880683704908] , [ 1275278400000 , -4.3335249071719] , [ 1277870400000 , -3.6545810416445] , [ 1280548800000 , -4.1639787701262] , [ 1283227200000 , -3.8249597612047] , [ 1285819200000 , -0.33221815335641] , [ 1288497600000 , -0.33346468179047] , [ 1291093200000 , -0.34546911228789] , [ 1293771600000 , -0.36609971997147] , [ 1296450000000 , -0.42502545672607] , [ 1298869200000 , -0.38192733348507] , [ 1301544000000 , -0.01991033447621] , [ 1304136000000 , -0.020319195299659] , [ 1306814400000 , -0.018147820835144] , [ 1309406400000 , -0.017923186209383] , [ 1312084800000 , -0.016133999253684] , [ 1314763200000 , -0.72058656278977] , [ 1317355200000 , -0.42812646564889] , [ 1320033600000 , -0.35896134792589] , [ 1322629200000 , -0.38637896444549] , [ 1325307600000 , -0.31794663984021] , [ 1327986000000 , -0.32220831831888] , [ 1330491600000 , -0.37107872672214] , [ 1333166400000 , -0.81968633933695] , [ 1335758400000 , -0.77148300885994] , [ 1338436800000 , -0.77392261735539]]
+  } ,
+  {
+    "key" : "Information Technology" ,
+    "values" : [ [ 1138683600000 , -0.86346955704548] , [ 1141102800000 , -0.88352373534584] , [ 1143781200000 , -1.2630802711685] , [ 1146369600000 , -1.2352593999242] , [ 1149048000000 , -1.2086379045093] , [ 1151640000000 , -1.0416778473647] , [ 1154318400000 , -0.99326278105154] , [ 1156996800000 , -1.0095045907007] , [ 1159588800000 , -2.0762515478576] , [ 1162270800000 , -2.13066829429] , [ 1164862800000 , -2.2458400474235] , [ 1167541200000 , -2.1315262677135] , [ 1170219600000 , -2.4063108252146] , [ 1172638800000 , -2.3753290631454] , [ 1175313600000 , -2.1119577565913] , [ 1177905600000 , -2.1546804750397] , [ 1180584000000 , -2.3768374034303] , [ 1183176000000 , -1.244878330098] , [ 1185854400000 , -1.2233210265236] , [ 1188532800000 , -1.1715073644317] , [ 1191124800000 , -1.0036136395928] , [ 1193803200000 , -0.9510676777939] , [ 1196398800000 , -0.97553526602196] , [ 1199077200000 , -1.9083849411912] , [ 1201755600000 , -1.855965027796] , [ 1204261200000 , -1.7343633512402] , [ 1206936000000 , -2.1847032903649] , [ 1209528000000 , -2.2095446284368] , [ 1212206400000 , -2.2060678671735] , [ 1214798400000 , -1.0941627910924] , [ 1217476800000 , -1.0004352405294] , [ 1220155200000 , -0.93563501378075] , [ 1222747200000 , 0] , [ 1225425600000 , -0.65155092645953] , [ 1228021200000 , -0.66021585164047] , [ 1230699600000 , 0] , [ 1233378000000 , 0] , [ 1235797200000 , 0] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , 0] , [ 1249012800000 , 0] , [ 1251691200000 , 0] , [ 1254283200000 , -0.29297573068109] , [ 1256961600000 , -0.75043756379084] , [ 1259557200000 , -0.85690846482745] , [ 1262235600000 , -0.21937480770873] , [ 1264914000000 , -0.93232569935343] , [ 1267333200000 , -0.94180327525084] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , -0.21253553193891] , [ 1288497600000 , -0.23178244747722] , [ 1291093200000 , -0.21481706129968] , [ 1293771600000 , -0.23306463011242] , [ 1296450000000 , -0.90244048159158] , [ 1298869200000 , -1.0410052083529] , [ 1301544000000 , -2.209350937089] , [ 1304136000000 , -2.6540796712932] , [ 1306814400000 , -3.2481210590957] , [ 1309406400000 , -3.0717986354635] , [ 1312084800000 , -2.7493296528921] , [ 1314763200000 , -2.1973991293256] , [ 1317355200000 , -0.86403111842659] , [ 1320033600000 , -0.87824756160219] , [ 1322629200000 , -0.80812571482871] , [ 1325307600000 , -1.6419820357151] , [ 1327986000000 , -1.6893790342619] , [ 1330491600000 , -1.8614499455474] , [ 1333166400000 , -1.814727017516] , [ 1335758400000 , -1.8744942128618] , [ 1338436800000 , -1.7880124850882]]
+  } ,
+  {
+    "key" : "Materials" ,
+    "values" : [ [ 1138683600000 , -0.26079769654951] , [ 1141102800000 , -0.23368425410881] , [ 1143781200000 , -0.46285283466193] , [ 1146369600000 , -0.4588429059205] , [ 1149048000000 , -0.43055120080853] , [ 1151640000000 , -0.26428963363642] , [ 1154318400000 , -0.26203611963364] , [ 1156996800000 , -0.26706156717825] , [ 1159588800000 , -0.024613610779192] , [ 1162270800000 , -0.024351047945929] , [ 1164862800000 , -0.031497065480344] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , 0] , [ 1185854400000 , 0] , [ 1188532800000 , 0] , [ 1191124800000 , 0] , [ 1193803200000 , 0] , [ 1196398800000 , 0] , [ 1199077200000 , 0] , [ 1201755600000 , 0] , [ 1204261200000 , 0] , [ 1206936000000 , -0.83875613435932] , [ 1209528000000 , -0.84367445572656] , [ 1212206400000 , -0.78928126005463] , [ 1214798400000 , -1.1075954825404] , [ 1217476800000 , -1.2704836497926] , [ 1220155200000 , -1.307504052056] , [ 1222747200000 , -0.70440409992826] , [ 1225425600000 , -0.74122140007729] , [ 1228021200000 , -0.82224393045109] , [ 1230699600000 , -1.8719055314571] , [ 1233378000000 , -1.5200311233975] , [ 1235797200000 , -1.5552386899059] , [ 1238472000000 , -1.1576593040773] , [ 1241064000000 , -1.0757811060575] , [ 1243742400000 , -1.0250125722511] , [ 1246334400000 , -2.2747597224127] , [ 1249012800000 , -2.3125499227974] , [ 1251691200000 , -2.2784386530745] , [ 1254283200000 , -1.1518806233757] , [ 1256961600000 , -1.0075503399018] , [ 1259557200000 , -1.1400577929481] , [ 1262235600000 , -0.50677891891165] , [ 1264914000000 , -0.54332908490051] , [ 1267333200000 , -0.55473181189807] , [ 1270008000000 , -0.3633796157757] , [ 1272600000000 , -0.30361861470847] , [ 1275278400000 , -0.24614951229153] , [ 1277870400000 , -1.0959443687647] , [ 1280548800000 , -1.1881529264637] , [ 1283227200000 , -1.1835349242596] , [ 1285819200000 , -0.92507477884561] , [ 1288497600000 , -0.94531016133473] , [ 1291093200000 , -0.93519433603434] , [ 1293771600000 , -1.009221344252] , [ 1296450000000 , -2.3640716285835] , [ 1298869200000 , -2.4914494188556] , [ 1301544000000 , -1.7979456141716] , [ 1304136000000 , -2.1389760840247] , [ 1306814400000 , -1.9721362241269] , [ 1309406400000 , -1.9170229522382] , [ 1312084800000 , -1.8076246545605] , [ 1314763200000 , -2.1010686108381] , [ 1317355200000 , -2.2396373791195] , [ 1320033600000 , -1.8469012813015] , [ 1322629200000 , -2.0079125997321] , [ 1325307600000 , -1.9170007806182] , [ 1327986000000 , -1.9239118384243] , [ 1330491600000 , -2.0649464738798] , [ 1333166400000 , -0.88385747789351] , [ 1335758400000 , -0.91438087144161] , [ 1338436800000 , -0.96513752020965]]
+  } ,
+  {
+    "key" : "Telecommunication Services" ,
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.077395192503573] , [ 1146369600000 , -0.079342784160835] , [ 1149048000000 , -0.07376956808809] , [ 1151640000000 , -0.041850521681201] , [ 1154318400000 , -0.037598545052499] , [ 1156996800000 , -0.040984079427717] , [ 1159588800000 , -0.19335817797448] , [ 1162270800000 , -0.18578493919925] , [ 1164862800000 , -0.1769473933101] , [ 1167541200000 , -0.57245352054975] , [ 1170219600000 , -0.61554187332911] , [ 1172638800000 , -0.63016714701151] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.12118014109021] , [ 1185854400000 , -0.11085831487208] , [ 1188532800000 , -0.10901265358445] , [ 1191124800000 , -0.17205583275088] , [ 1193803200000 , -0.16573676303991] , [ 1196398800000 , -0.17954841680392] , [ 1199077200000 , -0.82703336198161] , [ 1201755600000 , -0.76741763304227] , [ 1204261200000 , -0.79430844816827] , [ 1206936000000 , -1.0279404050708] , [ 1209528000000 , -1.0342425093761] , [ 1212206400000 , -1.0903083860383] , [ 1214798400000 , -1.0895432841007] , [ 1217476800000 , -1.1392703218146] , [ 1220155200000 , -0.98872086340391] , [ 1222747200000 , -1.227654651568] , [ 1225425600000 , -1.0527419580394] , [ 1228021200000 , -0.84338280322309] , [ 1230699600000 , -0.5982617279246] , [ 1233378000000 , -0.74123723862634] , [ 1235797200000 , -0.81665712408277] , [ 1238472000000 , -0.89868760705228] , [ 1241064000000 , -0.86338472153689] , [ 1243742400000 , -0.85040889603889] , [ 1246334400000 , -0.82872733882926] , [ 1249012800000 , -1.2797824676355] , [ 1251691200000 , -1.152043882336] , [ 1254283200000 , -0.70125890680538] , [ 1256961600000 , -0.69496338525418] , [ 1259557200000 , -0.81982038022784] , [ 1262235600000 , -0.42841700219624] , [ 1264914000000 , -0.43298861575253] , [ 1267333200000 , -0.46951194437705] , [ 1270008000000 , -0.46723980191721] , [ 1272600000000 , -0.43139262322841] , [ 1275278400000 , -0.4052075794202] , [ 1277870400000 , -0.45399431179247] , [ 1280548800000 , -0.50492374473014] , [ 1283227200000 , -0.49032976375464] , [ 1285819200000 , -0.95769381063728] , [ 1288497600000 , -0.92968381683254] , [ 1291093200000 , -0.90984207437415] , [ 1293771600000 , -0.91448295661871] , [ 1296450000000 , -1.3204103334172] , [ 1298869200000 , -1.3896989018] , [ 1301544000000 , -1.8536993972883] , [ 1304136000000 , -1.9901582471947] , [ 1306814400000 , -1.8731097808809] , [ 1309406400000 , -1.8109819859122] , [ 1312084800000 , -1.7946593386661] , [ 1314763200000 , -1.6002716669781] , [ 1317355200000 , -0.056479286204019] , [ 1320033600000 , -0.046232413998891] , [ 1322629200000 , -0.051182355563531] , [ 1325307600000 , -0.032858749040145] , [ 1327986000000 , -0.032326418106178] , [ 1330491600000 , -0.033980477379241] , [ 1333166400000 , -0.053069550536519] , [ 1335758400000 , -0.055741850564434] , [ 1338436800000 , -0.055851808568252]]
+  } ,
+  {
+    "key" : "Utilities" ,
+    "values" : [ [ 1138683600000 , 0] , [ 1141102800000 , 0] , [ 1143781200000 , -0.073769471773675] , [ 1146369600000 , -0.077824496315782] , [ 1149048000000 , -0.080696288096361] , [ 1151640000000 , 0] , [ 1154318400000 , 0] , [ 1156996800000 , 0] , [ 1159588800000 , 0] , [ 1162270800000 , 0] , [ 1164862800000 , 0] , [ 1167541200000 , 0] , [ 1170219600000 , 0] , [ 1172638800000 , 0] , [ 1175313600000 , 0] , [ 1177905600000 , 0] , [ 1180584000000 , 0] , [ 1183176000000 , -0.16073291656515] , [ 1185854400000 , -0.1646253606633] , [ 1188532800000 , -0.1655815581449] , [ 1191124800000 , -0.74417496631713] , [ 1193803200000 , -0.76230340423681] , [ 1196398800000 , -0.73882938190048] , [ 1199077200000 , -0.3820573391806] , [ 1201755600000 , -0.360757285179] , [ 1204261200000 , -0.38081058463615] , [ 1206936000000 , -0.92767439811083] , [ 1209528000000 , -0.92774728028789] , [ 1212206400000 , -0.85273481694714] , [ 1214798400000 , -1.69407085613] , [ 1217476800000 , -1.5179726219101] , [ 1220155200000 , -1.3576700600738] , [ 1222747200000 , -1.0404839864076] , [ 1225425600000 , -0.95251478838915] , [ 1228021200000 , -1.0610509118017] , [ 1230699600000 , -0.3316792294278] , [ 1233378000000 , -0.33745002288524] , [ 1235797200000 , -0.28806366796683] , [ 1238472000000 , 0] , [ 1241064000000 , 0] , [ 1243742400000 , 0] , [ 1246334400000 , -0.6338555382785] , [ 1249012800000 , -0.62797265130959] , [ 1251691200000 , -0.60264057253794] , [ 1254283200000 , -0.28687231077181] , [ 1256961600000 , -0.22215649778327] , [ 1259557200000 , -0.24027664555676] , [ 1262235600000 , 0] , [ 1264914000000 , 0] , [ 1267333200000 , 0] , [ 1270008000000 , 0] , [ 1272600000000 , 0] , [ 1275278400000 , 0] , [ 1277870400000 , 0] , [ 1280548800000 , 0] , [ 1283227200000 , 0] , [ 1285819200000 , 0] , [ 1288497600000 , 0] , [ 1291093200000 , 0] , [ 1293771600000 , 0] , [ 1296450000000 , 0] , [ 1298869200000 , 0] , [ 1301544000000 , 0] , [ 1304136000000 , 0] , [ 1306814400000 , 0] , [ 1309406400000 , 0] , [ 1312084800000 , 0] , [ 1314763200000 , 0] , [ 1317355200000 , 0] , [ 1320033600000 , 0] , [ 1322629200000 , 0] , [ 1325307600000 , 0] , [ 1327986000000 , 0] , [ 1330491600000 , 0] , [ 1333166400000 , 0] , [ 1335758400000 , 0] , [ 1338436800000 , 0]]
+  }
+];
+
+function totalRandom() {
+  var rval = [];
+  for(var n=1; n <= 2; n++) {
+      var series = [];
+      for(var i =0; i < 50; i++) {
+          series.push([
+              Math.floor(Math.random() * 100),
+              Math.random() * 6
+            ]);
+      }
+      rval.push({key: "Random " + n, values: series});
+  }
+  return rval;
+}
+
+function nPoints() {
+  var rval = [
+    {key: "Series 1",
+    values: [
+        [1,2],
+        [2,4],
+        [3,8]
+    ]}
+  ];
+  return rval;
+
+}
+
+//an example of harmonizing colors between visualizations
+//observe that Consumer Discretionary and Consumer Staples have
+//been flipped in the second chart
+var colors = d3.scale.category20();
+var keyColor = function(d, i) {return colors(d.key)};
+
+function defaultChartConfig(container, data, useGuideline) {
+  if (useGuideline === undefined) useGuideline = true;
+  nv.addGraph(function() {
+    var chart;
+    chart = nv.models.stackedAreaChart()
+                  .useInteractiveGuideline(useGuideline)
+                  .x(function(d) { return d[0] })
+                  .y(function(d) { return d[1] })
+                  .color(keyColor)
+                    ;
+
+    chart.xAxis
+        .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+    chart.yAxis
+        .tickFormat(d3.format(',.2f'));
+
+    d3.select('#' + container + ' svg')
+          .datum(data)
+        .transition().duration(500).call(chart);
+
+    nv.utils.windowResize(chart.update);
+
+    return chart;
+  });
+}
+
+//Chart with old tooltip format.
+nv.addGraph(function() {
+  var chart = nv.models.stackedAreaChart()
+                .x(function(d) { return d[0] })
+                .y(function(d) { return d[1] })
+                .showControls(false)
+                .color(keyColor)
+                .margin({right:90})
+                .rightAlignYAxis(true)
+                ;
+
+  chart.xAxis
+      .tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
+
+  chart.yAxis
+      .tickFormat(d3.format(',.2f'));
+
+  d3.select('#chart2 svg')
+    .datum(histcatexpshort)
+      .call(chart);
+
+
+
+  nv.utils.windowResize(chart.update);
+
+  return chart;
+});
+
+defaultChartConfig("chart1", histcatexplong);
+defaultChartConfig("chart3", histcatexplong_singledatapoint);
+defaultChartConfig("chart4", histcatexplong_twodatapoint);
+defaultChartConfig("chart5", histcatexplong_withholes);
+defaultChartConfig("chart6", totalRandom(), false);
+defaultChartConfig("chart7", nPoints(),false);
+defaultChartConfig("chart8", []);
+defaultChartConfig("chart9", histcatexpshort,true);
+</script>
diff --git a/test/testScript.js b/test/testScript.js
new file mode 100644
index 0000000..2e7dc16
--- /dev/null
+++ b/test/testScript.js
@@ -0,0 +1,20 @@
+//A little snippet of D3 code that creates a button that lets you toggle whether a chart is the only one visible on a page or not.
+d3.selectAll(".chart button").on("click",function() {
+   var thisId = this.parentElement.id;
+
+   var chartContainer = d3.select("#" + thisId);
+   if (chartContainer.attr("class").match("selected"))
+      chartContainer.classed("selected",false);
+   else
+      chartContainer.classed("selected",true);
+
+   d3.selectAll(".chart").style("display",function() {
+        if (thisId === this.id) return "block";
+
+        if (d3.select(this).style("display") === "none")
+          return "block";
+        else
+          return "none";
+   });
+   window.onresize();
+});
\ No newline at end of file
diff --git a/test/teststyle.css b/test/teststyle.css
new file mode 100644
index 0000000..db5bdd0
--- /dev/null
+++ b/test/teststyle.css
@@ -0,0 +1,39 @@
+body {
+  overflow-y:scroll;
+  font-family: arial;
+}
+
+text {
+  font: 12px sans-serif;
+}
+
+.chart {
+  float:left;
+  height: 500px;
+  text-align: center;
+  font-weight: bold;
+  margin-bottom: 2em;
+}
+.chart.full {
+  width: 100%;
+}
+
+.chart.half {
+  width: 50%;
+}
+
+.chart.third {
+  width: 33%;
+}
+
+.chart.selected {
+  width: 100% !important;
+}
+
+.navigation a{
+  margin-right: 1em;
+}
+
+.navigation {
+  margin-bottom: 1em;
+}
